企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万(100000<i<=200000)元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;200000<i<=400000时,高于20万元的部分按5%提成;400000<i<=600000时,高于40万元的部分按3%提成;600000<i<=1000000时,高于60万的部分按1.5%提成;i>1000000时,超过100万的部分按1%提成。从键盘输入当月利润i,求应发放奖金总数。要求:用switch语句编程序实现。
时间: 2023-05-31 10:17:48 浏览: 430
C语言1,企业发放的奖金根据利润提成
5星 · 资源好评率100%
### 回答1:
以下是用switch语句编写的程序:
#include <stdio.h>
int main()
{
double i, bonus;
printf("请输入当月利润:");
scanf("%lf", &i);
switch ((int)(i / 100000))
{
case :
bonus = i * .1;
break;
case 1:
bonus = 10000 + (i - 100000) * .075;
break;
case 2:
case 3:
bonus = 17500 + (i - 200000) * .05;
break;
case 4:
case 5:
bonus = 27500 + (i - 400000) * .03;
break;
case 6:
case 7:
case 8:
case 9:
bonus = 33500 + (i - 600000) * .015;
break;
default:
bonus = 39500 + (i - 100000) * .01;
break;
}
printf("应发放奖金总数为:%.2lf元\n", bonus);
return ;
}
程序中,先从键盘输入当月利润i,然后根据利润的不同范围,使用switch语句计算出应发放的奖金总数bonus。最后输出结果。
### 回答2:
以下是使用switch语句编写的计算奖金的程序:
```
#include <stdio.h>
int main() {
double i, bonus;
printf("请输入当月利润:");
scanf("%lf", &i);
switch ((int)(i / 100000)) {
case 0: //低于或等于10万元
bonus = i * 0.1;
break;
case 1: //10万元<i<=20万元
bonus = 100000 * 0.1 + (i - 100000) * 0.075;
break;
case 2: //20万元<i<=40万元
case 3: //40万元<i<=60万元
case 4: //60万元<i<=100万元
bonus = 100000 * 0.1 + 100000 * 0.075 + (i - 200000) * 0.05;
if (i > 400000) {
bonus += (i - 400000) * 0.03;
}
if (i > 600000) {
bonus += (i - 600000) * 0.015;
}
break;
default: //i>100万元
bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05;
bonus += 200000 * 0.03 + 400000 * 0.015 + (i - 1000000) * 0.01;
break;
}
printf("应发放奖金总数为:%lf元\n", bonus);
return 0;
}
```
该程序首先提示用户输入当月利润i,然后根据利润的范围使用switch语句计算奖金总数,并将结果输出。
在switch语句中,我们使用了整数除法将i转换为一个整数,代表它所处的利润范围。然后根据范围依次计算奖金,注意要使用累加的方式处理不同范围的奖金。
程序中对使用整数除法进行转换的思路值得一提,可以避免在分支语句中使用浮点数进行比较和计算的不确定性。同时,由于switch语句的分支条件只支持整数和字符类型,我们必须将i转换为整数后才能进行判断。值得注意的是,我们在最后一个分支条件中并没有使用break语句,这是因为它是default分支,代表了i>100万元时的情况,我们需要计算所有的奖金,并不需要跳出分支语句。
### 回答3:
switch语句可用于根据不同的条件执行不同的语句。
根据题目要求,可编写如下程序:
#include <stdio.h>
int main()
{
double i, bonus;
printf("请输入月利润:");
scanf("%lf", &i);
switch((int)(i/100000)) //将利润按十万为单位分组
{
case 0: //利润低于等于10万
bonus = i * 0.1;
break;
case 1: //利润在10万至20万之间
bonus = 10000 + (i-100000) * 0.075;
break;
case 2: //利润在20万至40万之间
case 3:
bonus = 17500 + (i-200000) * 0.05;
break;
case 4: //利润在40万至60万之间
case 5:
bonus = 27500 + (i-400000) * 0.03;
break;
case 6: //利润在60万至100万之间
case 7:
case 8:
case 9:
bonus = 33500 + (i-600000) * 0.015;
break;
default: //利润超过100万
bonus = 39500 + (i-1000000) * 0.01;
}
printf("应发放奖金总数为:%.2f元\n", bonus);
return 0;
}
程序中,利润i和奖金bonus都使用了双精度浮点型变量。利润i通过键盘输入获取。switch语句的条件表达式是(i/100000),将利润按十万为单位分组,利润在不同的分组中执行不同的分支。使用了break语句,当一个条件满足时,就会直接跳出switch语句,不再执行后面的分支。最后通过printf语句输出奖金总数。
阅读全文