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
相关产品推荐
相关产品推荐

