C语言薪资单程序输出全为0,代码与GPT一致却失效求助
C语言薪资单代码输出全0问题修复
你的代码核心问题是混淆了赋值运算符=和相等比较运算符==,同时错误使用逻辑与&&连接赋值操作,导致所有薪资相关变量根本没有被正确赋值,最终输出全0。
错误点详解:
- 你在if/else分支里写的
hra == 0.03 * bs是在判断hra和0.03*bs是否相等,而不是把0.03*bs的值赋给hra,正确写法应为hra = 0.03 * bs;。 - 用
&&连接多个操作是逻辑判断的用法,多个赋值语句需要用分号;分隔,而非&&。 - 计算
totalsalary时同样误用了==,需改为=。
修复后的代码:
#include <stdio.h> int main() { float bs, hra, ma, da, ta, tax, ub, totalsalary; printf("Enter basic salary: \n"); scanf("%f", &bs); if (bs < 15000) { hra = 0.03 * bs; ma = 0.02 * bs; da = 0.02 * bs; ta = 0.01 * bs; tax = 0.005 * bs; ub = 0.04 * bs; } else if (bs >= 15000 && bs <= 30000) { hra = 0.05 * bs; ma = 0.03 * bs; da = 0.04 * bs; ta = 0.02 * bs; tax = 0.02 * bs; ub = 0.04 * bs; } else { hra = 0.04 * bs; ma = 0.07 * bs; da = 0.03 * bs; ta = 0.03 * bs; tax = 0.03 * bs; ub = 0.1 * bs; } totalsalary = bs + hra + ma + da + ta - tax - ub; printf("\nSalary slip\n"); printf("House rent allowance: %.2f\n", hra); printf("Medical Allowance: %.2f\n", ma); printf("Daily Allowance: %.2f\n", da); printf("Traveling Allowance: %.2f\n", ta); printf("Tax: %.2f\n", tax); printf("Utility bills: %.2f\n", ub); printf("Total Salary is: %.2f\n", totalsalary); return 0; }
补充说明:
修复后代码将所有==替换为=,用分号分隔每个赋值操作,同时为了可读性把每个赋值单独成行,编译运行后就能得到正确的薪资计算结果。
内容的提问来源于stack exchange,提问作者Fatima Ismail
相关产品推荐
相关产品推荐

