尝试在“ PayInput”中调用函数“ TaxInput”,以便我的税金和净工资可以与每个员工的个人资料一起打印。相反,它在最后一位雇员的输出之后打印所有“税”和“净工资”。我尝试用参数在“ PayInput”中调用它,但是它不能编译。如果我删除参数,那么它将完全跳过该功能,并且根本不打印税款或netPay。请参见以下内容:
Pay to: Employee1
Hours worked: 45.00
Hourly rate: $1.00
Gross pay: $52.50
Base pay: $45.00
Overtime pay: $7.50
Pay to: Employee2
Hours worked: 45.00
Hourly rate: $1.00
Gross pay: $52.50
Base pay: $45.00
Overtime pay: $7.50
Taxes paid: $10.50
Taxes paid: $10.50
我的代码:
#include <stdio.h>
void PayInput(char empNames[5][32], float empHours[], float empRates[],
float overtime[], float overtime_pay[], float gross[],
float basepay[], float netPay[], float tax[])
{
for (int i = 0; i < Times; i++)
{
printf("\n\nPay to: %s \n", empNames[i]);
printf("Hours worked: %.2f \n", empHours[i]);
printf("Hourly rate: $%.2f \n", empRates[i]);
if (empHours[i] > 40)
{
overtime[i] = empHours[i] - 40;
overtime_pay[i] = overtime[i] * (empRates[i] * 1.5);
printf("Gross pay: $%.2f \n", gross[i] = empHours[i] *
empRates[i] + overtime_pay[i]);
printf("Base pay: $%.2f \n", basepay[i] = empHours[i]
* empRates[i]);
printf("Overtime pay: $%.2f \n", overtime_pay[i]);
}
else
{
printf("Gross income: $%.2f \n", gross[i] =
empHours[i] * empRates[i]);
printf("Base pay: $%.2f \n", basepay[i] = empHours[i]
* empRates[i]);
}
}
}
void TaxInput(float gross[], float tax[], float netPay[])
{
for (int i = 0; i < Times; i++)
{
tax[i] = gross[i] * 20 / 100;
printf("Taxes paid: $%.2f \n", tax[i]);
netPay[i] = gross[i] - tax[i];
printf("Net Pay: $%.2f \n", netPay[i]);
}
}
float TotalGross=0;
void allGross(float gross[])
{
for (int i = 0; i < Times; i++)
{
TotalGross += gross[i];
}
printf("Total paid to employees: $%.2f", TotalGross);
}
int main()
{
char empNames[5][32];
float empRates[5], empHours[5], overtime[5], overtime_pay[5],
gross[5], basepay[5], tax[5], netPay[5];
NameInput(empNames, empHours, empRates);
printf("\n\n-------------------------------------------\n");
printf("-------------------------------------------\n");
PayInput(empNames, empHours, empRates, overtime, overtime_pay, gross,
basepay, tax);
TaxInput(gross, tax, netPay);
printf("\n\n");
allGross(gross);
printf("\n\n");
}
最佳答案
它在最后一位雇员的输出之后打印所有“税”……。
当然是这样,因为您现在有了功能PayInput()
可以循环打印所有Times支付数据,而功能TaxInput()
则可以循环打印所有Times税收数据。鉴于这种不切实际的程序结构,最简单的解决方法是通过删除行来合并两个功能
}
}
void TaxInput(float gross[], float tax[], float netPay[])
{
for (int i = 0; i < Times; i++)
{
只打电话
PayInput(empNames, empHours, empRates, overtime, overtime_pay, gross,
basepay, netPay, tax);
在
main()
中。除此之外,评论者关于使用结构的建议也值得考虑。
关于c - 如何在带有参数的函数中调用函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57130511/