杭电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
 
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <cmath>
 4 int a[32];
 5 int main()
 6 {
 7     int N, R, k;
 8     while(~scanf("%d%d", &N, &R))
 9     {
10         k = 0;
11         //memset(a, 0, sizeof(a));
12         if(R > 16 || R < 2 || R == 10)
13             continue;
14         if(N < 0)    printf("-");
15         while(N)
16         {
17             a[k++] = abs(N%R);
18             N = abs(N/R);
19         }
20         if(R < 10)
21         {
22             for(int j = k-1; j >= 0; j--)
23                 printf("%d", a[j]);
24         }
25         else
26         {
27             for(int j = k - 1; j >= 0; j--)
28                 printf("%X",a[j]);//以十六进制输出 
29         }
30         printf("
");
31     }
32     return 0;
33 }
原文地址:https://www.cnblogs.com/digulove/p/4721682.html