#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
int main()
{
int T;
char m[MAX_LEN+1],n[MAX_LEN+1];
int cnt=1;
int a[MAX_LEN+1],b[MAX_LEN+1],c[MAX_LEN+1];
int mark;
int len,len1,len2;
int max;
scanf("%d",&T) == 1;
if(T>=1 && T<=20)
{
while(T--)
{
//初始化数组元素为零
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
//初始化标志位
mark = 0;
//读入字符数组
scanf("%s%s",&m,&n)==2;
//保存字符型数字的长度
len1=strlen(m),len2=strlen(n);
max=(len1>len2)?len1:len2;
//将字符转换为integer型数字并存入数组
for(int i=0;i<len1;i++)
a[i]=m[len1-i-1]-'0';
for(int j=0;j<len2;j++)
b[j]=n[len2-j-1]-'0';
// 123 + 987
// a: 3 2 1
// b: 7 8 9
// c: 0 1 1 1
for( len=0;len<max;len++){
if(a[len]+b[len]+c[len]>=10){
c[len]+=a[len]+b[len]-10;
c[len+1]++;
}
else
c[len]+=a[len]+b[len];
}
if(c[len]>0) //进位标志
{
mark = 1;
}
printf("Case %d:\n",cnt);
for(int i=len1-1;i>=0;i--)
printf("%d",a[i]);
printf(" + ");
for(int i=len2-1;i>=0;i--)
printf("%d",b[i]);
printf(" = ");
for(int x=max-1+mark;x>=0;x--)
printf("%d",c[x]);
printf("\n\n");
cnt++;
}
}
else
return -1;
return 0;
}
//还是有bug 0009 + 09888 = 09897
成功通过菜鸟在线编译
杭电AC