A+B

题目

输入两个非负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]);
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容