输入两个非负10进制整数A和B(<=2
30-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:123 456 8输出样例:
1103
算法:
- 算法开始。
- 读取数据,求和。
- 如果D等于十或者和等于零,则直接输出和。跳到第九步。
- 如果和等于零,跳到第七步。
- 将和除以D的余数写入字符串。
- 和等于和除以D。回到第四步。
- 将字符串反转。
- 输出字符串。
- 算法结束。
下列代码运行于VS2015,修改scanf_s即可在PAT运行。
#include<stdio.h>
#include<string.h>
#define MAX 100
int main(void) {
unsigned int a, b, d, sum, i;
int size;
char n[MAX], tmp;
scanf_s("%u %u %u", &a, &b, &d);
sum = a + b;
if(10==d||sum==0){
printf("%u", sum);
}
else {
for (i = 0; sum != 0; i++) {
n[i] = '0' + sum%d;
sum /= d;
}
n[i] = '\0';
size = strlen(n);
for (i = 0; i < size / 2; i++) {
tmp = n[i];
n[i] = n[size - i - 1];
n[size - i - 1] = tmp;
}
printf("%s", n);
}
return 0;
}