进制转换,杭电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代码】
1 #include<stdio.h> 2 void print(int num) 3 { 4 if(num == 10) printf("%c", 'A'); 5 else if(num == 11) printf("%c", 'B'); 6 else if(num == 12) printf("%c", 'C'); 7 else if(num == 13) printf("%c", 'D'); 8 else if(num == 14) printf("%c", 'E'); 9 else if(num == 15) printf("%c", 'F'); 10 else printf("%d",num); 11 } 12 main() 13 { 14 int a, b, i, j, flag = 0; 15 int c[100]; 16 while(~scanf("%d %d", &a, &b)) 17 { 18 int i = 0; 19 if(b<2 || b>16 || b==10) break; 20 if(a<0) a = -a, flag = 1; 21 while(a) 22 { 23 c[i] = a%b; 24 a = a/b; 25 i++; 26 } 27 if(flag) printf("-"), flag = 0; 28 for(j=i-1; j>=0; j--) 29 print(c[j]); 30 printf(" "); 31 } 32 }