Code:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MAX 1000
//给数组赋值
void arrV(int a[],int len,int p){
int i;
for(i=0;i<len;i++){
a[i]=p;
}
}
//打印数组中的运算结果
void printRverse(int a[]){
int len=0,i=0;
while(a[i]!=-1){
len++;
i++;
}
for(i=len-1;i>-1;i--){
printf("%d",a[i]);
}
}
//两个数组相加
void arrSum(int a[],int b[],int s[],int len_a,int len_b){
int jin=0,i=0,j=0,temp;
int len=len_a<=len_b?len_a:len_b;
for(;i<len;i++){
temp=a[i]+b[i];
if(temp<9){
s[i]=jin==0?temp:temp+1;
jin=0;
}else if(temp==9){
if(jin==0){
s[i]=temp;
jin=0;
}else{
s[i]=0;
jin=1;
}
}else{
s[i]=jin==0?temp%10:temp%10+1;
jin=1;
}
//printf("%d=[%d]\n",i,s[i]);
}
if(len_a>len_b){
while(i<len_a){
if(jin==0){
s[i]=a[i];
}else{
if(a[i]<9){
s[i]=a[i]+1;
jin=0;
}else if(a[i]==9){
s[i]=0;
jin=1;
}
}
i++;
}
if(jin==1){
s[i]=1;
}
}else{
while(i<len_b){
if(jin==0){
s[i]=b[i];
jin=0;
}else{
if(b[i]<9){
s[i]=b[i]+1;
jin=0;
}else if(b[i]==9){
s[i]=0;
jin=1;
}
}
i++;
}
if(jin==1){
s[i]=1;
}
}
}
//将读入的字符串转入到整型数组中
void charToArray(char *p,int a[],int *len){
int i,j=0;
*len=strlen(p);
for(i=*len-1;i>-1;i--){
a[j]=p[i]-48;
j++;
}
}
int main(){
int n,a[MAX],b[MAX],s[MAX],i=1,j=0,len_a,len_b;
char p[MAX],q[MAX];
scanf("%d",&n);
while(n>0){
arrV(a,MAX,-1);
arrV(b,MAX,-1);
arrV(s,MAX,-1);
scanf("%s %s",p,q);
charToArray(p,a,&len_a);
charToArray(q,b,&len_b);
arrSum(a,b,s,len_a,len_b);
printf("Case %d:\n",i);
printf("%s + %s = ",p,q);
printRverse(s);
printf("\n");
if(n>1){
printf("\n");
}
i++;
n--;
}
return 1;
}