代码BUG,找不出是哪里出错了。。求大神指教
程序代码:
#include<stdio.h> #include<string.h> int main() { char a[50]={'\0'},b[50]={'\0'},c[50]={'\0'}; // 为了避免使用元素时没有初值,所以全部赋为0 char A[50],B[50]; int i,j,Ret,T,N,LenA,LenB; scanf("%d",&T); for(N = 1; N <= T; N++) // 多次测试,总共T次? { scanf("%s%s",a,b); // 输入两个数据。、,以字符串的形式 strcpy(A,a); strcpy(B,b); strrev(a); strrev(b); // 将两个字符创倒置,方便计算 printf("%-20s\n",a); printf("%-20s\n",b); LenA = strlen(a); LenB = strlen(b); // 求出a,b的长度 if(LenA > LenB) // 如果a比b长 { for(i=0; i<LenB; i++) // 把b长度以前的数字相加 { c[i] = a[i] + b[i]-'0'; // 相加后的数字赋给数组c Ret = c[i]-'0'; if(Ret >= 10) //看c[i]是否超过10 { c[i] = (c[i]-'0')%10 + '0'; // 将c[i]取个位数字 a[i+1] = a[i+1] + Ret/10; // 将超过十的数字加到后面高位上 } } for(; i<LenA; i++) // 将多出的部分照抄,下面大体一样 c[i] = a[i]; c[i] = '\0'; } else if(LenA < LenB) { for(i=0; i<LenA; i++) { c[i] = a[i] + b[i]-'0'; Ret = c[i]-'0'; if(Ret >= 10) { c[i] = (c[i]-'0')%10+'0'; b[i+1] += Ret/10; } } for(; i<LenB; i++) c[i] = b[i]; c[i] = '\0'; } else { for(i=0; i<LenB; i++) { c[i] = a[i] + b[i]-'0'; Ret = c[i]-'0'; if(Ret >= 10) { c[i] = (c[i]-'0')%10+'0'; b[i+1] += Ret/10; } } if(Ret>=10) c[i] = b[i]; c[i+1] = '\0'; } strrev(c); printf("case %d:\n",N); printf("%s + %s = %s",A,B,c); } return 0; }问题是,9900加100得不到10000,而是出现 :000,这是OJ http://acm.hdu.