我创建了一个简单的猜谜游戏。选择一个 0 到 100 之间的数字,根据您输入的数字,程序将输出热、暖、冷或正确!。我选择作为正确答案的数字是 51。我的程序编译并运行但始终输出正确!对于我输入的每个值。如果您决定提供帮助,感谢您的帮助。
int main(void)
{
int number, answer;
answer = 51;
printf("Enter a number between 0 and 100:\n");
scanf("%d", &number);
if ((number > 51) && (number <= 56) || (number < 51) && (number >= 46))
{
printf("Hot\n");
}
else if ((number > 56) && (number <= 66) || (number < 46) && (number >= 36))
{
printf("Warm\n");
}
else if ((number > 66) && (number <= 100) || (number <36) && (number >= 0))
{
printf("Cold\n");
}
else if ((number > 100) || (number < 0))
{
printf("Error number has to be between 0 and 100 - re run\n");
}
else (number = 51);
{
printf("Correct!\n");
}
system ("pause");
return 0;
}
最佳答案
这个小片段:
else (number = 51);
{
printf("Correct!\n");
}
实际上等同于:
else
(number = 51);
//=======================
{
printf("Correct!\n");
}
第一部分是 else
子句,如果被激活,会将 number
设置为 51
。
第二部分与 if
语句部分完全分离,是一个独立的 block ,无论如何都会执行。
如果您必须将条件放在那里以提高可读性(它将是==
而不是=
),您可以这样做:
else // (number == 51)
{
printf("Correct!\n");
}
顺便说一句,您可以通过从具体开始并转向一般来使您的代码更短且更易读,例如(只需替换 if
语句):
if (number == 51)
printf ("Correct!\n");
else if ((number >= 46) && (number <= 56))
printf ("Hot\n");
else if ((number >= 36) && (number <= 66))
printf ("Warm\n");
else if ((number >= 0) && (number <= 100))
printf ("Cold\n");
else
printf ("Error, number has to be between 0 and 100 - re run\n");
}
您不需要检查“温度”的两个范围(上方和下方),因为内部范围已经已经检查过了。
关于C编程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29506546/