第七周 OJ总结<6>-求奖金总数

来源:互联网 发布:梦想成真软件系统 编辑:程序博客网 时间:2024/05/17 23:48


Copyright (c) 2016,

烟台大学计算机与控制学院 All ringts reserved.

文件名称:OJ总结<4>-求奖金总数

作 者:王兴振

完成日期:2016年10月20日

版 本 号:未知

题目描述:

  企业发放的奖金根据利润提成。利润低于或等于100000元的,

奖金可提10%;

利润高于100000元,低于200000元(100000<I≤200000)时,

低于100000元的部分按10%提成,高于100000元的部分,可

提成 7.5%;
200000<I≤400000时,低于200000元部分仍按上述办法提成,

(下同),高于200000元的部分按5%提成;
400000<I≤600000元时,高于400000元的部分按3%提成;

600000<I≤1000000时,高于600000元的部分按1.5%提成;
I>1000000时,超过1000000元的部分按1%提成。从键盘输入

当月利润I,求应发奖金总数。

输     入:

  一个整数,当月利润。

输     出:

  一个整数,奖金。

样例输入:

900

样例输出:

90

提      示:

  用Switch要比用if的看起来更清晰。

我的做法(已验证):

(1)if :

#include<stdio.h>
int main()
{
int x,y;
scanf("%d", &x);
if (x>0 && x<=1000000)
{
if (x>0 && x<=100000)
y=(0.1)*x;
else
{
if (x>100000 && x<=200000)
y=100000+(x-100000)*(0.075);
else
{
if (x>200000 && x<=400000)
y=17500+(0.05)*(x-200000);
else
{
if (x>400000 && x<=600000)
y=27500+(x-400000)*(0.03);
else
{
if (x>600000 && x<=1000000)
y=33500+(x-600000)*(0.015);
}}}}}
    else 
{
    y=39500+(x-1000000)*(0.01);
}
    printf("%d", y);
    return 0;
}
(2)switch:
#include<stdio.h>
int main()
{
int x, z, y;
scanf("%d", &x);
z=x/100000;
switch (z)
{
case 0:
y=0.1*x; break;
case 1:
y=10000+(x-100000)*0.075; break;
case 2:
y=17500+(x-200000)*0.05; break;
case 3:
y=17500+(x-200000)*0.05; break;
case 4:
y=27500+(x-40000)*0.03; break;
case 5:
y=27500+(x-40000)*0.03; break;
case 6:
y=33500+(x-600000)*0.015; break;
case 7:
y=33500+(x-600000)*0.015; break;
case 8:
y=33500+(x-600000)*0.015; break;
case 9:
y=33500+(x-600000)*0.015; break;
case 10:
y=39500+(x-1000000)*0.01; break;
default :
y=39500+(x-1000000)*0.01; break;
}
printf("%d", y);
return 0;
}
总     结:
  这是第七周最后一道题,更考验细心。我本来是只想用一种
方法来做,但出现了错误,我本以为是做法问题,便又尝试
了另一种做法,结果还是无法运行。最后终于找到是符号问题
。于是我便上传了两种做法。果然错误是最好的老师。
 
1 0