#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int t;
int k;
int a[1050];
int b[1050];
int c[1050];
void check(int *x,int y) //判断是否需要进位
{
for(int i=y-1;i>=0;i--) //从数组最后一位往前判断
{
if(i==0) //最前面那位不需要判断(我觉得应该不要,比如c[0]=9后面一位进上来一个,从c[0]=10,就直接等于10好了,不用往前进1再变成0)
break;
if(c[i]>=10)
c[i-1]++,c[i]-=10;
}
}
void AplusB(int *a,int *b,int x,int y)
{
int size_big=(x>y)?x:y; //获得较大的长度
k=size_big;
while(x>=0||y>=0){ //退出相加的条件 即其中一个数组所有数值加完
c[size_big--]=((x>=0)?a[x--]:0)+((y>=0)?b[y--]:0); //相加
}
check(c,k);
}
int main()
{
char str1[50];
char str2[50];
scanf("%d",&t);
int w=1;
while(t--){
memset(a,sizeof(a),0); //初始化三个储存数值的数组
memset(b,sizeof(b),0);
memset(c,sizeof(c),0);
cin>>str1; //读取两个大数A 和 B
// getchar();
cin>>str2;
int size_1=strlen(str1); //获得两者的长度
int size_2=strlen(str2);
for(int i=0;i<size_1;i++) //赋值给两个数组
a[i]=str1[i]-48;
for(int j=0;j<size_2;j++)
b[j]=str2[j]-48;
AplusB(a,b,size_1,size_2);
printf("Case %d:\n",w++); //输出
cout<<str1<<" + "<<str2<<" = ";
for(int i=0;i<k;i++)
cout<<c[i];
cout<<endl;
}
return 0;
}
A+BProblem_2(个人找不到问题,但是不给过,233333)
最新推荐文章于 2022-04-05 12:56:14 发布