c语言奖金提成程序switch,C语言企业奖金利润提成-谭浩强C语言112页第5.8题-嗨客网...

描述

根据一个场景,不同的数据值获取不同的数据。情景题目。(谭浩强

题目

企业发放的奖金根据利润提成。利润 I 低于或等于 100 000 元的,奖金可提 10% ;利润高于 100 000 元,低于 200 000 元(100 000 < I <= 200 000)时,低于 100 000 元的部分按 10% 提成,高于 100 000 元的部分,可提成 7.5% ;200 000 < I <= 400 000 时,低于 200 000 元的部分仍按上述办法提成(下同)。高于 200 000 元的部分按 5% 提成;400 000 < I <= 600 000 元时,高于 400 000 元的部分按 3% 提成;600 000 < I <= 1000 000 时,高于 600 000 元的部分按 1.5 % 提成;I > 1000 000 时,超过1000 000 元的部分按 1% 提成。从键盘输入当月利润 I,求应发奖金总数。

要求:

题目解决思路

可以按照题目的要求,将在不同区间范围内的金额进行计算。主要的是将每一个区间的奖金计算正确。

代码具体实现

if 实现

#include

void main(){

printf("嗨客网(www.haicoder.net)\n\n");

long i;

float bonus,bon1,bon2,bon4,bon6,bon10; //先定义变量用来存储各个区间的数值

bon1 = 100000 * 0.1;

bon2 = bon1 + 100000 * 0.075;

bon4 = bon2 + 200000 * 0.05;

bon6 = bon4 + 200000 * 0.03;

bon10 = bon6 + 400000 * 0.015;

printf("请输入利润 i :");

scanf("%ld",&i);

if(i <= 100000)

{

bonus = i * 0.1;

}

else if(i<= 200000)

{

bonus = bon1 + (i - 100000) * 0.075;

}

else if(i <= 400000)

{

bonus = bon2 + (i - 200000) * 0.05;

}

else if(i <= 600000)

{

bonus = bon4 + (i - 400000) * 0.03;

}

else if( i <= 1000000)

{

bonus = bon6 + (i - 600000) * 0.015;

}

else

{

bonus = bon10 + (i - 1000000) * 0.01;

}

printf("奖金是 %10.2f\n",bonus);

}

运行结果为:

f7eb36b3e6d6b16403d0384ae79ece5e.png

我们直接使用 if else 按照题目的要求挨个去判断,不同的 if 与 else 分支,走不同的计算逻辑,即可。

Switch实现

#include

void main(){

printf("嗨客网(www.haicoder.net)\n\n");

long i;

float bonus,bon1,bon2,bon4,bon6,bon10;

int branch;

bon1 = 100000 * 0.1;

bon2 = bon1 + 100000 * 0.075;

bon4 = bon2 + 200000 * 0.05;

bon6 = bon4 + 200000 * 0.03;

bon10 = bon6 + 400000 * 0.015;

printf("请输入利润 i :");

scanf("%ld",&i);

branch = i / 100000;

if(branch > 10)

{

branch = 10;

}

switch(branch)

{

case 0 :

bonus = i * 0.1;

break;

case 1 :

bonus = bon1 + (i - 100000) * 0.075;

break;

case 2 :

case 3 :

bonus = bon2 + (i - 200000) * 0.05;

break;

case 4 :

case 5 :

bonus = bon1 + (i - 100000) * 0.075;

break;

case 6 :

case 7 :

case 8 :

case 9 :

bonus = bon6 + (i - 600000) * 0.015;

break;

case 10 :

bonus = bon10 + (i - 1000000) * 0.01;

break;

}

printf("奖金是 %10.2f\n",bonus);

}

运行结果如下图:

f800720cc4208612a288306ab080346a.png

我们使用了 switch case 同样实现了相同的结果,不过,在使用 switch case 计算,我们只能判断整数,因此,在使用 switch case 之前,我们需要先做整除处理。

总结

本题中比较难的部分就是先计算好各个区间范围的奖金值,然后按照区间将各个部分的奖金相加,我们可以先将区域中的奖金先计算出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值