【发布时间】:2017-09-12 04:00:13
【问题描述】:
我正在编写工资单检查代码。一个函数询问用户工作时间和小时工资。另一个函数接受小时数和费率作为参数并计算并返回总工资。然后将 Grosspay 发送到一个函数,该函数将计算并返回 payrolltax(.22)。然后调用一个函数,该函数将接受 Grosspay 和 tax 作为参数并返回 netpay。最后将所有数据发送到将显示所有值(总小时数、小时工资率、总工资、税金和净工资)的函数。我的 netpay 显示我 0,而 tax 显示错误答案。谁能告诉我哪里出错了?
/* Payroll Check */
#include <stdio.h>
float askhoursworked();
float askhourlyrate();
float calculategrosspay(float hours,float rate);
float calculatepayrolltax(float grosspay);
float calculatenetpay(float grosspay,float tax);
float displayallvalues(float ,float ,float,float ,float );
int main()
{
float hours;
float rate;
float grosspay;
float tax;
float netpay;
float values;
hours=askhoursworked();
rate= askhourlyrate();
tax= calculatepayrolltax( grosspay);
netpay= calculatenetpay( grosspay,tax);
grosspay=calculategrosspay( hours, rate);
values= displayallvalues( hours, rate, tax, grosspay, netpay);
return 0;
}
float askhoursworked()
{
float hours;
printf("\n Please enter hours worked \t");
scanf("%f",&hours);
return hours;
}
float askhourlyrate()
{
float rate;
printf("\n Please enter your payrate \t");
scanf("%f",&rate);
return rate;
}
float calculategrosspay(float hours,float rate)
{
float grosspay;
grosspay=hours*rate;
return grosspay;
}
float calculatenetpay(float grosspay,float tax)
{
float netpay;
netpay=grosspay-tax;
return netpay;
}
float calculatepayrolltax(float grosspay)
{
float tax;
tax=grosspay*.22;
return tax;
}
float displayallvalues(float hours,float rate,float tax,float grosspay,float netpay)
{
printf("\n Your total hours are %.2f",hours);
printf("\n Your hourly rate %.2f",rate);
printf("\n Your grosspay is %.2f",grosspay);
printf("\n Your taxes are %.2f",hours);
printf("\n Your netpay is %.2f",netpay);
}
【问题讨论】:
-
格式不好 - 代码不易读取;(
-
在收到告诉您问题所在的答案后,不要修改代码来修复错误。
-
请注意,您声称
displayallvalues()将返回一个值,但事实并非如此。您永远不会使用将不存在的结果分配给的变量,但这并不能防止分配成为错误。该函数应定义为返回void,并且应删除values变量。还要注意,函数askhoursworked()应该用float askhoursworked(void)声明(并且最好定义)——同样askhourlyrate()。就目前而言,这些函数有一个声明,但没有原型(C 不是 C++,规则不同)。
标签: c