我正在开设一个项目,让我计算总薪水,加班费和税后净工资。低于600美元的任何东西的税率为15%,超过600美元的税率为20%。我相信我的所有计算都是正确的;但是,当我运行该程序时,它给了我不正确的答案。当我输入45小时工资和15.25美元工资时,我应该得到724.38美元的总工资和659.26美元的净工资。相反,我将返回712.50美元的净工资和645.00美元的净工资,这是相当奇怪的。
#include<stdio.h>
int main(void){
int hoursWorked, hourlyWage;
float grossPay, netPay, overHours;
printf("Please input number of hours worked. ");
scanf(" %i", &hoursWorked);
printf("Please input your hourly wage. ");
scanf(" %i", &hourlyWage);
if(hoursWorked <= 40){
grossPay = hourlyWage * hoursWorked;
}
else{
if(hoursWorked > 40){
overHours = hoursWorked - 40;
grossPay = (overHours * (hourlyWage * 1.5)+ (hourlyWage * 40));
}
}
if(grossPay <= 600){
netPay = (grossPay - (grossPay * .15));
}
else{
if(grossPay > 600){
netPay = (grossPay - (600 * .15) + ((grossPay - 600) * .2));
}
}
printf("Your gross pay was $%.2f", grossPay);
printf("\nAnd your net pay was $%.2f after taxes", netPay);
return 0;
}
答案 0 :(得分:2)
int hoursWorked, hourlyWage;
15.25美元的工资
您的int
变量无法容纳15.25。 scanf
格式代码%i
不会读取小数。
因此,你所有的计算工资都是15,而不是15.25。
如果您已经完成了最简单的调试,无论是使用真正的调试器还是设置变量监视,或者只打印出每个变量的结果,您都可以自己轻松找到它。学会调试。