以下為我的錯誤資訊:
與正確輸出不相符(line:1)
您的答案為: 546752674349339634925109431351390543043102385172852692458764260471789059534961180576127198631499007338
正確答案為: 542752674349339634925109431351390543043102385172852692458764260471789059534961180576127198631499007338
再來為原始碼,小第一直看不出哪裡錯了,麻煩好新人給予指導指導
#include<stdio.h>
#include<string.h>
void inverse(char ch[]);
void plus(char dest[],char sour[]);
int main(void)
{
char a[200],b[200];
short i;
gets(b);
inverse(b);
while(gets(a))
{
if(a[0]=='0' && a[1]=='\0')
break;
inverse(a);
plus(b,a);
}
inverse(b);
for(i=0;b[i]!='\0';i++)
printf("%d",(int)b[i]-48);
printf("\n");
return 0;
}
void inverse(char ch[])
{
short i,j,save_i;
char temp;
for(i=0;i<200;i++)
if(ch[i]=='\0')
break;
i--;
save_i = i / 2 +1;
for(j=0;j<save_i;j++,i--)
{
temp = ch[j];
ch[j] = ch[i];
ch[i] = temp;
}
}
void plus(char dest[],char sour[])
{
char temp[200];
short i;
if(strlen(sour)>strlen(dest))
{
strcpy(temp,dest);
strcpy(dest,sour);
strcpy(sour,temp);
}
for(i=0;dest[i]!='\0' && sour[i]!='\0';i++)
{
if((int)dest[i]+(int)sour[i]>=106)//有進位時
{
if(dest[i+1]!='\0')
{
dest[i] = (int)dest[i]+(int)sour[i]- 58;
dest[i+1] += 1;
}
else
{
dest[i+1] = 49;
dest[i+2] = '\0';
}
}
else //無進位時
dest[i] = (int)dest[i]+(int)sour[i] -48;
}
}