SPOJ - 生命,宇宙和一切

时间:2015-07-03 14:17:43

标签: c

我不明白为什么他们不接受这个解决方案,他们说错了答案: -

#include <stdio.h>
int main(void) 
{
    int val=0;
    printf("Input:- \n");

    do {
        scanf("%d",&val);
        printf("%d \n",val);
    }
    while(val < 42);

    return 0;
}

4 个答案:

答案 0 :(得分:3)

两个错误:

  1. 删除此行 - printf("Input:- \n");
  2. 有问题你必须在来之前打印42.如果42来了你就必须打破。
  3. 像这样:

    if(n!=42) 
       printf("%d\n",n); 
    else 
       break;
    

答案 1 :(得分:1)

首先,问题陈述指出你应该继续打印数字,直到42到达。

1)如果第一个数字本身是42,该怎么办?你的代码无论如何都打印它

2)printf("Input:- \n");删除此行。这仅用于显示输入内容。您无需打印此内容。

3)while(val<42) val可以是42以外的其他任何内容,但不一定小于42

一种好方法是尝试一些自己的测试用例,并将输出与预期输出进行比较。

答案 2 :(得分:0)

为什么不允许超过42的任何数字?使用while(1)并在42时休息。 这个问题已在Life, the Universe, and Everything

得到解答

答案 3 :(得分:0)

我认为您误解了输入为42或更高时的问题,您必须停止处理,但问题实际上是输入完全是42停止处理。 尽管您了解的是,您的代码中存在一个缺陷,即当输入为42时,您将首先打印它,然后您的do while循环将结束。