为什么我的代码在运行后显示空白?

时间:2019-12-29 20:21:55

标签: c

我是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;
}

2 个答案:

答案 0 :(得分:5)

这是因为调用\n的结尾处有scanf ---这要求它读取空白,直到空白块结束(即非空白字符)为止。只需移除\n

另外要注意的是,您在if语句的代码中缺少大括号({})。

答案 1 :(得分:1)

问题出在这一行:

<Project>

  <PropertyGroup>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

它应该是:

scanf("%f\n",&hrs);

修复代码,同时添加缺少的花括号:

scanf("%f",&hrs);
相关问题