我是C语言的初学者,并且开始自我学习。 我的代码基本上是尝试计算工人的每周工资 我必须输入编号。用户每周的工作时间。 这是我正在解决的问题
在此挑战中,您将创建一个计算您的C程序 每周工资。
该程序应要求用户结束某项工作的小时数 通过键盘一周
程序应将总薪水,税金和 净工资。
应做出以下假设:
- 基本工资= $ 12.00 /小时
- 加班(超过40小时)=时间半
税率:
- 首$ 300的15%
- 接下来的$ 150美元中的20%
- 其余25%
运行代码时,它要求我输入编号。进入后仅显示空格的小时数 我知道它很长很简单,但是我仍然遇到问题
非常感谢帮助
#include <stdio.h>
int main(void)
{
float hrs=0;
float grossPay,taxes,netPay;
float bpr=12.00;
printf("The number of hours worked in a week: ");
scanf("%f\n",&hrs);
if (hrs<=40)
grossPay=(hrs*bpr);
printf("Gross Pay:%f\n",grossPay);
if (grossPay<=300)
taxes=0.15*grossPay;
netPay=grossPay-taxes;
printf("Total taxes:%f\n",taxes);
printf("Net Pay:%f\n",netPay);
if (grossPay>300 && grossPay<=450)
taxes=0.15*300+0.20*(grossPay-300);
netPay=grossPay-taxes;
printf("Total taxes:%f\n",taxes);
printf("Net Pay:%f\n",netPay);
if (grossPay>450)
taxes=0.15*300+0.20*150+0.25*(grossPay-450);
netPay=grossPay-taxes;
printf("Total taxes:%f\n",taxes);
printf("Net Pay:%f\n",netPay);
if (hrs>40)
grossPay=40*bpr+18.00*(hrs-40);
printf("Gross Pay:%f\n",grossPay);
if (grossPay<=300)
taxes=0.15*grossPay;
netPay=grossPay-taxes;
printf("Total taxes:%f\n",taxes);
printf("Net Pay:%f\n",netPay);
if (grossPay>300 && grossPay<=450)
taxes=0.15*300+0.20*(grossPay-300);
netPay=grossPay-taxes;
printf("Total taxes:%f\n",taxes);
printf("Net Pay:%f\n",netPay);
if (grossPay>450)
taxes=0.15*300+0.20*150+0.25*(grossPay-450);
netPay=grossPay-taxes;
printf("Total taxes:%f\n",taxes);
printf("Net Pay:%f\n",netPay);
return 0;
}
我为此做了一个替代代码。哪个效率更高?
#include <stdio.h>
#define PAYRATE 12.00
#define TAXRATE_300 .15
#define TAXRATE_150 .20
#define TAXRATE_REST .25
#define OVERTIME 40
int main()
{
int hrs = 0;
double grossPay = 0.0;
double taxes = 0.0;
double netPay = 0.0;
printf("The number of hrs worked this week: ");
scanf("%d", &hrs);
if (hrs <= 40)
grossPay = hrs * PAYRATE;
else
{
grossPay = 40 * PAYRATE;
double overTimePay = (hrs - 40) * (PAYRATE * 1.5);
grossPay += overTimePay;
}
if (grossPay <= 300)
{
taxes = grossPay * TAXRATE_300;
}
else if(grossPay > 300 && grossPay <= 450)
{
taxes = 300 * TAXRATE_300;
taxes += (grossPay - 300) * TAXRATE_150;
}
else if (grossPay > 450)
{
taxes = 300 * TAXRATE_300;
taxes += 150 * TAXRATE_150;
taxes += (grossPay - 450) * TAXRATE_REST;
}
netPay = grossPay - taxes;
printf("Your gross pay this week is: %.2f\n", grossPay);
printf("Your taxes this week is: %.2f\n", taxes);
printf("Your net pay this week is: %.2f\n", netPay);
return 0;
}
答案 0 :(得分:5)
这是因为调用\n
的结尾处有scanf
---这要求它读取空白,直到空白块结束(即非空白字符)为止。只需移除\n
。
另外要注意的是,您在if语句的代码中缺少大括号({
,}
)。
答案 1 :(得分:1)
问题出在这一行:
<Project>
<PropertyGroup>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
它应该是:
scanf("%f\n",&hrs);
修复代码,同时添加缺少的花括号:
scanf("%f",&hrs);