坑点在于:当最后一行数据输出时只有一个换行符
而其他行的数据的输出有两个换行符!!!
贴上代码:我认为将a数组和b数组都memset的操作很好,因为后面不用比较a和b数组的大小了
#include<iostream>
#include<cstdio>
#include<string>
#include<cstdlib>
#include<algorithm>
using namespace std;
const int maxn=1000+10;
int main()
{
int n;
scanf("%d",&n);
for(int t=1;t<=n;t++){
string s1,s2;
cin>>s1>>s2;
int a[maxn],b[maxn],sum[maxn];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(sum,0,sizeof(sum));
int lena=s1.length();
for(int i=0;i<lena;i++){
a[lena-i-1]=s1[i]-'0';
}
int lenb=s2.length();
for(int j=0;j<lenb;j++){
b[lenb-j-1]=s2[j]-'0';
}
int i=0;
int k=0;
for(;i<lena || i<lenb;i++){
int h=a[i]+b[i]+k;
sum[i]=h%10;
k=h/10;
}
//最后的进位
if(k!=0) sum[i++]=k;
printf("Case %d:\n",t);
cout<<s1<<" + "<<s2<<" = ";
int p=0;
for(int j=i-1;j>=0;j--)
{
if(p==0&&sum[j]==0);
else
{
p=1;
cout<<sum[j];
}
}
if(t!=n)cout<<endl<<endl;
else cout<<endl;
}
return 0;
}