C语言编程入门必做题-2~16进制转换
2006-09-08 12:42
736 查看
将输入的10进制数转换成2~16进制数
补充说明一句,这是最傻帽的算法了,就是一个个加上去而已……
希望抛砖引玉了,清高是不吝指点,谢谢!!
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
/**//*
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
转载请保留此信息
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
作者:shaoshaoh
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Blog:http://blog.csdn.net/shaoshaoh
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
*/
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#include <stdio.h>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#include <stdlib.h>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#include <math.h>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
long get_int_num(char * del);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
int main(int argc, char *argv[])
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
long base, num, index;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
char *nbase;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
int bit;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
base =get_int_num("please insert base:");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if (base > 16 || base < 2)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf("Error!");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
return 0;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
num = get_int_num("please insert a decimal num:");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
/*+2是因为这个取整办法是四舍五入的,比如
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
* log(10)/log(2)结果是3.xx取整后结果是3
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
* 而10的二进制数是4位的,还有一个字符串
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
* 结尾符,所以…*/
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bit = (int)(log(num)/log(base)) + 2;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase = (char * )malloc(sizeof(char)*bit);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for ( index = 0; index < bit; index++)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase[index]='0';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase[bit-1] = 0; /*字符串结束符*/
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
while(num > 0)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
index = bit-2;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase[index]++;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if (nbase[index] >'9') nbase[index]='A';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
num--;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
while(nbase[index]-'0'==base)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase[index]='0';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
index--;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase[index]++;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf("The answer is : %s ",nbase);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
free(nbase);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
long get_int_num(char * del)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
long n;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf(del);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf(" ");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
scanf("%d", &n);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
return n;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
补充说明一句,这是最傻帽的算法了,就是一个个加上去而已……
希望抛砖引玉了,清高是不吝指点,谢谢!!
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
/**//*
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
转载请保留此信息
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
作者:shaoshaoh
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Blog:http://blog.csdn.net/shaoshaoh
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
*/
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#include <stdio.h>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#include <stdlib.h>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#include <math.h>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
long get_int_num(char * del);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
int main(int argc, char *argv[])
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
long base, num, index;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
char *nbase;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
int bit;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
base =get_int_num("please insert base:");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if (base > 16 || base < 2)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf("Error!");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
return 0;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
num = get_int_num("please insert a decimal num:");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
/*+2是因为这个取整办法是四舍五入的,比如
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
* log(10)/log(2)结果是3.xx取整后结果是3
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
* 而10的二进制数是4位的,还有一个字符串
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
* 结尾符,所以…*/
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
bit = (int)(log(num)/log(base)) + 2;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase = (char * )malloc(sizeof(char)*bit);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
for ( index = 0; index < bit; index++)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase[index]='0';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase[bit-1] = 0; /*字符串结束符*/
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
while(num > 0)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
index = bit-2;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase[index]++;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
if (nbase[index] >'9') nbase[index]='A';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
num--;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
while(nbase[index]-'0'==base)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase[index]='0';
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
index--;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
nbase[index]++;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf("The answer is : %s ",nbase);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
free(nbase);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
long get_int_num(char * del)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
long n;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf(del);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
printf(" ");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
scanf("%d", &n);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
return n;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
相关文章推荐
- linux操作系统下c语言编程入门
- linux操作系统下c语言编程入门
- linux操作系统下c语言编程入门--时间概念
- Linux操作系统下C语言编程入门.pdf
- Go语言编程开发入门简介
- Lua脚本编程:Lua语言入门
- linux操作系统下c语言编程入门(http://blog.csdn.net/CLX1314/archive/2006/03.aspx)
- linux操作系统下c语言编程入门 -- (一)目录介绍
- linux操作系统下c语言编程入门 -- (2)进程介绍
- linux操作系统下c语言编程入门 -- (9)inux下C开发工具介绍
- 新手学习,web编程入门(二)——语言学习入门之道
- linux操作系统下c语言编程入门
- linux操作系统下c语言编程入门
- Windows下C语言网络编程快速入门
- VML编程之------VML语言入门《VML极道教程》原著:沐缘华
- linux操作系统下c语言编程入门
- 编程入门必做题
- linux操作系统下c语言编程入门--信号处理
- 初学者编程入门:C语言指针使用方法
- linux操作系统下c语言编程入门