给你参考下吧,有可能有BUG,你测试下看看。
#include <stdio.h>
int bin_dec()
//二进制转十进制
{
int i,num=0;
char str[100];
printf("请输入要转换的二进制数:");
scanf("%s",str);
// 读入的字符串,其实这里就是你想转化的二进制字符串
for(i=0;str[i]!='\0';i++)
// 下面就是将字符串转化成二进制字符串了
{
if(str[i]=='1' || str[i]=='0')
{
num<<=1;
num+=str[i]-'0';
}
else
{
printf("输入的不是二进制数\n");
return 1;
}
}
printf("bin:%s,\tdec:%d\n\n",str,num); //字符串表示二进制,10进制输出
}
int oct_dec()
//八进制转十进制
{
int num=0;
printf("请输入要转换的八进制数:");
scanf("%o",&num);
//按八进制输入,字母欧,不是数字零
printf("oct:%#o,\tdec:%d\n\n",num,num); //按八进制 10进制输出
}
int hex_dec()
//十六进制转十进制
{
int num=0;
printf("请输入要转换的十六进制数:");
scanf("%x",&num);
//按十六进制输入
printf("hex:%#X,\tdec:%d\n\n",num,num); //按16进制 10进制输出
}
int main( )
{
int key=0;
char ag;
do{
system("cls");
printf("请按'1','2','3'选择进制转换:\n\n");
printf("1:二进制转十进制\t");
printf("2:八进制转十进制\t");
printf("3:十六进制转十进制\n");
scanf("%d",&key);
switch(key)
{
case 1: bin_dec();
break;
case 2: oct_dec();
break;
case 3: hex_dec();
break;
}
printf("是否再次进行转换'Y'OR'N'\n");
scanf(" %c",&ag);
//%c前有个空格,可以吸收掉上一个scanf到缓存的回车
}while('Y'==toupper(ag));
return 0;
}
[此贴子已经被作者于2016-4-28 10:43编辑过]