2 1 2 112233445566778899 998877665544332211
Case 1: 1 + 2 = 3 Case 2: 112233445566778899 + 998877665544332211 = 1111111111111111110
大数相加的注意点是:保存大数的类型
代码:
#include<stdio.h>
#include<string.h>
int main()
{
int i=0,n=0,l=0,j=1;
char a[1000],b[1000];//注意大数相加里大数要用字符串表示
int num1[1000]={0},num2[1000]={0};
scanf("%d",&n);
while(n--)
{
while(~scanf("%s%s",a,b))
{
memset(num1,0,sizeof(num1));//数组清零
l=strlen(a)-1;
for(i=0;l>=0;l--,i++)
{
num1[i]=a[l]-'0';//将输入的字符串中的数字变为普通//自然数
}
memset(num2,0,sizeof(num2)); //数组清零
l=strlen(b)-1;
for(i=0;l>=0;l--,i++)
{
num2[i]=b[l]-'0';
}
//数字相加
for(i=0;i<1000;i++)
{
num1[i]+=num2[i];
num1[i+1]+=num1[i]/10;
num1[i]%=10;
}
//因为相加的时候是倒着加的为了输出原数字,倒着输出
int i=999;
while(!num1[i]) i--;
if(j!=1)printf("\n");
printf("Case%d:\n",j++);
printf("%s + %s =",a,b);
while(i>=0)
printf("%d",num1[i--]);
printf("\n");
}
}
return 0;
}