You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言条件语句异常:部分变量越界时仍输出成功提示

问题分析

你的代码问题出在Delicious!的输出逻辑上——它属于thyme变量的条件分支,只要thyme在合规范围内,不管其他变量是否越界,这个else分支都会执行。这就导致当部分变量越界但thyme合规时,会同时输出错误提示和Delicious!。

修正方案

添加一个标志变量来跟踪所有变量是否都处于合规范围,最后统一判断是否输出Delicious!:

#include <stdio.h>

int main()
{
    float salt, pepper, garlic, thyme;
    // 标志变量:1表示全部合规,0表示存在越界变量
    int is_delicious = 1;

    printf("Lets cook!\n");
    printf("====================\n");
    printf("\n");
    printf("Amount of salt added? ");
    scanf("%f", &salt);
    printf("Amount of pepper added? ");
    scanf("%f", &pepper);
    printf("Amount of garlic added? ");
    scanf("%f", &garlic);
    printf("Amount of thyme added? ");
    scanf("%f", &thyme);

    if (pepper < 1.5)
    {
        printf("Needs more pepper\n");
        is_delicious = 0;
    }
    else if(pepper > 3.5)
    {
        printf("Too much pepper!\n");
        is_delicious = 0;
    }
    
    if(salt <5.5)
    {
        printf("Needs more salt\n");
        is_delicious = 0;
    }
    else if(salt > 13)
    {
        printf("Too salty!\n");
        is_delicious = 0;
    }

    if (garlic < 2)
    {
        printf("Needs more garlic\n");
        is_delicious = 0;
    }
    else if(garlic > 4)
    {
        printf("Too much garlic!\n");
        is_delicious = 0;
    }

    if (thyme < 0.5)
    {
        printf("Needs more thyme\n");
        is_delicious = 0;
    }
    else if(thyme > 1.25)
    {
        printf("Too much thyme!\n");
        is_delicious = 0;
    }
    
    // 所有变量检查完成后,统一判断是否输出Delicious
    if (is_delicious)
    {
        printf("Delicious!\n");
    }

    return 0;
}
关键改动说明
  1. 新增int is_delicious = 1;:初始假设所有变量都合规
  2. 每个变量越界的分支中,添加is_delicious = 0;:只要有一个变量越界,就将标志置为0
  3. 移除原thyme分支的else,改为最后统一判断标志变量:只有当所有变量都合规(标志为1)时,才输出Delicious!
测试验证
  • 部分变量越界(salt=15、pepper=5、garlic=3、thyme=1):输出Too much pepper!\nToo salty!,不再输出Delicious!
  • 全部变量越界:仅输出各越界提示
  • 全部合规:输出Delicious!

内容的提问来源于stack exchange,提问作者Amburkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:01:04