#include<string.h>
main()
{
void reverse(char *str);
char a[20][1001]={'\0'},b[20][1001]={'\0'};//存放a,b 序列的数组;
int n;
while(scanf("%d",&n)!=EOF&&n>=1 && n<=20){
int i =0,j=0;// I计算次数统计;c保存 进位
int pa =0,pb=0,s=0;
while(i<n){ // 开始输入序列数据,
scanf("%s %s",a+i,b+i);
i++;
}
for(j=0;j<i;j++){
int c=0,k=0;
int lena = strlen(*(a+j));// 每个数字序列的长度
int lenb = strlen(*(b+j));
char sum[1002]={'\0'};
if(lena ==lenb){
while(lena-->0 && lenb-->0){ //只要有一个长度为0 就结束
pa = a[j][lena] -'0';
pb = b[j][lenb] -'0';
s = pa+pb+c;
c = s/10;//这个是进位数;
s %= 10;
sum[k++] = s+'0'; //将数字变成字符存进字符数组。
}
}
else if(lena >lenb){
while(lena-->0 && lenb-->0){ //只要有一个长度为0 就结束
pa = a[j][lena] -'0';
pb = b[j][lenb] -'0';
s = pa+pb+c;
c = s/10;//这个是进位数;
s %= 10;
sum[k++] = s+'0'; //将数字变成字符存进字符数组。
}
lena++;
while(lena -->0){
pa = a[j][lena]-'0';// 字符之间的计算
s = pa + c;
c = s/10;//这个是进位数;
s %= 10;
sum[k++] = s+'0';//将数字变成字符存进字符数组
}
}else{
while(lena-->0 && lenb-->0){ //只要有一个长度为0 就结束
pa = a[j][lena] -'0';
pb = b[j][lenb] -'0';
s = pa+pb+c;
c = s/10;//这个是进位数;
s %= 10;
sum[k++] = s+'0'; //将数字变成字符存进字符数组。
}
while(lenb -->0){
pb = b[j][lenb]-'0';
s = pb + c;
c = s/10;//这个是进位数;
s %= 10;
sum[k++] = s+'0';//将数字变成字符存进字符数组
}
}
if(c!=0){
sum[k++]=c+'0';
}
sum[k]='\0';
reverse(sum);
printf("Case %d:\n%s + %s = ",j+1,a+j,b+j);
if(j<i-1){
printf("%s\n\n",sum);
}else{
printf("%s\n",sum);
}
}
}
}
void reverse(char *str){
char *p= str;
int i,tmp;
int len =strlen(str);
for(i=0;i<len/2;i++){
tmp=*(str+i)-'0';
*(str+i)=*(str+len-i-1);
*(str+len-i-1) =tmp+'0';
}
}
ACM 1002新版本
最新推荐文章于 2021-12-13 21:59:02 发布