1

奇妙な問題があります。char 変数が 'c' および 'f' と等しくない場合に、if ステートメントと do-while ループを使用して条件を検証しようとしましたが、'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')

結果はすべて true にchoiceなります。

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