c语言进制转换问题,感觉没啥问题为什么结果不对啊!
#include<stdio.h> //头文件void TtoT(char num1); //10 to 2 函数声明
void TtoE(char num2); //10 to 8 函数声明
void TtoS(char num3); //10 to 16 函数声明
void main() //主函数
{
char cs,num; //定义变量cs num
while(1) //死循环
{
printf("10 TO 2 请按1\n"); //输出10 TO 2 请按1
printf("10 TO 8 请按2\n"); //输出10 TO 8 请按2
printf("10 TO 16 请按3\n"); //输出10 TO 16 请按3
scanf("%d",&cs); //输入cs的值
switch(cs) //switch语句
{
case 1:
printf("请输入要转换的十进制数:"); //输出请输入要转换的十进制数:
scanf("%d",&num); //输入数字
TtoT(num); //调用函数TtoT
break; //跳出switch语句
case 2:
printf("请输入要转换的十进制数:"); //输出请输入要转换的十进制数:
scanf("%d",&num); //输入数字
TtoE(num); //调用函数TtoE
break; //跳出switch语句
case 3:
printf("请输入要转换的十进制数:"); //输出请输入要转换的十进制数:
scanf("%d",&num); //输入数字
TtoS(num); //调用函数TtoS
break; //跳出switch语句
}
printf("\n");
printf("\n"); //换行 目的是第二次进入switch之前换行避免与上一次重行
}
}
void TtoT(char num1) //函数TtoT
{
int n;
char a; //定义变量
char b[100]; //定义数组
for(n=0;num1!=0;n++) //for循环
{
a = num1/2; //取商
b[n] = num1%2; //取余
num1 = a; //将a的值给num1
}
printf("10 TO 2 值:"); //输出10 TO 2 值:
for(;n+1>0;n--) //for循环
{
printf("%d",b[n]); //输出结果
}
}
void TtoE(char num2) //函数TtoE
{
int n; //定义变量
char a,b[100]; //定义数组
for(n=0;num2!=0;n++) //for循环
{
a = num2/8; //取商
b[n] = num2%8; //取余
num2 = a; //将a的值给num2
}
printf("10 TO 8 值:"); //输出10 TO 8 值:
for(;n+1>0;n--) //for循环
{
printf("%d",b[n]); //输出结果
}
}
void TtoS(char num3) //函数TtoS
{
int n,d; //定义变量
char a,b[100],c[]={'A','B','C','D','E','F'}; //定义数组
for(n=0;num3!=0;n++) //for循环
{
a = num3/16; //取商
b[n] = num3%16; //取余
if(b[n]>9) //判断b[n]是否大于9
{
d=b[n]-10; //取差值
b[n]=c[d]; //将c对应的值给b
}
num3 = a; //将a的值给num3
}
printf("10 TO 16 值:0x"); //输出10 TO 16 值:0x
for(;n+1>0;n--) //for循环
{
if(b[n]>9) //判断b[n]是否大于9
{
printf("%c",b[n]); //输出结果
}
else
{
printf("%d",b[n]); //输出结果
}
}
}