C语言的习题学习

努力学习C语言的牧狗(C语言程序经典100例)———第二题

致敬老大哥,因为周二出奇的课少,于是今天可以加更一次,争取追上老大哥的进度。 ≧◇≦

第二题:企业发放的奖金根据利润提成。利润(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,但现实总是残酷的,万一题目规定用switch怎么办,于是我只能咬咬牙,两个都做一遍。 啊啊啊~~:-(

#include<stdio.h>
main()
{
    
    
	float profit, bonus;
	printf("输入利润(profit>0万):");/*另解if语句*/
		scanf_s("你今年的利润为%f万元", & profit);
		if (printf <= 10)
			bonus = profit * 0.1;
		else if (profit <= 20 && profit > 10)
			bonus = 10 * 0.1 + (profit - 10) * 0.075;
		else if (profit <= 40 && profit > 20)
			bonus = 10 * 0.1 + 10 * 0.075 + (profit - 20) * 0.05;
		else if (profit <= 60 && profit > 40)
			bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (profit - 40) * 0.03;
		else if (profit <= 100 && profit > 60)
			bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (profit - 60) * 0.015;
		else(profit > 100);
			bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 20 * 0.015 + (profit - 100) * 0.01;
			printf("%f", bonus);
}

这是我喜欢的if选择语句,好吧确实括号写的我头疼,在做这一题if好像并不简洁。

#include<stdio.h>
main()/*switch*/
{
    
    
	float profit, bonus;
	scanf_s("%f",&profit);
	switch((int)profit/10)
	{
    
    
	case 0:bonus = profit * 0.1;break;
	case 1:bonus = 10 * 0.1 + (profit - 10) * 0.075;break;
	case 2:case 3:bonus = 10 * 0.1 + 10 * 0.075 + (profit - 20) * 0.05;break;
	case 4:case 5:bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (profit - 40) * 0.03;break;
	case 6:case 7:case 8:case 9:bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (profit - 60) * 0.015;break;
	default:bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (profit - 100) * 0.01;
	}
	printf("提成是:%f万元", bonus);
}

使用switch语句,并没有想象的这么可怕,一个是过程可以优化,另一个是最后一种条件可以用default代替,省去再写一遍的麻烦,减少了出错率。
反思:在使用switch语句的时候,要保证括号里的字母是整形常量,不然无法运行,同时,可以适当的除以10的幂来减少case的使用,从而简化代码的数量。

好吧,这一题也算是讲解完了,尝试了一下插入代码块,很省时间,就不用拍照或截图了,如果有小哥哥或小姐姐知道怎么插入数学符号,请告诉我,我会做的更好的,谢谢 。

猜你喜欢

转载自blog.csdn.net/qq_52543548/article/details/109740236
今日推荐