样例输入11111111111,99999999999;
样例输出 111111111110;
样例输入0000000000,000000000;
样例输出 0;
c代码:
#include<stdio.h>
#include<string.h>
int main(){
char s1[520],s2[520];//大数已经超过了我们所能定义的最大整形的位数,
//故我们引入字符串进行相加;
int a[520]={0},b[520]={0};//定义俩个整形数组并将其整个数组全为0,
//当然,这里我们也可以用string的标准库函数memset进行清0;
gets(s1);
gets(s2);//输入俩个字符串;
int i;
int j=0;
for(i=strlen(s1)-1;i>=0;i--){
a[j++]=s1[i]-'0';
}
j=0;
for(i=strlen(s2)-1;i>=0;i--){
b[j++]=s2[i]-'0';
}//将输入的数组逆序排到普通数组中,
//当然,前面为啥减‘0’,目的是为了将字符串存到普通数组中;
//当然,为啥要逆序呢?对后续的进位运算操作方便;
//如果只是单纯的顺序排序,会让进位存在问题;
for(i=0;i<520;i++){
a[i]+=b[i];
if(a[i]>=10){
a[i]-=10;
a[i+1]+=1;
}//进行相加,逢10进位;
}
int flag=0;//定义一个标记,必须从不为0的后面全部输出;
for(i=510;i>=0;i--){
if(a[i]!=0||flag==1){
printf("%d",a[i]);
flag=1;
}
}//再进行逆序输出,
if(flag==0){
printf("0");
}//当输入俩个全为0的字符串的时候可以直接输出0;
}