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”之类的字符,不能是诸如“奇数”之类的词。因此,用户应该输入一个字符,例如“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
{
    // ...
}

相反,如果您希望用户只需输入单个字符(eo),请查看Jason Coco 的答案

于 2013-08-29T02:56:21.050 回答