#345: 與輸出只有一不同!!


looc165 (印度人)

學校 : 中央警察大學
編號 : 1568
來源 : [115.82.78.190]
最後登入時間 :
2012-12-12 21:52:54
c034. 00424 - Integer Inquiry -- UVa424 | From: [220.140.192.103] | 發表日期 : 2008-06-28 14:10

以下為我的錯誤資訊:

與正確輸出不相符(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;               
   }
}

 
ZeroJudge Forum