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的使用,從而簡化代碼的數量。

好吧,這一題也算是講解完了,嘗試了一下插入代碼塊,很省時間,就不用拍照或截圖了,如果有小哥哥或小姐姐知道怎麼插入數學符號,請告訴我,我會做的更好的,謝謝 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章