当前位置: 代码迷 >> C语言 >> 求解。
  详细解决方案

求解。

热度:356   发布时间:2008-05-18 16:22:43.0
求解。
题目是这样的:
询问员工一周上了多少小时班,一小时10元。询问雇员是否加班,如果是,加班费为15元。计算雇员的应缴税并在总工资扣除。假定报酬小于等于300元,扣10%税,
如果大于500小于等于1000,扣15%税,大于1000,扣25%税。计算雇员总收入和纯收入。

这道题我的锥形是这样的,不过总是错误。我打算if语句和switch语句一起使用。希望有人指导出我程式错误之处
#include <stdio.h>
main()
{
  float hour,m=10,ot=15;
  float sum,sum1,sum2,sum3,s;
  char y;
   s=hour*m;
   sum=hour*(m+ot);
   sum1=sum*0.1;
   sum2=sum*0.15;
   sum3=sum*0.25;
  printf("请输入你的工时:\n");
   scanf("%d",&hour);
  printf("是否加班?y or n\n");
switch(y)
{
  case 'y':
             if(sum<=300)
             printf("你的收入为%f\n",sum1);
             {
              if(sum>500&&sum<=1000)
             printf("你的收入为%f\n",sum2);
              if(sum>1000)
             printf("你的收入为%f\n",sum3);
             }
   case 'n' : printf("你的收入为%f\n",s);
   default : printf("error");      
}
}
搜索更多相关的解决方案: 求解  

----------------解决方案--------------------------------------------------------
y    n
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
给你提示吧
像这种题用if的话
应该用if嵌套的
像if
else if
else if
else if
如果是switch的话更简单点,先用求余把条件变成0-9以内的整数
再进行写switch条件
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <conio.h>    //在TC下这个可以不包含

main()
{
    int hour = 0;
    printf("你一周上了多少小时班?\n");
    scanf("%d", &hour);
    printf("是否加班?y=是, n=否\n");
    char sel = getch();
    
    float total = 0.f;
    switch(sel)
    {
    case 'y':
        total = float(hour) * 10.f + 15.f;
        break;
    case 'n':
        total = float(hour) * 10.f;
        break;
    default:
        printf("出错啦~~\n");
        return;
    }
    float tariff = 0;
    if(total <= 300.f) tariff = total * 0.1f;
    else if(total > 300.f && total <=1000.f) tariff = total * 0.15f;
    else tariff = total * 0.25;
    
    printf("税前纯工资: %.2f, 应缴%.2f元税, 税后工资 %.2f\n", total, tariff, total - tariff);
}

让我们为生者祝福,为死者祈祷!

[[it] 本帖最后由 flyue 于 2008-5-18 19:41 编辑 [/it]]
----------------解决方案--------------------------------------------------------
不行啊,我也想了这题目,但也得不出正确结果!代码如下:
#include <stdio.h>
main()
{
  float hour,m=10.0,ot=15.0;
  float sum,sum1,sum2,sum3,s;
  char l;
  printf("gongshi\n");
  scanf("%f",&hour);
  s=hour*m;
  sum=hour*m;
  sum1=sum*0.9;
  sum2=sum*0.85;
  sum3=sum*0.75;
  printf("jiaban?y or n\n");
  scanf("%c",&l);
  switch(l)
  { case 'y':
                sum+=ot;
                break;
    case 'n':
                printf("s=%f\n",s);
                break;           
                default:printf("error!");
  }
  if(sum<=300) printf("shouru=%f\n",sum1);
  if(sum>=500&&sum<=1000) printf("shouru=%f\n",sum2);
  if(sum>1000) printf("shouru=%f\n",sum3);
}
----------------解决方案--------------------------------------------------------
如果我没有猜错的话,题目描述本身就错了

[color=white]
----------------解决方案--------------------------------------------------------
怎么说?我上面的代码算不出正确结果来!加班不加班都没把那15块钱加进去!
----------------解决方案--------------------------------------------------------
题目的原意肯定是像收税那样,分段计算,而非像以上代码那般

[color=white]
----------------解决方案--------------------------------------------------------
我也做不到,有人愿意出手相助吗
----------------解决方案--------------------------------------------------------
  相关解决方案