10.企业发放的奖金根据利润提成。
利润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<1≤1000000时,高于600000元的部分按1.5%提成;I>1000000时,超过1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。要求:(1) 使用if语句编写程序。(2) 使用switch语句编写程序。
(1) 使用if语句编写程序。
#include<stdio.h>
#include<stdlib.h>
int main(){
float I,R;
printf("请输入当月利润:");
scanf("%f",&I);
R=0;
if(I >1000000){
R += (I-1000000)*0.01;
I = 1000000;
}
if(I >600000){
R += (I-600000)*0.015;
I = 600000;
}
if(I >400000){
R += (I-400000)*0.03;
I = 400000;
}
if(I >200000){
R += (I-200000)*0.05;
I = 200000;
}
if(I >100000){
R += (I-100000)*0.075;
I = 100000;
}
R+=I*0.1;
printf("当月应发奖金为:%.2f\n",R);
system("pause"); //让运行窗口不闪退
return 0;
}
(2) 使用switch语句编写程序。
解法一:
利用while循环,一层一层的计算奖励金额。
#include<stdio.h>
#include<stdlib.h>
int main(){
float I,R,count;
int grade;
printf("请输入当月利润:");
scanf("%f",&I);
R=0;count=0;
while(I>100000){
grade= I/100000;
count++;
//如234567,去除大于200000的部分后,grade同为2,
//会进入死循环,加个count变量进行控制
if(count>1) grade-=1;
switch(grade){
case 9 : //会顺序执行到下一个break处
case 6 : R += (I-600000)*0.015;I = 600000;break;
case 5 :
case 4 : R += (I-400000)*0.03; I = 400000;break;
case 3 :
case 2 : R += (I-200000)*0.05; I = 200000;break;
case 1 : R += (I-100000)*0.075;I = 100000;break;
default :R += (I-1000000)*0.01;I = 1000000;break;
}
}
R+=I*0.1;
printf("当月应发奖金为:%.2f\n",R);
system("pause"); //让运行窗口不闪退
return 0;
}
解法二:
根据奖励阶级先计算部分利润,再加上多出来的。如计算323456,先计算100000部分的奖金,再加上23456的。
#include<stdio.h>
#include<stdlib.h>
int main(){
float I,R;//I为当月利润,R为奖金
int grade;
printf("请输入当月利润:");
scanf("%f",&I);
float R1 = 100000 * 0.1;
float R2 = (200000 - 100000) * 0.075 + R1;
float R3 = (400000 - 200000) * 0.05 + R2;
float R4 = (600000 - 400000) * 0.03 + R3;
float R5 = (1000000 - 600000) * 0.015 + R4;
R=0;
grade= I/100000;
switch(grade){
case 0:
R = I * 0.1; break;
case 1:
R = R1 + (I - 100000) * 0.075; break;
case 2:
case 3:
R = R2 + (I - 200000) * 0.05; break;
case 4:
case 5:
R = R3 + (I - 400000) * 0.03; break;
case 6:
case 7:
case 8:
case 9:
R = R4 + (I - 600000) * 0.015; break;
default:
R = R5 + (I - 1000000) * 0.01; break;
}
printf("当月应发奖金为:%.2f\n",R);
system("pause"); //让运行窗口不闪退
return 0;
}