繁体   English   中英

C编程问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM