#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的布尔值,我做错了什么?
答案 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)
您需要将字符串与字符串进行比较,而不是将字符与字符进行比较(假设您希望用户键入“偶数”或“奇数”字样)。此外,在原始代码中,odd
和even
是未定义的变量。确保包含字符串库:
#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
或o
),请查看Jason Coco's answer。