B1022 D进制的A+B (20分)【C语言】
要逆序输出和对D的取余,因此可以借助堆栈或者逆序输出数组(注意数组初始化应为除0-9外的数字)。(或者是采用一个计数器,输出时直接从计数位置逆序输出即可)。
还需要注意当A+B=0时的特判,否则测试点3不能通过。
题目描述:
输入两个非负 10 进制整数 A 和 B (≤2 30 − 1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
实现代码:
#include <stdio.h>
int main()
{
int a, b, C, D, i;
int A[31];
scanf("%d %d %d", &a, &b, &D);
C = a + b;
if(C==0) printf("0\n");
else{
for(i=0; i<31; ++i){
A[i] = -1;
}
for(i=0; C!=0; ++i){
A[i] = C % D;
C /= D;
}
for(i=30; i>=0; --i){
if(A[i]!=-1) printf("%d", A[i]);
}
}
return 0;
}