题目
输入两个非负10进制整数A和B(<=2^30-1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:
123 456 8
输出样例:
1103
分析
刚开始还以为int不够计算,就想用unsigned来保存这些数,然而在用unsigned时老出错,后来发现是输入输出应该是%u,然后在unsigned与其他类型转换时注意用法,最后看了别人的答案,发现不是栈顶元素为零就不输出的原因,而是有可能是两个零相加,这样栈里没有保存元素,就没有输出,这是个特殊点,应该特殊考虑一下。
代码:
#include<stdio.h>
int main()
{
int sum;
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
sum=a+b;
int stack[100],i=0;
while(sum!=0)
{
stack[i++]=sum%c;
sum=sum/c;
}
if(i==0)
{
printf("0");
return 0;
}
while(i--)
{
printf("%d",stack[i]);
}
}