这道题是大数加法的典型题,比较基础,但是要注意输出格式,我也出现过几次WA,后来发现是由于没有重置数组,导致前一次运算影响了后一次结果。建议你们通过样例但出现WA的时候多尝试其他的数据,比如166 + 1这种,耐心一点,希望你们也AC呦
#include <iostream>
#include <string.h>
using namespace std;
int main() {
char a[1001],b[1001];
int a1[1001],b1[1001],c1[1001];
int len_a,len_b,len;
int T;
cin >> T;
for(int i = 1; i <= T; i++) {
//每一次运行循环前将数组元素置零否则会影响下一次循环
memset(a1,0,sizeof(a1));
memset(b1,0,sizeof(b1));
memset(c1,0,sizeof(c1));
cin>>a>>b;
len_a = strlen(a);
len_b = strlen(b);
len = len_a > len_b ? len_a: len_b;
for(int j = 0; j < len_a; j++) {
a1[j] = a[len_a-1-j] - '0';
}
for(int j = 0; j < len_b; j++) {
b1[j] = b[len_b-1-j] - '0';
}
int c = 0;
for(int j = 0; j < len; j++) {
c1[j] = a1[j] + b1[j] + c;
c = c1[j] / 10;
c1[j] = c1[j] % 10;
}
if(c != 0) {
c1[len] = c;
len++;
}
cout << "Case "<< i << ":" <<endl;
cout << a << " + " << b << " = " ;
for(int j = 0; j < len ; j++) {
cout<<c1[len-1-j];
}
cout<<endl;
if(i!=T)
cout<<endl;
}
return 0;
}