我不明白爲什麼他們不接受此作爲解決方案,他們說了一個錯誤的答案: -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;
}
我不明白爲什麼他們不接受此作爲解決方案,他們說了一個錯誤的答案: -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到達問題陳述狀態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/ –