题目描述
输入一个十进制数N,将它转换成R进制数输出。
输入
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
输出
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
样例输入 Copy
7 2 23 12 -4 3
样例输出 Copy
111
1B
-11
代码如下:
#include<stdio.h>
int main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF){
int c[100],i=0,flag=1;
if(a<0){ //转换为正数,负数处理则每项都有负号
flag=-1;
a=-a;
}
while(a){ //使用除b取余法求每位数值
c[i]=a%b;
a=a/b;
i++;
}
if(flag==-1) //输出时将符号加回
printf("-");
while(i--){ //输出,超过9时,使用字母计数
if(c[i]>9) printf("%c",'A'+c[i]-10);
else printf("%d",c[i]);
}
printf("\n");
}
}
本文介绍了一个算法,该算法可以将十进制数转换为2到16之间的任意R进制数,并提供了完整的C语言实现代码。对于R大于10的情况,采用16进制的字母表示法。
1111

被折叠的 条评论
为什么被折叠?



