10.企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提成10%;利润高于100000元,低于200000元(100000<I≤200000)时.....

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ML.star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值