编写一个程序,输入一个十进制数,回车,可以将其转换位相对应的2进制,8进制,16进制数,请教一下流程
#include <stdio.h>
int main(){
int x;
scanf("%d",&x);
int t=x;
int a[100]; //存放余数
int count=0;
do{
a[count++]=x%2;
x=x/2;
}while(x!=0);//当商不为0时进行循环
printf("二进制数为:");
for(int i=count-1;i>=0;i--){
printf("%d",a[i]);
}
printf("\n");
printf("八进制数为:%o\n",t);
printf("十六进制数为:%x\n",t);
}
#include <stdio.h>
/// @brief 进制转换
/// @param n 要转换数字
/// @param d 进制
/// @param s 存储结果字符串
/// @param len 字符串长度
/// @return 结果长度
int conv(int n, int d, char *s, int len)
{
if (n == 0)
{
*s = '\0';
return len;
}
int t = n % d;
if (t > 9)
*s = t - 10 + 'A';
else
*s = t + '0';
len = conv(n / d, d, s + 1, len + 1);
return len;
}
char *re(int n, int d, char *s)
{
int len = conv(n, d, s, 0);
char t, *p = s + len - 1, *q = s;
while (p > q)
{
t = *p;
*p = *q;
*q = t;
p--, q++;
}
return s;
}
int main()
{
int n = 1234;
char str[100];
scanf("%d", &n);
printf("%s\n", re(n, 2, str));
printf("%s\n", re(n, 8, str));
printf("%s\n", re(n, 16, str));
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!