-2

我正在尝试做Timus Online Judge 问题 #1493,“离幸福一步”

Vova买了一张13路电车的车票,数了数车票号码的前三位和后三位的总和(数字有六位)。事实证明,这些总和正好相差 1。“我离幸福只有一步之遥,”沃瓦想,“无论是上一张票还是下一张票,都是幸运的。” 他是对的吗?

输入

输入包含票号。该数字由六位数字组成,其中一些可以是零。保证 Vova 计数正确,即前三位数字的总和与后三位数字的总和相差一个。

输出

如果 Vova 正确,则输出“Yes”,否则输出“No”。

样品

  input      output
--------------------
 715068      Yes
 445219      No
 012200      Yes

暗示

所有的电车车票都有六位数。如果票的前三位数字之和等于其后三位数字之和,则该票被认为是幸运的。

这是我的 Visual C(2010) 格式的代码。

#include <stdio.h>


int main() 
{
  int arr[5],arr1[5],arr2[5],i,a=0,b=0,n,x=0,y=0;
  printf("Enter number");
  scanf("%d",&n);
  x=n+1;
  y=n-1;
  while(n>0)
    {
      for(i=5;i>=0;i--)
    {
      arr[i]=n%10;
      n=n/10;
    }
    }

  a=( arr[0]+arr[1]+arr[2]);
  b=(arr[3]+arr[4]+arr[5]);

  if((a-b==1)||(a-b==-1))
    {
      while(x>0)
    {
      for(i=5;i>=0;i--)
        {
          arr1[i]=x%10;
          x=x/10;
        }
    }
      while(y>0)
    {
      for(i=5;i>=0;i--)
        {
          arr2[i]=y%10;
          y=y/10;
        }
    }
      if ((arr1[0]+arr1[1]+arr1[2]==arr1[3]+arr1[4]+arr1[5]) ||
          (arr2[0]+arr2[1]+arr2[2]==arr2[3]+arr2[4]+arr2[5]))
    { printf("Yes");}
      else
    { printf("No");}
    }
  else
    {
      printf("No");
    }
  return 0;
}

以上代码是我提交的,在Timus Online Judge中收到错误答案的代码。提交的格式是 Visual C (2010)。我在我的电脑上使用 Dev-C++,所以我在我的电脑上运行的代码如下:

#include <stdio.h>
#include <conio.h> 

 main() 
{
  int arr[5],arr1[5],arr2[5],i,a=0,b=0,n,x=0,y=0;
  printf("Enter number");
  scanf("%d",&n);
  x=n+1;
  y=n-1;
  while(n>0)
    {
      for(i=5;i>=0;i--)
    {
      arr[i]=n%10;
      n=n/10;
    }
    }

  a=( arr[0]+arr[1]+arr[2]);
  b=(arr[3]+arr[4]+arr[5]);

  if((a-b==1)||(a-b==-1))
    {
      while(x>0)
    {
      for(i=5;i>=0;i--)
        {
          arr1[i]=x%10;
          x=x/10;
        }
    }
      while(y>0)
    {
      for(i=5;i>=0;i--)
        {
          arr2[i]=y%10;
          y=y/10;
        }
    }
      if ((arr1[0]+arr1[1]+arr1[2]==arr1[3]+arr1[4]+arr1[5]) ||
          (arr2[0]+arr2[1]+arr2[2]==arr2[3]+arr2[4]+arr2[5]))
    { printf("Yes");}
      else
    { printf("No");}
    }
  else
    {
      printf("No");
    }
  getch();
}

我没有收到任何编译错误。该代码在我的 Dev-C++ 编译器上完美运行,并且还给了我正确的输出。问题是当我以 Visual C 格式提交此代码时,他们告诉我这是一个错误的答案。

4

1 回答 1

0

该练习指出:

Output "Yes" if Vova is right and "No" otherwise.

您的程序会打印Enter number,这是练习不要求的。尝试删除它。

此外,为了您自己和我们的理智,我强烈建议您更好地格式化您的程序。在一个漂亮的、格式良好的程序中查找错误要容易得多。有关如何使您的代码更具可读性和简洁性的提示,您可以前往CodeReview.SE

于 2013-06-30T05:22:09.500 回答