【发布时间】:2019-12-29 20:21:55
【问题描述】:
我是 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;
}
【问题讨论】:
-
这能回答你的问题吗? using scanf("%d ") with a space after the %d
-
这不是 Python。
if语句周围需要花括号({和})。 -
我还建议稍微重构一下您的代码;也许只是计算
grossPay等。 if 语句中的变量,那么函数末尾只有 3 个printf调用。 -
你的格式也很糟糕。您应该在大多数运算符(
+、-、/、*[但在取消引用指针时]、%和op=等效项)之前和之后放置空格。 -
我还要在逗号后面加空格。
标签: c