1693 - C语言程序设计教程(第三版)课后习题5.8
企业发放的奖金根据利润提成。利润低于或等于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,求应发奖金总数。
Input
一个整数,当月利润。
Output
一个整数,奖金。
Examples
Input
900
Output
90
Hint
用Switch要比用if的看起来更清晰。
Solution C
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int a,b; scanf("%d",&a); b=a/100000; switch(b) { case 0: printf("%.f",a*0.1); break; case 1: printf("%.f",(a-100000)*0.75+10000); break; case 2: case 3: printf("%.f",(a-200000)*0.5+10000+7500); break; case 4: case 5: printf("%.f",(a-400000)*0.03+10000+7500+10000);break; case 6: case 7: case 8: case 9: printf("%.f",(a-600000)*0.015+10000+7500+10000+6000);break; default: printf("%.f",(a-1000000)+10000+7500+10000+6000+6000); break; } return 0; }
Solution C++
#include<iostream> using namespace std; int main() { int i; 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; cin>>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=bon4+(i-400000)*0.03; else if (i<=1000000) bonus=bon6+(i-600000)*0.015; else bonus=bon10+(i-1000000)*0.01; cout<<int(bonus)<<endl; return 0; }
Hint
用Switch要比用if的看起来更清晰。