PAT (Basic Level) Practise:1022. D进制的A+B

【题目连接】

输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。

输入格式:

输入在一行中依次给出3个整数A、B和D。

输出格式:

输出A+B的D进制数。

输入样例:

123 456 8

输出样例:

1103

提交代码:

 1 #include <stdio.h>
 2 
 3 int convert(int a, int b, int c, int *d, int len)
 4 {
 5     int cnt, x;
 6     int calc = a + b;
 7     
 8     cnt = 0;
 9     while(calc)
10     {
11         x = calc % c;
12         if(cnt < len)
13         {
14             d[cnt] = x;
15         }
16         calc /= c;
17         cnt++;
18     }
19     return cnt;
20 }
21 
22 void reverse(int *d, int len)
23 {
24     int i, tmp;
25 
26     for(i = 0; i < len / 2; i++)
27     {
28         tmp = d[i];
29         d[i] = d[len-i-1];
30         d[len-i-1] = tmp;
31     }
32 }
33 
34 int main(void)
35 {
36     int a, b, c;
37     int d[32];
38     int i, len;
39 
40     scanf("%d %d %d", &a, &b, &c);
41 
42     len = convert(a, b, c, d, sizeof(d)/sizeof(d[0]));
43 
44     if(len == 0)
45     {
46         printf("0");
47     }
48     else
49     {
50         reverse(d, len);
51 
52         for(i = 0; i < len; i++)
53         {
54             printf("%c", d[i]+'0');
55         }
56     }
57     return 0;
58 }
原文地址:https://www.cnblogs.com/utank/p/4748122.html