思路:大数相加,用字符串存在数组里,从个位开始相加、进位。
注意:两数a b哪个更长,及输出的格式问题
知识点:字符型转整形减0,整形转字符型加0
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
string a,b;
int num,sum[1000];
cin>>num;//用例个数
for(int l=0;l<num;l++){
cin>>a>>b;
int q = 0;//sum的长度
int m = 0,n = 0,temp=0,i,k;
i = a.length();
k = b.length();
i = i-1;
k = k-1;
while(i>=0 && k>=0){
m = a[i]-'0';//字符型转整形减0,反之加0
n = b[k]-'0';
sum[q++] = (temp+m+n)%10;
temp = (temp+m+n)/10;//进位
k--;
i--;
}
//当两个数据长度不一样时
if(i>k){
while(i>=0){
m = a[i]-'0';
sum[q++] = (temp+m)%10;
temp = (temp+m)/10;
i--;
}
}
if(k>i){
while(k>=0){
n = b[k]-'0';
sum[q++] = (temp+n)%10;
temp = (temp+n)/10;
k--;
}
}
sum[q] = temp;
cout<<"Case "<<l+1<<":"<<endl;
cout<<a<<" + "<<b<<" = ";
if(sum[q]!=0){
cout<<sum[q];
}
for(--q;q>=0;q--){
cout<<sum[q];
}
cout<<endl;
if(l<num-1) cout<<endl;//格式,两个结果之间要空行且没有多余空行
}//for
return 0;
}