c if or elseif boolean

时间:2013-08-29 02:46:37

标签: c if-statement boolean

#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 个答案:

答案 0 :(得分:2)

您需要初始化变量。现在他们没有任何有用的东西。如果您希望用户为“偶数”键入“e”而为“奇数”键入“o”,请将函数中的第一行替换为:

char odd = 'o', even = 'e', answer = '\0';

答案 1 :(得分:1)

我认为问题在于你错过了引号('...')。此外,char类型是一个字符,如'A',不能像'odd'这样的单词。因此,用户应该输入一个字符,如'o'表示奇数,'e'表示偶数,而不是字符串“奇和”甚至“

正如Jason所说,你必须初始化奇数甚至是解决问题

答案 2 :(得分:0)

记住引号!

if (answer == "odd")
{
DOwhatever
}

答案 3 :(得分: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's answer