观察这段代码:
#include <stdio.h>
int main(void)
{
char choice;
printf("\n\nDo you want to play again (Y/N)? ");
scanf(" %c", &choice);
if (choice != 'Y' || choice != 'y' || choice != 'N' || choice != 'n')
{
printf("\n\nYou didn\'t enter a decision.");
}
return 0;
}
我希望printf()提示用户输入Y或N.scanf()将填充用户在变量 choice 中的输入。如果 choice 不等于Y,y,N或n,它将告诉用户他/她没有做出决定。然后,程序将结束。
然而,当我输入Y或N时,它打印出来了#34;你没有做出决定。&#34;只有在我不输入Y或N(小写或大写)时才会发生这种情况。
我甚至在转换字符前面放了一个空格,所以scanf()不会读取换行符(\ n)。
非常感谢任何帮助!
答案 0 :(得分:4)
更改
if (choice != 'Y' || choice != 'y' || choice != 'N' || choice != 'n')
到
if (choice != 'Y' && choice != 'y' && choice != 'N' && choice != 'n')
否则,您是否输入Y, y, N, n
或任何其他字符(Jonathan Leffler中的comment所指),if
中的表达式}将被评估为true
。
答案 1 :(得分:0)
你必须包括以下其他
#include <stdio.h>
int main(void)
{
char choice;
printf("\n\nDo you want to play again (Y/N)? ");
scanf(" %c", &choice);
if (choice != 'Y' || choice != 'y' || choice != 'N' || choice != 'n')
{
printf("\n\nYou didn\'t enter a decision.");
}
return 0;
}