PTA(Basic Level) 1074:宇宙无敌加法器(C语言实现)
分析:
①注意测试点1和3:如果最后一位相加有进位的处理。
例如 0000 1234 9234
最后一位1+9=10,产生进位1,这时候记得把进位记录到结果中。
②注意前导0和相加结果为0的进行处理。前导0不应输出,结果为"0000"时输出0。
#include <stdio.h>
#include <string.h>
int main()
{
char s[21]="",s1[21]="",s2[21]="",res[30]="",c1,c2;
int i,j,k,l=0,len,len1,len2,t,c=0,flag;
scanf("%s%s%s",s,s1,s2);
len=strlen(s);
len1=strlen(s1);
len2=strlen(s2);
for(i=len1-1,j=len2-1,k=len-1; i>=0||j>=0; i--,j--,k--,l++)
{
c1=(i>=0)?s1[i]:'0';
c2=(j>=0)?s2[j]:'0';
t=(s[k]=='0' || s[k]=='d')?10:s[k]-'0';
res[l]=((c1-'0')+(c2-'0')+c)%t+'0';
c=((c1-'0')+(c2-'0')+c)/t;//进位
}
if(c>0)//最后两位相加有进位
res[l++]=c+'0';
flag=0;
for(l--; l>=0; l--)
{
if(!flag && res[l] != '0')
flag=1;
if(flag)//前导0不输出
putchar(res[l]);
}
if(!flag)//相加结果为0
printf("0");
return 0;
}