进制转换,杭电0j-2031

进制转换,杭电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("\n");
31     }
32 }

 

 

posted @ 2015-03-15 12:20  hello-real  阅读(236)  评论(0)    收藏  举报