两种方法由奖金求利润,并分析if和switch的异同。

企业发放的奖金根据利润提成。利润(money)低于或等于100 000元的,奖金可提成10%;利润高于100 000元,低于200 000元时,低于100 000的部分按10%提成,高于100 000的部分,可提成7.5%;利润高于200 000,低于400 000时,低于200 000的部分仍按上诉办法提成。高于200 000元的部分按5%提成;利润高于400 000低于600 000时,高于400 000的部分按3%提成;利润高于600 000低于1 000 000时,高于600 000元的部分按1.5%提成;利润高于1 000 000时,高于1 000 000的部分按1%提成。从键盘输入当月利润,求所得奖金:
1:用If编写。
2:用switch编写。
可写出其算法:
在这里插入图片描述

1:
#include<stdio.h>
void main()
{
int money,price;
printf(“请输入利润:\n”);
money=0,price=0;
scanf("%d",&money);
if(money<=100000)//从第一类开始
{
price=money0.1;
}
else if(money<=200000&&money>100000)//不可用100000<=money<200000,直接输入编译会显示错误,系统不接受这样的算法。
{
price=(money-100000)0.075+1000000.1;
}
else if(money<=400000&&money>200000)
{
price=(money-200000)0.05+1000000.075+100000
0.1;
}
else if(money<=600000&&money>400000)
{
price=(money-400000)0.03+2000000.05+1000000.075+1000000.1;
}
else if(money<=1000000&&money>600000)//以此类推
{
price=(money-600000)0.015+2000000.03+2000000.05+1000000.075+1000000.1;
}
else if(money>=1000000)
{
price=(money-1000000)0.01+4000000.015+200000
0.03+2000000.05+1000000.075+100000*0.1;
}
printf(“所求得奖金:%d\n”,price);
}
if语句的格式:
  if(比较表达式1) {
     语句体1;
  }else if(比较表达式2) {
     语句体2;
  }else if(比较表达式3) {
     语句体3;
  }
     …
  else {
    语句体n+1;
  }

执行流程:
  首先计算比较表达式1看其返回值是true还是false,
  如果是true,就执行语句体1,if语句结束。
  如果是false,接着计算比较表达式2看其返回值是true还是false,
  如果是true,就执行语句体2,if语句结束。
  如果是false,接着计算比较表达式3看其返回值是true还是false,
  如果都是false,就执行语句体n+1。

2:
#include<stdio.h>
int main()
{
int i;
double price,pri1,pri2,pri4,pri6,pri10;
int money;
pri1=1000000.1;
pri2=pri1+100000
0.075;
pri4=pri2+2000000.05;
pri6=pri4+200000
0.03;
pri10=pri6+4000000.015;
printf(“请输入月利润i:\n”);
scanf("%d",&i);
money=i/100000;
if(money>10) money=10;
switch(money)
{
case 0:price=i
0.1;break;
case 1:price=pri1+(i-100000)*0.075;break;
case 2:
case 3:price=pri2+(i-200000)*0.05;break;
case 4:
case 5:price=pri4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9:price=pri6+(i-600000)*0.015;break;
case 10:price=pri10+(i-1000000)*0.01;
}
printf(“奖金是%10.2f\n”,price);
return 0;
}
switch格式:
  switch(表达式) {
  case 值1:
      语句体1;
      break;
    case 值2:
      语句体2;
      break;
       …
    default:
      语句体n+1;
      break;
     }

     执行流程:
   先计算表达式的值
  然后和case后面的匹配,如果有就执行对应的语句,没有的话break则终止此语句。

即:
同:都是分支语句
异:switch常用于多分支,if一般用于简单分支判断
判断固定值的时候建议用switch;
  判断区间或范围的时候建议用if;
  用switch能做的,用if都能做,也即switch是if的充分不必要条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值