代码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.








其实问题出在这个循环