1

我有一个奇怪的问题。尝试使用 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');
4

3 回答 3

3

无论选择是什么,都将不等于c或不等于f。如果等于c,则不等于f。如果等于f,则不等于c。因此,您的两个条件都将始终为真。

你想要choice != 'c' && choice != 'f'

于 2013-10-02T16:40:53.823 回答
3
if(choice != 'c' || choice != 'f')

结果对所有人都是正确的choice,应该是

if(choice != 'c' && choice != 'f')
于 2013-10-02T16:41:36.167 回答
0

更正:

if(choice != 'c' && choice != 'f')
      printf("\nWrong choice!!");
于 2013-10-02T17:25:33.997 回答