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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:12:46