求两个不超过200位的非负整数的和。
输入格式
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出格式
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
#include <stdio.h>
#include <string.h>
int main()
{
char s1[211];
char s2[211];
int a1[211]={0},a2[211]={0},a3[211]={0};
scanf("%s",s1);
scanf("%s",s2);
for(int i=0;i<strlen(s1);i++){//字符串存入数组
a1[strlen(s1)-i-1]=s1[i]-'0';
}
for(int i=0;i<strlen(s2);i++){
a2[strlen(s2)-i-1]=s2[i]-'0';
}
int len=strlen(s1);//a3[]得长度
if(strlen(s1)<strlen(s2))
len=strlen(s2);
for(int i=0;i<len;i++){//求和
a3[i]=a1[i]+a2[i];
}
for(int i=0;i<len-1;i++){//进位
if(a3[i]>=10){
a3[i+1]=a3[i+1]+a3[i]/10;
a3[i]=a3[i]%10;
}
}
if(a3[len]!=0) len++;//判断结果长度是否变化
int flag=0;
for(int i=len-1;i>=0;i--){//逆序输出结果
if(a3[i]!=0)
flag=1;
if(flag==1)
printf("%d",a3[i]);
if(i==0&&flag==0)
printf("%d",i);
}
return 0;
}