进制转换,杭电0j-2031

时间:2023-12-10 16:56:56

进制转换,杭电0j-2031原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=2031

【Problem Description】
输入一个十进制数N,将它转换成R进制数输出。
【Input】
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。
【Output】
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
【Sample Input】
7 2 23 12 -4 3
【Sample Output】
111 1B -11
【AC代码】
 #include<stdio.h>
void print(int num)
{
if(num == ) printf("%c", 'A');
else if(num == ) printf("%c", 'B');
else if(num == ) printf("%c", 'C');
else if(num == ) printf("%c", 'D');
else if(num == ) printf("%c", 'E');
else if(num == ) printf("%c", 'F');
else printf("%d",num);
}
main()
{
int a, b, i, j, flag = ;
int c[];
while(~scanf("%d %d", &a, &b))
{
int i = ;
if(b< || b> || b==) break;
if(a<) a = -a, flag = ;
while(a)
{
c[i] = a%b;
a = a/b;
i++;
}
if(flag) printf("-"), flag = ;
for(j=i-; j>=; j--)
print(c[j]);
printf("\n");
}
}