整数转换(使用纯C语言)

来源:百度知道 编辑:UC知道 时间:2024/05/24 15:35:49
整数转换

【问题描述】
编写一个程序,从标准输入读入一个十进制正整数,将其转换成相应的二进制、八进制和十
六进制数,并以字符串形式分三行输出到标准输出。
【输入形式】
从标准输入读入一个十进制正整数。
【输出形式】
向标准输出打印三行:第一行是该正整数的二进制字符串形式;第二行是该正整数的八进制字符串形式;第三行是该正整数的十六进制字符串形式。
注意:
1. 输出的二进制、八进制和十六进制数的每一位之间用空格符分隔,但是首位之前不要加空
格符,末位后有空格符;
2. 在十六进制数中使用大写字母A-F。
【输入样例】
62147
【输出样例】
1 1 1 1 0 0 1 0 1 1 0 0 0 0 1 1
1 7 1 3 0 3
F 2 C 3
【样例说明】
将62147转换成相应的二进制、八进制和十六进制数,并分三行输出。

我编写的C程序:(在VC下调试通过)
#include<stdio.h>
void trans(long n,int base)
{int b,i=0, a[24];
while(n>0)
{b=n%base;
n=(n-b)/base;
a[i]=b;
i++;
}
for(b=i-1;b>=0;b--)
{
switch(a[b])
{case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9: printf("%d ",a[b]);break;
case 10: printf("A ");break;
case 11: printf("B ");break;
case 12: printf("C ");break;
case 13: printf("D ");break;
case 14: printf("E ");break;
case 15: printf("F ");break;
default:break;
}}
printf("\n");
}
void main()
{long x;
printf("input a integer :");
scanf("%ld",&x);
trans(x,2);
trans(x,8);
trans(x,16);
}