既然开头的题目是A+B那我们也用A+B来结尾咯。只不过这个加法高级一点
Input
输入数据有多组
输入A,B两个非常大的数(A和B的长度都不超过1000)
如果A的真值为0退出
输入A,B两个非常大的数(A和B的长度都不超过1000)
如果A的真值为0退出
Output
输出A+B的结果,输出格式如Sample output所示。PS:记住每两个答案之间空一行。
Sample Input
1 2 112233445566778899 998877665544332211 0
Sample Output
Case 1: 3 Case 2: 1111111111111111110
!!!注意:0001+1=2,不是0002。
#include<stdio.h>
#include<string.h>
int main()
{
int x,y,i,max,cur=1;
char a[1002],b[1002];
while(scanf("%s",&a))
{
x=strlen(a);
if(x==1&&a[0]=='0')
break;
scanf("%s",&b);
y=strlen(b);
max=x>y?x:y;
int n[1002]={0},m[1002]={0};
int sum[1005]={0};
for(i=0;i<x;i++)
n[i]=a[x-i-1]-'0';
for(i=0;i<y;i++)
m[i]=b[y-i-1]-'0';
for(i=0;i<max;i++)
sum[i]=n[i]+m[i];
for(i=0;i<max;i++)
{
if(sum[i]>9)
{
if(i==max-1)
max++;
sum[i]=sum[i]-10;
sum[i+1]++;
}
}
if(cur-1>0)
printf("\n");
printf("Case %d:\n",cur);
int v=0;
for(i=max-1;i>=0;i--)
{
if(sum[i]!=0||v==1)
{
printf("%d",sum[i]);
v=1;
}
}
printf("\n");
cur++;
memset(a,0,sizeof(char)*1002);
memset(b,0,sizeof(char)*1002);
}
return 0;
}