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

C语言工资计算程序输出始终为0的问题排查(保留int变量)

解决C语言工资计算程序中总收入等变量始终为0的问题

问题根源

核心问题是未正确读取输入的工作时长hrs,或是计算逻辑未基于hrs完成有效赋值,导致gross、tax、pymt始终保持默认初始值0。

修正后的完整代码

#include <stdio.h>
#include <stdlib.h>

#define bsc 12.00
#define t300 0.15
#define t150 0.20
#define t_rest 0.25
#define OT 40

int main() {
    int hrs;
    double gross, tax, pymt;

    // 读取用户输入的工作时长
    printf("请输入工作时长:");
    scanf("%d", &hrs);

    // 计算总收入
    if (hrs <= OT) {
        gross = hrs * bsc;
    } else {
        // 正常工时工资 + 加班工时工资(1.5倍时薪)
        gross = OT * bsc + (hrs - OT) * bsc * 1.5;
    }

    // 计算税额
    if (gross <= 300) {
        tax = gross * t300;
    } else if (gross <= 450) {
        tax = 300 * t300 + (gross - 300) * t150;
    } else {
        tax = 300 * t300 + 150 * t150 + (gross - 450) * t_rest;
    }

    // 计算税后工资
    pymt = gross - tax;

    // 输出结果
    printf("总收入:%.2f美元\n", gross);
    printf("税额:%.2f美元\n", tax);
    printf("税后工资:%.2f美元\n", pymt);

    return 0;
}

关键修复说明

  1. 正确读取输入:使用scanf("%d", &hrs)读取int类型的工作时长,必须传入hrs的地址&hrs,否则无法修改变量值。
  2. 完善总收入计算:区分正常工时(≤40小时)和加班工时(>40小时),基于hrs完成计算,确保gross被正确赋值。
  3. 阶梯税额计算:按照税率规则分三段计算税额,覆盖所有收入区间。
  4. 变量赋值全覆盖:确保所有分支逻辑都能对gross、tax、pymt完成赋值,避免出现未初始化的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:00:55