#include<iostream>
#include<string>
using namespace std;
int main()
{
int m=0;
while(cin>>m)
{
string a,b;
int i=0;
for(i=1;i<=m;++i)
{
cin>>a>>b;
cout<<"case"<<i<<":"<<endl;
int n1=a.length(),n2=b.length();
int n=n1>=n2?(n1+1):(n2+1);
int *c=new int[n];
int j=0,sum=0,flag=0;
--n1;
--n2;
while(n1>=0&&n2>=0)
{
sum=a[n1--]-'0'+b[n2--]-'0'+flag;
flag=sum>=10?1:0;
c[j++]=sum%10;
}
while(n1>=0)
{
sum=a[n1--]-'0'+flag;
flag=sum>=10?1:0;
c[j++]=sum%10;
}
while(n2>=0)
{
sum=b[n2--]-'0'+flag;
flag=sum>=10?1:0;
c[j++]=sum%10;
}
c[n-1]=flag;
cout<<a<<" + "<<b<<" = ";
if(c[n-1]==1)
cout<<1;
for(int j=n-2;j>=0;--j)
{
cout<<c[j];
}
cout<<endl<<endl;
delete []c;
}
}
}
1、无返回值错误。应加上return 0;或者将函数的返回值类型改为void。
2、for循环体之后应紧跟cin.clear();语句。否则当你执行完for循环之后,留在缓冲区的值仍为string型,那么当while循环进行条件判断时将出现错误而结束,造成while循环只执行一次。
建议:while循环体后也应紧跟cin.clear();以清空相应缓冲区供下次使用,否则在while循环体之后,像cin >> a;这样的语句不能执行。虽然本例中并没有发生这样的错误,但应该养成良好习惯。
3、变量j重定义。
4、你的编程习惯最好改变一下,你的代码可读性很差,良好的习惯很重要。