2013-10-31 158 views
0

因此,在我的代碼中,如果您低估或高估,您必須猜測一個數字。如何讓while循環返回到輸入以便輸入另一個數字?在if語句中使用while語句循環

#include <stdio.h> 

int main(int argc, const char * argv[]) 
{ 
    int number = 45; 

    printf("Please insert a number"); 
    scanf("%d", &number); 


    if (number == 45){ 
     printf("good job! You got the number right."); 
     return 0; 
    } 
    else if (number < 45){ 
     while (number < 45 || number > 45){ 
      printf("Your number is too low"); 
      return 1; 
     } 
    } 
    else if (number > 45){ 
     printf("Your number is too high!"); 
     return 1; 
    } 
} 
+0

'while(number!= 45)'... – 2013-10-31 22:36:52

+2

查看基本信息... – nouney

+1

那麼,你無法獲得* this *循環來循環其他任何地方。循環的主體是你包含在循環體中的東西。如果你想要在循環內部發生什麼事情,那麼......呃......我想你需要一個更大的循環。 – AnT

回答

1

只要把while (1)在你的代碼,並刪除錯誤地放在一個:

#include <stdio.h> 

int main(int argc, const char * argv[]) 
{ 
    while (1) { 
     int number = 45; 

     printf("Please insert a number"); 
     scanf("%d", &number); 


     if (number == 45){ 
      printf("good job! You got the number right."); 
      return 0; 
     } 
     else if (number < 45){ 
      printf("Your number is too low"); 
     } 
     else{ 
      printf("Your number is too high!"); 
     } 
    } 
} 

return被關閉程序。所以你不想在用戶沒有猜到你的號碼時再回來。
while (1)是僅當return 0啓動時(當玩家獲勝時)纔會退出的循環。

此外,您最後的else if是不需要的。將其替換爲else,因爲它是唯一剩下的情況。

+0

用這個代碼如果用戶輸入某個單詞,讓我們說「hi」,'scanf'不會修改'number',程序將會以「幹得好!你得到了正確的數字' – LihO

+0

這只是與問題無關。他顯然是在學習基礎知識,所以談論錯誤案例並不是一個真正的好方法。 – Jerska

+0

我想不出在他的地方做任何更好的事情比閱讀他正在使用的函數的文檔(以更好地理解代碼)並正確處理相關的返回代碼。 – LihO

1

用循環包裝你的代碼:

int number = 45; 

while (1) { 
    printf("Please insert a number"); 
    if (scanf("%d", &number) != 1) { 
     printf("not valid number, try again"); 
     continue; 
    } 
    if (number == 45){ 
     printf("good job! You got the number right."); 
     return 0; 
    } 
    if (number < 45){ 
     printf("Your number is too low"); 
     continue; 
    } 
    if (number > 45){ 
     printf("Your number is too high!"); 
     continue; 
    } 
} 

請注意,您也應該檢查的scanf返回值,以確定是否該號碼已被成功讀取。

+0

這工作!謝謝!我覺得自己是這裏所有其他評論的白癡。謝謝! –