我有一个奇怪的问题。尝试使用if语句和do-while循环来验证我的条件,如果char变量不等于'c'和'f',但是当我选择'c'或'C'或'f'或'F'仍然显示“错误的选择”跟随不起作用的部分。当我输入“c”时,我跟踪打印变量(正如您可以看到printf()
代码所示)我可以看到程序接受“c”但仍显示为错误输入。
我已经致电#include<stdio.h>
和#include<ctype.h>
了。
有人可以帮帮我吗?
char choice;
do
{
printf("\nChoose between Celsius (c) or for Fahrenheit (f):");
scanf(" %c*%c", &choice);
//printf("\nchoice1: %c", choice);
choice = tolower(choice);
//printf("\nchoice2: %c", choice);
if(choice != 'c' || choice != 'f')
printf("\nWrong choice!!");
}while(choice!='c' || choice!='f');
答案 0 :(得分:3)
无论选择是什么,它都不等于c
或不等于f
。如果它等于c
,则它不等于f
。如果它等于f
,则它不等于c
。所以你的两个条件都是真的。
您想要choice != 'c' && choice != 'f'
。
答案 1 :(得分:3)
if(choice != 'c' || choice != 'f')
对于所有choice
,都会生效,它应该是
if(choice != 'c' && choice != 'f')
答案 2 :(得分:0)
校正:
if(choice != 'c' && choice != 'f')
printf("\nWrong choice!!");