C程式12 計算獎金
阿新 • • 發佈:2019-01-08
程式12 計算獎金
題目:企業發放的獎金根據利潤提成。利潤(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,求應發放獎金總數?
自己理解:採用case語句,分別計算每一個利潤範圍獲得的具體獎金。其中2種計算方法:
- 累加計算,如程式碼1,sum=sum(前面範圍獎金的總和)+當前超出範圍獎金。
- 最基礎的加法,列出每個範圍應得的獎金,之後相加,
兩種都差不多,第2種不容易出錯,比較直白。
程式碼1
#include <stdio.h> int main() { int z,i; float sum=0; printf("輸入利潤:"); scanf("%d",&i); if(i<=100000) z=1; else if(i<=200000&&i>100000) z=2; else if(i<=400000&&i>200000) z=3; else if(i<=600000&&i>400000) z=4; else if(i<=1000000&i>600000) z=5; else if(i>1000000) z=6; switch(z) { case 6: sum+=(i-1000000)*0.01; i=1000000; case 5: sum+=(i-600000)*0.015; i=600000; case 4: sum+=(i-400000)*0.03; i=400000; case 3: sum+=(i-200000)*0.05; i=200000; case 2: sum+=(i-100000)*0.075; i=100000; case 1: sum+=i*0.1; break; } printf("Bonus=%lf",sum); return 0; }
執行結果
程式碼2
#include<stdio.h> int main(void) { double I = 0, Bonus = 0; printf("Please input Profit I= "); scanf("%lf", &I); if(I <= 0) { printf("not bonus!\n"); return 0; } I /= 10000; switch((int)(I/10)) { case 0: Bonus = I * 0.1; break; case 1: Bonus = 10 * 0.1 + (I - 10) * 0.075; break; case 2: case 3: Bonus = 10 * 0.1 + 10 * 0.075 + (I - 20) * 0.05; break; case 4: case 5: Bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (I - 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 + (I - 60) * 0.015; break; default: Bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.06 + 20 * 0.03 + 40 * 0.015 + (I - 100) * 0.01; break; } Bonus = Bonus * 10000;//為方便計算前面,化成萬元,現在要換算回來,乘10000 printf("The Bonus = %lf\n", Bonus); return 0; }
執行結果
驗證
如果利潤65萬元,則獎金
=1000000.1+1000000.075+2000000.05+2000000.03+50000*0.015
=10000+7500+10000+6000+750
=34250