<pre name="code" class="cpp">#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
for(int i=1;i<=t;i++)
{
string str1,str2;
cin>>str1>>str2;//将数字以字符串的形式输入
string s1=str1,s2=str2;//记录原字符串
int len1=str1.size(),len2=str2.size();//取得字符串的长度
if(len1<=len2) //确保len1是较大数,len2较小 。str1是较长的字符串,str2是较短的字符串
{
string ss;
ss=str1;
str1=str2;
str2=ss;
int le=0;
le=len1;
len1=len2;
len2=le;
}
int num1[len1],num2[len2];
int sum[len1+1];
for(int j=0;j<len1;j++)//将 str1,str2存入int num1,num2 数组内
{
num1[j]=str1[j]-'0';
}
for(int j=0;j<len2;j++)
{
num2[j]=str2[j]-'0';
}
int carry=0,len=len1-1;
for(int j=len2-1;len>=0;j--,len--)//从str2(较短)的最后一位开始相加,直到遍历完str1(较长)
{
if(j>=0) //str2还没遍历完的时候
{
sum[len]=(num1[len]+num2[j]+carry)%10;
carry=(num1[len]+num2[j]+carry)/10;
}
else //str2已经遍历结束
{
sum[len]=(num1[len]+carry)%10;
carry=(num1[len]+carry)/10;
}
}
cout<<"Case "<<i<<":"<<endl;
cout<<s1<<" + "<<s2<<" = ";
if(carry!=0)
{
cout<<carry;
}
for(int j=0;j<len1;j++)
{
cout<<sum[j];
}
if(i==t)cout<<endl;
else cout<<endl<<endl;
}
return 0;
}
这是一道大数加法,由于long long 无法存储下数字,所以改用string存储。