2015-07-03 78 views
-4

我不明白爲什麼他們不接受此作爲解決方案,他們說了一個錯誤的答案: -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; 
} 
+2

這可能是一個驚喜,但並不是每個人都知道「SPOJ ...」是指什麼(除了向DouglasNoëlAdams致敬)。所以,請用**全部**相關信息填寫您的問題。 – Olaf

+0

閱讀答案和評論,你的程序給出了SPOJ問題定義中給出的例子的正確輸出(除了提示),因爲你打印'88'然後停止是因爲'88'不小於'42'。但是您沒有仔細閱讀問題陳述,並且您的提交將由SPOJ以示例中的一個*不同*數字序列進行測試。 http://www.spoj.com/problems/TEST/ –

回答

3

兩個錯誤:

  1. 刪除此行 - printf("Input:- \n");
  2. 問題你必須在42之前打印。如果42來了,你必須打破。

像這樣:

一切,你應該保持對印刷數字,直到42到達問題陳述狀態
if(n!=42) 
    printf("%d\n",n); 
else 
    break; 
1

第一。

1)如果第一個數字是42本身呢?你的代碼將打印反正

2)printf("Input:- \n");刪除提供此line.This只是爲了展示一下輸入is.You沒有打印這個。

3)while(val<42)val可以比42不一定小於42

一個好方法是嘗試一些自己的測試用例,並比較預期輸出的輸出的任何其他。

0

爲什麼42以上的號碼不允許?使用while(1),當42中斷。 這個問題已經回答在Life, the Universe, and Everything

+0

該鏈接不能很好地工作。 – unwind

+0

你說得對。現在是對的。 –

0

我認爲你誤解了問題,當輸入是42或更大,你必須停止處理,但問題實際上是當輸入是確切的42停止處理。 儘管事實上你知道你的代碼有一個缺陷,當輸入是42時,你將首先打印它,然後你的while while循環結束。