企業發放的獎金根據利潤提成。利潤I低於或者等於10萬元時,獎金可提成10%;利潤高於10萬元且低於20萬元時,其中10萬元按10%提成,高於10萬元的部分,可提成7.5%;200000<I<=400000時,其中20萬仍按上述辦法提成(下同),高於20萬的部分按5%提成;400000<I<=600000時,高於40萬部分按3%提成;600000<I<=1000000時,高於60萬的部分按1.5%提成;I>1000000時,超過100萬的部分按1%提成。從鍵盤輸入當月利潤I,求出應發放獎金總數。
要求:用if語句和switch語句分別設計程序實現。
if實現如下:
[cpp]
// test.cpp : 定義控制台應用程序的入口點。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int t_nPrize = 0; //獎金
int t_nProfit = 0; //利潤
int t_nTempPro = 0; //臨時空間存放利潤
cout << "請輸入利潤:";
cin >> t_nProfit;
t_nTempPro = t_nProfit;//將輸入的數值保留起來,用臨時值進行操作
//大於1000000情況
if(t_nTempPro > 1000000)
{
t_nPrize = 0.01 * (t_nTempPro - 1000000) + t_nPrize;//超過一百萬部分的獎金
t_nTempPro = t_nTempPro - (t_nTempPro - 1000000); //剩余部分
}
//600000到1000000
if ( t_nTempPro >600000 ) //此處不能用else if,因為當條件滿足上一個if並運行完後,需要進入這一個if繼續進行計算
{
t_nPrize = 0.015 * (t_nTempPro - 600000) + t_nPrize;//超過六十萬部分的獎金
t_nTempPro = t_nTempPro - (t_nTempPro - 600000); //剩余部分
}
//400000到600000
if ( t_nTempPro >400000 )
{
t_nPrize = 0.03 * (t_nTempPro - 400000) + t_nPrize;//超過四十萬部分的獎金
t_nTempPro = t_nTempPro - (t_nTempPro - 400000); //剩余部分
}
//200000到400000
if ( t_nTempPro >200000 )
{
t_nPrize = 0.05 * (t_nTempPro - 200000) + t_nPrize;//超過三十萬部分的獎金
t_nTempPro = t_nTempPro - (t_nTempPro - 200000); //剩余部分
}
//100000到200000
if ( t_nTempPro >100000 )
{
t_nPrize = 0.075 * (t_nTempPro - 100000) + t_nPrize;//超過三十萬部分的獎金
t_nTempPro = t_nTempPro - (t_nTempPro - 100000) ; //剩余部分
}
//小於100000
if ( t_nTempPro <= 100000 )
{
t_nPrize = 0.1 * t_nTempPro + t_nPrize;//超過三十萬部分的獎金
}
cout << "工資數:" << t_nPrize << endl;
system("pause");
return 0;
}
switch 實現:
[cpp]
// test.cpp : 定義控制台應用程序的入口點。
// www.2cto.com
/*
* 作者:王利寶
*/
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int t_nPrize = 0; //獎金
int t_nProfit = 0; //利潤
cout << "請輸入利潤:";
cin >> t_nProfit;
int n = 0;//標記利潤范圍
if( t_nProfit <= 100000)
{
n = 1;
}
//10萬到20萬的情況
else if ( t_nProfit>100000 && t_nProfit <= 200000 )
{
n = 2;
}
//20萬到40萬的情況
else if ( t_nProfit>200000 && t_nProfit <= 400000 )
{
n = 3;
}
//40萬到60萬的情況
else if ( t_nProfit>400000 && t_nProfit <= 600000 )
{
n = 4;
}
//60萬到100萬的情況
else if ( t_nProfit>600000 && t_nProfit <= 1000000 )
{
n = 5;
}
//100萬以上的情況
else if ( t_nProfit > 1000000 )
{
n = 6;
}
//計算工資
switch (n)
{
case 6:
{
t_nPrize += (t_nProfit- 1000000) * 0.01;
t_nProfit = t_nProfit- (t_nProfit- 1000000);
}
case 5:
{
t_nPrize += (t_nProfit- 600000) * 0.015;
t_nProfit = t_nProfit- (t_nProfit- 600000);
}
case 4:
{
t_nPrize += (t_nProfit- 400000) * 0.03;
t_nProfit = t_nProfit- (t_nProfit- 400000);
}
case 3:
{
t_nPrize += (t_nProfit- 200000) * 0.05;
t_nProfit = t_nProfit- (t_nProfit- 200000);
}
case 2:
{
t_nPrize += (t_nProfit- 100000) * 0.075;
t_nProfit = t_nProfit- (t_nProfit- 100000);
}
case 1:
{
t_nPrize += t_nProfit* 0.1;
}
}
cout << "工資數:" << t_nPrize << endl;
system("pause");
return 0;
}
摘自 Leeboy_Wang的專欄