一道降智版的大数加法,不包含负数,那简单啊字符串转int,按位相加倒序输出即可
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
void swich(char A[],int B[],int n)
{
B[0]=n;
for(int i=1;i<=n;i++){
B[n-i+1]=A[i-1]-'0';
}
}
int main()
{
int T,t=1;
char A[1005],B[1005];
int C[1005],D[1005],p[1100];
cin>>T;
int T1=T;
while(T--)
{
memset(C,0,sizeof(C));
memset(D,0,sizeof(D));
memset(p,0,sizeof(p));
cin>>A>>B;
swich(A,C,strlen(A));
swich(B,D,strlen(B));
int Max,yu=0;
if(strlen(A)>strlen(B))Max=strlen(A);
else Max=strlen(B);
for(int i=1;i<=Max;i++){
p[i]=(C[i]+D[i]+yu)%10;
yu=(C[i]+D[i]+yu)/10;
if(i==Max){
if(yu==0){p[0]=i;break;}
else {p[++i]=yu;p[0]=i;break;}
}
}
for(int j=p[0];j>=1;j--){
if(j==p[0]){printf("Case %d:\n",t++);
printf("%s + %s = ",A,B);}
if(j==1&&t!=T1+1)printf("%d\n\n",p[j]);
if(j==1&&t==T1+1)printf("%d\n",p[j]);
if(j!=1)printf("%d",p[j]);
}
}
return 0;
}