2
#include <stdio.h>

int main ()
{
    char odd, even, answer;
    int x = -16;
    printf("Choose, even or odd?");
    scanf("%c", &answer);
    if (answer == odd)
    {
        while (x < 15)
        {
            x++;
            if (!(x % 2 == 1) && !(x % 2 == -1))
                continue;
            printf("%d\n", x);
        }
        printf("Look! Odd numbers!\n");
        return 0;
    }
    else if (answer == even)
    {
        while (x < 15)
        {
            x++;
            if ((x % 2 == 1) && (x % 2 == -1))
                continue;
            printf("%d\n", x);
        }
        printf("Look! Even numbers!\n");
        return 0;
    }
    else
    {
        printf("That's not a valid response");
        return 0;
    }
}

申し訳ありませんが、私はこれが初めてで、問題が発生しました。

出力は常に「else」オプションになります。

if および else if のブール値で何が間違っていますか?

4

4 に答える 4

2

変数を初期化する必要があります。現在、有用なものは何も含まれていません。ユーザーに「偶数」の場合は「e」、「奇数」の場合は「o」と入力させたい場合は、関数の最初の行を次のように置き換えます。

char odd = 'o', even = 'e', answer = '\0';
于 2013-08-29T02:55:47.973 に答える
1

問題は、引用符 ('...') が抜けていることだと思います。また、タイプ char は「A」などの文字であり、「odd」などの単語にすることはできません。したがって、ユーザーは、"odd and "even" という文字列ではなく、奇数の場合は 'o'、偶数の場合は 'e' などの文字を入力する必要があります。

ジェイソンも述べたように、問題を解決するには奇数と偶数を初期化する必要があります

于 2013-08-29T02:50:46.600 に答える
0

引用符を覚えておいてください!

if (answer == "odd")
{
DOwhatever
}
于 2013-08-29T02:49:35.100 に答える
0

文字と文字ではなく、文字列と文字列を比較する必要があります (これは、ユーザーに「偶数」または「奇数」という単語を入力してもらいたいと想定しています)。また、元のコードでは、oddevenは未定義の変数です。文字列ライブラリが含まれていることを確認してください。

#include <string.h>

次に、次のようなことを行います。

char answer[5];
int x = -16;
printf("Choose, even or odd?");
fgets(&answer, 5, stdin);

if (strncpy(answer, "odd", sizeof answer) == 0)
{
    // ...
}
else if (strncpy(answer, "even", sizeof answer) == 0)
{
    // ...
}
else
{
    // ...
}

e代わりに、ユーザーに 1 文字 (またはo) を入力してもらいたい場合は、Jason Coco の answerをご覧ください。

于 2013-08-29T02:56:21.050 に答える