2017-10-08 80 views
2

我希望程序不斷要求用戶輸入另一個字母,直到輸入'y'或'n'。 while循環無法正常工作。 這是我的代碼到目前爲止:如何保持程序循環直到輸入'y'或'n'

#include<stdlib.h> 

int main(void) 
{ 
    char answer; 

    printf("Please enter a letter: "); 
    scanf("%c", &answer); 

    while (answer!= 'y' || answer!= 'n') 
    { 
     printf("Please enter another letter:"); 

     scanf("%c", &answer); 

    } 

    printf("You entered either yes or no\n"); 

     system("pause"); 
     return 0; 
} 
+2

'answer!='y'||答案!='n''總是如此。 – melpomene

+0

想一想你的情況的邏輯。 –

+2

此外,當您修復循環中的'scanf'調用以讀取字符時,請在格式字符串中添加前導空格以跳過上一次調用中輸入緩衝區中留下的換行符。 –

回答

1

這裏是一個固定的版本。請注意包括stdio.h以及修復||&&以及"%c"之前的空間爲" %c"

#include <stdlib.h> 
#include <stdio.h> 

int main(void) 
{ 
    char answer; 
    printf("Please enter a letter: "); 
    scanf("%c", &answer); 
    while (answer != 'y' && answer != 'n') 
    { 
     printf("Please enter another letter:"); 
     scanf(" %c", &answer); 
    } 
    printf("You entered either yes or no\n"); 
    system("pause"); 
    return 0; 
} 
+0

但是,當編譯器要求我第二次輸入該字母時,它會因爲某種原因在屏幕上不停地循環,而不會在屏幕上停止 –

+0

@ DvR_109在此處有效。 – Annabelle

+0

是的,它的工作原理,謝謝你的幫助! –

1
while (answer!= 'y' || answer!= 'n') 

應該

while (answer!= 'y' && answer!= 'n') 

爲第一條件始終是人物在你answer變真。

+0

但是,當我這樣做時,編譯器要求我第二次輸入一個字母,並且屏幕不斷循環 –

+0

@ DvR_109您是否仍在代碼中使用'%d'? – melpomene

+0

不,我不再使用它了,我只是在輸入 –