C编程问题

标签 c if-statement

我创建了一个简单的猜谜游戏。选择一个 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/

相关文章:

c - 如何从流中获取两个连续的字符?

if-statement - 如果条件在 Makefile 中,在目标中

r - 当遵守条件时如何在两个数据框之间粘贴值

c - If 语句不适用于 C 中的 char 数组元素

c - 为什么我的程序会给我多余的输出? C程序

c - C 中静态函数的声明和定义都需要 static 关键字吗?

c++ - 在 N 个未排序的数字中搜索给定值的最佳方法

Windows Server 2008 R2 (Windows 7) 上的命令提示符窗口优先级

java - if 与 if/else 语句?

c - 为什么编译器没有警告我空的 if 语句?