杭电OJ 1002 AC

       这道题是大数加法的典型题,比较基础,但是要注意输出格式,我也出现过几次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;
}

猜你喜欢

转载自blog.csdn.net/qq_36552817/article/details/86573008