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

C语言初学者求助:项目费用计算代码结果与预期不符

问题排查与修正

你的代码存在三个核心问题,直接导致计算结果错误:

1. 第一个条件判断逻辑颠倒

你期望「项目费用低于10000时按10%收费」,但代码里第一个if写的是projcost >=10000——这直接把触发条件搞反了,低于10000的数值根本不会进入这个分支。

2. else if的逻辑运算符错误

projcost >=10001 || projcost <=100000使用了逻辑或||,这意味着所有小于等于100000的数值都会进入这个分支(因为projcost <=100000对绝大多数输入都成立),完全不符合「10000到100000之间」的需求。正确应该用逻辑与&&,并且调整边界值为projcost >=10000 && projcost <=100000。

3. else分支的语法错误

else (projcost >= 100001);末尾的分号是致命错误:它会让else的逻辑提前结束,后面的大括号变成独立代码块——不管前面的分支是否执行,这段代码都会跑一遍。比如你输入7000时,最终会执行6000 + ((7000 - 100000) * 0.03),算出3210的错误结果。


修正后的代码

#include <stdio.h>

int main()
{
    float fees;
    float projcost;
    float num;

    printf("Please enter the cost of your project\n");
    scanf("%f", &projcost);

    if (projcost < 10000)
    {
        num = 0.10 * projcost;
        fees = num;
    }
    else if (projcost >= 10000 && projcost <= 100000)
    {
        num = 1000 + ((projcost - 10000) * 0.05);
        fees = num;
    }
    else
    {
        num = 6000 + ((projcost - 100000) * 0.03);
        fees = num;
    }

    printf("\nYour fees have totaled to %.2f", fees);
    return 0;
}

测试输入7000时,程序会进入第一个分支,计算7000 * 0.1 = 700,得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 06:47:38