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; }
关键修复说明
- 正确读取输入:使用
scanf("%d", &hrs)读取int类型的工作时长,必须传入hrs的地址&hrs,否则无法修改变量值。 - 完善总收入计算:区分正常工时(≤40小时)和加班工时(>40小时),基于
hrs完成计算,确保gross被正确赋值。 - 阶梯税额计算:按照税率规则分三段计算税额,覆盖所有收入区间。
- 变量赋值全覆盖:确保所有分支逻辑都能对
gross、tax、pymt完成赋值,避免出现未初始化的情况。
内容的提问来源于stack exchange,提问作者chummer
相关产品推荐
相关产品推荐

