3274 - 习题4-10-2 奖金计算
某企业发放的奖金根据利润提成。利润I低于或等于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,求应发奖金数,奖金精确到分。
要求用switch语句实现。
Input
企业当月利润,小数,双精度double类型
Output
应发奖金,精确到小数点后2位,末尾换行。
Examples
Input
1050
Output
105.00
Solution C
#include"stdlib.h" #include"stdio.h" int main() { long i; float bonus,bon1,bon2,bon3,bon4,bon5; bon1=100000*0.1; bon2=bon1+100000*0.075; bon3=bon2+200000*0.05; bon4=bon3+200000*0.03; bon5=bon4+400000*0.015; scanf("%ld",&i); if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bon1+(i-100000)*0.075; else if(i<=400000) bonus=bon2+(i-200000)*0.05; else if(i<=600000) bonus=bon3+(i-400000)*0.03; else if(i<=1000000) bonus=bon4+(i-600000)*0.015; else bonus=bon5+(i-1000000)*0.01; bonus=bonus/10; printf("%.2f\n",bonus); }
Solution C++
#include<iostream> #include<cstdio> using namespace std; int main() { double bonus,bon1,bon2,bon4,bon6,bon10; bon1=100000*0.1; bon2=bon1+100000*0.075; bon4=bon2+200000*0.05; bon6=bon4+200000*0.03; bon10=bon6+400000*0.015; int i,t; cin>>i; if (i>=1000000) t=1; else t=i/100000; switch (t) { case 0: bonus=i*0.1; break; case 1: bonus=bon1+(i-100000)*0.075; break; case 2: case 3: bonus=bon2+(i-200000)*0.05; break; case 4: case 5: bonus=bon4+(i-400000)*0.03; break; case 6: case 7: case 8: case 9: bonus=bon6+(i-600000)*0.015; break; case 10:bonus=bon10+(i-1000000)*0.01; break; } printf("%.2f\n",bonus); return 0; }