PAT 1022D进制的A+B

1022 D进制的A+B (20)(20 分)

输入两个非负10进制整数A和B(<= 2 31 -1),输出A+B的D (1 < D <= 10)进制数。
输入格式:
输入在一行中依次给出3个整数A、B和D。
输出格式:
输出A+B的D进制数。
输入样例:

123 456 8

输出样例:

1103




解析

模拟一遍除二取余法就行了。

①虽然输入的数字A,B <= 2 31 -1。但是通过进制转换,int是装不下的。要用字符串存储哦。
②如果你监测点4不能通过。你看看你的程序能不能处理 0.O(∩_∩)O



完整代码:

#include<stdio.h>
int main()
{
  int a,b;
  scanf("%d %d",&a,&b);
  int dig;                 //进制
  scanf("%d",&dig);
  int num=a+b;
  if(num == 0){
    printf("0");
    return 0;
  }
  char ch_num[33];
  int i=0;
  for(;num!=0;i++){
    ch_num[i]=num%dig+'0';
    num/=dig;
  }
  ch_num[i]='\0';
  for(i-=1;i!=-1;i--) 
    printf("%c",ch_num[i]);
}

猜你喜欢

转载自blog.csdn.net/weixin_41256413/article/details/81037432
今日推荐