[英]C programming issue
我创建了一个简单的猜谜游戏。 选择一个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
语句部分完全断开 ,并且是一个独立的块,无论如何执行。
如果必须将条件放在此处以提高可读性(并且将是==
而不是=
),则可以执行以下操作:
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");
}
您无需检查“温度”的两个范围(上下),因为已经检查了内部范围。
else (number = 51);
{
printf("Correct!\n");
}
可以重写为
else
{
number = 51;
}
{
printf("Correct!\n");
}
因此,无论您的电话号码是什么, printf("Correct!\\n");
被执行。
它可以像
else
{
printf("Correct!\n");
}
从else语句中删除条件。
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
{
printf("Correct!\n");
}
return 0;
}
您的代码说:如果所有if语句都不满足,则为number分配51。 然后始终打印“正确!\\ n”。
在最后的else语句中,您应该使用else if(number == 51){...}或
else
{
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.