企业利润提成问题
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
程序分析:该题需要分情况进行讨论,首先应输入利润,将利润与已知的界限进行比较,才能确定奖金的计算方法,本题可以使用if语句,也可以使用switch语句。根据题可以画出如下分段函数:
if版本:
1 #include "stdio.h" 2 #include "conio.h" 3 void main() 4 { 5 float I,R; //定义变量,I为利润,R为奖金 6 printf("请输入本月的利润(万元):"); 7 scanf("%f",&I); 8 if(I<=10) //依据公式写出以下表达式 9 R=0.1*I; 10 else if(I>10&&I<=20) 11 R=1+(I-10)*0.075; 12 else if(I>20&&I<=40) 13 R=1.75+(I-20)*0.05; 14 else if(I>40&&I<=60) 15 R=2.75+(I-40)*0.03; 16 else if(I>60&&I<=100) 17 R=3.35+(I-60)*0.015; 18 else 19 R=3.95+(I-100)*0.01; 20 printf("本月奖金为:%f万元\n",R); 21 getch(); 22 }
Switch版本:
1 #include "stdio.h" 2 #include "conio.h" 3 void main() 4 { 5 float I,R; //定义变量 6 printf("请输入本月利润数(万元):"); 7 scanf("%f",&I); 8 if(I<0) 9 { 10 printf("你输入的数据有误,请重新输入\n"); 11 scanf("%f",&I); 12 } 13 switch(int(I/10)) //定义关系表达式 14 { 15 case 0: 16 R=0.1*I; 17 break; 18 case 1: 19 R=1+(I-10)*0.075; 20 break; 21 case 2: 22 case 3: //因为2和3的情况一样,所以程序可以这样写。下同 23 R=1.75+(I-20)*0.05; 24 break; 25 case 4: 26 case 5: 27 R=2.75+(I-40)*0.03; 28 break; 29 case 6: 30 case 7: 31 case 8: 32 case 9: 33 R=3.35+(I-60)*0.015; 34 break; 35 default: 36 R=3.95+(I-100)*0.01; 37 } 38 printf("本月应得奖金为(万元):%f\n",R); 39 getch(); 40 }
运行结果: