求解。
题目是这样的:询问员工一周上了多少小时班,一小时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]
----------------解决方案--------------------------------------------------------
我也做不到,有人愿意出手相助吗
----------------解决方案--------------------------------------------------------