SPOJ - 生命,宇宙以及一切
我不明白为什么他们不接受此作为解决方案,他们说了一个错误的答案: -SPOJ - 生命,宇宙以及一切
#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;
}
两个错误:
- 删除此行 -
printf("Input:- \n");
- 问题你必须在42之前打印。如果42来了,你必须打破。
像这样:
一切,你应该保持对印刷数字,直到42到达问题陈述状态if(n!=42)
printf("%d\n",n);
else
break;
第一。
1)如果第一个数字是42本身呢?你的代码将打印反正
2)printf("Input:- \n");
删除提供此line.This只是为了展示一下输入is.You没有打印这个。
3)while(val<42)
val
可以比42
不一定小于42
一个好方法是尝试一些自己的测试用例,并比较预期输出的输出的任何其他。
为什么42以上的号码不允许?使用while(1)
,当42
中断。 这个问题已经回答在Life, the Universe, and Everything
该链接不能很好地工作。 – unwind
你说得对。现在是对的。 –
我认为你误解了问题,当输入是42或更大,你必须停止处理,但问题实际上是当输入是确切的42停止处理。 尽管事实上你知道你的代码有一个缺陷,当输入是42时,你将首先打印它,然后你的while while循环结束。
这可能是一个惊喜,但并不是每个人都知道“SPOJ ...”是指什么(除了向DouglasNoëlAdams致敬)。所以,请用**全部**相关信息填写您的问题。 – Olaf
阅读答案和评论,你的程序给出了SPOJ问题定义中给出的例子的正确输出(除了提示),因为你打印'88'然后停止是因为'88'不小于'42'。但是您没有仔细阅读问题陈述,并且您的提交将由SPOJ以示例中的一个*不同*数字序列进行测试。 http://www.spoj.com/problems/TEST/ –