如何保持程序循环直到输入'y'或'n'
我希望程序不断要求用户输入另一个字母,直到输入'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;
}
这里是一个固定的版本。请注意包括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;
}
但是,当编译器要求我第二次输入该字母时,它会因为某种原因在屏幕上不停地循环,而不会在屏幕上停止 –
@ DvR_109在此处有效。 – Annabelle
是的,它的工作原理,谢谢你的帮助! –
while (answer!= 'y' || answer!= 'n')
应该
while (answer!= 'y' && answer!= 'n')
为第一条件始终是每人物在你answer
变真。
但是,当我这样做时,编译器要求我第二次输入一个字母,并且屏幕不断循环 –
@ DvR_109您是否仍在代码中使用'%d'? – melpomene
不,我不再使用它了,我只是在输入 –
'answer!='y'||答案!='n''总是如此。 – melpomene
想一想你的情况的逻辑。 –
此外,当您修复循环中的'scanf'调用以读取字符时,请在格式字符串中添加前导空格以跳过上一次调用中输入缓冲区中留下的换行符。 –