C语言薪资计算程序未算出Deduction与Net Income问题咨询
问题分析与代码修正
你的程序无法输出扣除额和净收入,核心是3处关键错误:
错误点1:printf滥用额外参数
所有输入提示的printf语句都多传了变量地址(比如printf("ENTER SALARY :", &salary);),printf的第一个参数是格式字符串,无占位符时不需要额外参数,这属于冗余代码。
错误点2:结果输出缺少格式占位符
最后输出扣除额和净收入时,printf没加%d整数输出格式,还错误传递了变量地址,导致程序无法打印计算后的数值。
错误点3:净收入计算逻辑错误
netincome = (salary = deduction)是赋值操作,会把扣除额覆盖到薪资变量,再赋值给净收入,完全违背“总净收入=薪资-扣除额”的逻辑,应该用减法运算符-。
修正后的代码
#include <stdio.h> #include <stdlib.h> int main() { int withholdingtax; int sss_contribution; int salary; int netincome; int deduction; printf("ENTER SALARY :"); scanf("%d", &salary); printf("\n"); printf("ENTER WITHHOLDING TAX :"); scanf("%d", &withholdingtax); printf("\n"); printf("SSS CONTRIBUTION :"); scanf("%d", &sss_contribution); printf("\n"); deduction = sss_contribution + withholdingtax; netincome = salary - deduction; printf("TOTAL DEDUCTION : %d\n", deduction); printf("TOTAL NET INCOME : %d\n", netincome); return 0; }
修正说明
- 移除printf中多余的变量地址参数
- 输出结果时添加
%d占位符,传入变量本身而非地址 - 将净收入计算的赋值操作改为减法运算
salary - deduction
内容的提问来源于stack exchange,提问作者Dexter Hecali
相关产品推荐
相关产品推荐

