#include <cstring>
#include <cstdio>
using namespace std;
const int Max =10001;
int main(){
char a[Max],b[Max];//用来以字符串形式存放输入的数字
int aa[Max],bb[Max];//以每位数字的形式存放输入的数字
int sum[Max];//用来存放每位数字的和
int lena,lenb;
scanf("%s%s",a,b);
lena = strlen(a);//记录数字长度
lenb = strlen(b);
//将字符转化为数字
for(int i= 0 ; i < lena; i ++){
aa[i] = a[i] - 48; //0的ASCII码为48
}
for(int i= 0 ; i < lenb; i ++){
bb[i] = b[i] - 48;
}
int num = 0;
//当一方数字每位都计算完后结束循环
while(lena > 0 && lenb > 0){
lena -- ;
lenb -- ;
sum[num ++ ] = aa[lena] + bb[lenb];
}
//位数较多的直接加到sum数组后面
while(lena > 0){
lena --;
sum[num ++] = aa[lena] ;
}
while(lenb > 0){
lenb -- ;
sum[num ++ ] = bb[lenb];
}
//进位操作,sum[i]>10则进位
for(int i = 0 ; i < num ; i ++ ){
if(sum[i] >= 10){
sum[i+1] += 1;
sum[i] -= 10;
}
}
//判断最高位是否进位
if(sum[num] != 0){
num ++ ;
}
for(int i = num -1 ; i >= 0 ; i -- ){
printf("%d",sum[i]);
}
printf("\n");
return 0;
}
大数相加
最新推荐文章于 2023-11-14 18:45:37 发布