努力學習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的使用,從而簡化代碼的數量。
好吧,這一題也算是講解完了,嘗試了一下插入代碼塊,很省時間,就不用拍照或截圖了,如果有小哥哥或小姐姐知道怎麼插入數學符號,請告訴我,我會做的更好的,謝謝 。