2015-10-06 128 views
-4

這個問題是關於SPOJ教程問題:爲什麼不能使用此代碼?

你的程序是使用蠻力的方法,以找到答案生命,宇宙以及一切。更確切地說...重寫從輸入到輸出的小數字。在讀入數字42後停止處理輸入。輸入處的所有數字都是一位或兩位數的整數。

我想在沒有if-else語句的情況下運行該程序,但該程序不起作用。有人可以告訴我我做錯了什麼嗎?

#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
    int i; 

    while (i != 42) 
    { 
    putchar(i); 
    i = getchar(); 
    } 

    exit(0); 
} 
+2

'i'在第一次迭代期間未初始化 - 其值爲* indeterminate *。 –

+0

在得到i的值等於42後,程序是否應該檢測退出語句? – shikhar

+1

42不是一個單獨的字符 –

回答

1

下面是一個快速和骯髒的方式來獲得你想要的結果。

由於您希望用戶輸入號碼(由多個字符組成),因此您需要使用scanf()而不是getchar()

scanf()的文檔http://www.cplusplus.com/reference/cstdio/scanf/

#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
    int i = 0; 

    while (i != 42) 
    { 
    scanf("%d", &i); 
    printf("You have entered : %d\n", i); 
    } 

    printf("You have successfuly entered 42!\n"); 
    exit(0); 
} 

希望這有助於。

+0

我不認爲你應該爲在線挑戰提供正確的答案,而你沒有! –

相關問題