2017-10-08 4 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

'答え!= '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

しかし、コンパイラが2回目に文字を入力するように要求すると、何らかの理由で画面に停止することなく連続的にループします。 –

+0

@ DvR_109ここでは、これが動作します。 – Annabelle

+0

はい、動作します、ありがとうございました! –

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

第一の条件として

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

する必要がありますanswer変数内のすべてのの文字がのために常にtrueです。

+0

しかし、私がそうすると、コンパイラは二度目の手紙を入力するように頼み、画面は繰り返しループし続けます –

+0

@ DvR_109あなたのコードでまだ '%d'を使用していますか? – melpomene

+0

いいえ私はそれをもう使用していません、私はちょうど入力ミスでそれを守った –

関連する問題