关于超长整数求和的问题
请大家帮我改改这个程序,搞不懂为什么总得不到正确结果#include <stdio.h>
#include <string.h>
int main()
{
int temp;
int i,max;
int clength;
int alength;
int blength;
char a[15];
char b[15];
char c[15];
while( (scanf("%s %s",a,b))!=EOF )
{
alength=strlen(a);
blength=strlen(b);
for(i=0;i<alength/2;i++) /* 将存储运算数的数组倒置 */
{
temp=a[i];
a[i]=a[alength-i-1];
a[alength-i-1]=temp;
}
//printf("%s\n",a);
for(i=0;i<blength/2;i++)
{
temp=b[i];
b[i]=b[blength-i-1];
b[blength-i-1]=temp;
}
//printf("%s\n",b);
if(alength>blength) /* 若两个运算数长度不相等,则用'0'将较短的字符数组补齐 */
{
max=alength;
for(i=blength;i<max;i++)
{
b[blength]='0';
}
b[max-1]='\0';
}
else
{
max=blength;
for(i=alength;i<max;i++)
{
a[blength]='0';
}
a[max-1]='\0';
}
for(i=0;i<=max;i++)
{
c[i]='0';
}
for(i=0;i<max;i++) /* 计算结果存储于字符数组c中 */
{
c[i]+=a[i]+'0'+b[i]+'0';
if(c[i]>'9') /* 判断是否有进位 */
{
c[i]-=10;
c[i+1]='1';
}
}
if(c[max]>'0')
{
c[max+1]='\0';
clength=max;
}
else
{
c[max]='\0';
clength=max-1;
}
for(i=0;i<clength/2;i++) /* 将字符数组倒置,得到运算结果 */
{
temp=c[i];
c[i]=c[clength-1-i];
c[clength-1-i]=temp;
}
printf("%s\n",c);
}
return 0;
}