企业利润提成问题

  题目:企业发放的奖金根据利润提成。利润(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 }

运行结果:

posted @ 2015-03-22 17:02  要有梦想,一定能实现  阅读(515)  评论(0编辑  收藏  举报