鱼C论坛

 找回密码
 立即注册
查看: 1275|回复: 11

[已解决]看看吧 这道题 switch 语句

[复制链接]
发表于 2020-10-26 20:26:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
企业发放的奖金根据利润提成。利润低于或等于 100000 元时,奖金可提 10%;利润高
于 100000 元,低于 200000 元时,低于 100000 元的部分按 10%提成,高于 100000 元的部
分,可提成 7.5%;200000 到 400000 之间时,高于 200000 元的部分,可提成 5%;400000
到 600000 之间时高于 400000 元的部分,可提成 3%;600000 到 1000000 之间时,高于 600000
元的部分,可提成 1.5%,高于 1000000 元时,超过 1000000 元的部分按 1%提成,从键盘输
入当月利润,求应发放奖金总数。请应用 switch 语句编写算法实现。


下面代码是我自己打的 还没完 不会写了
#include <stdio.h>
int main()
{
    int num,prize;
    scanf("%d",num);
    switch(num/100000)
    {
        case 0:prize=num*0.1;break;
        case 1:prize=100000*0.1+(num-100000)*0.075;break;
        case 2:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05;break;
        case 3:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05;break;
        case 4:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03;break;
        case 5:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03;break;
        case 6:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
        case 7:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
        case 8:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
        case 9:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
        case 10:prize=
        default:prize=
        
        }
   
    }
我不知道 负数还有超过1000000的怎么写了
最佳答案
2020-10-26 20:38:02
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int num,prize;
  5.     scanf("%d",num);
  6.     if(num <0)
  7.     {
  8.           printf("0");
  9.           return 0;
  10.     }
  11.     switch(num/100000)
  12.     {
  13.         case 0:prize=num*0.1;break;
  14.         case 1:prize=100000*0.1+(num-100000)*0.075;break;
  15.         case 2:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05;break;
  16.         case 3:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05;break;
  17.         case 4:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03;break;
  18.         case 5:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03;break;
  19.         case 6:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  20.         case 7:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  21.         case 8:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  22.         case 9:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  23.         default:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015+(num-1000000)*0.01;break;
  24.    
  25.         }
  26.     return 0;
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-10-26 20:30:44 | 显示全部楼层
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int num,prize;
  5.     scanf("%d",num);
  6.     switch(num/100000)
  7.     {
  8.         case 0:prize=num*0.1;break;
  9.         case 1:prize=100000*0.1+(num-100000)*0.075;break;
  10.         case 2:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05;break;
  11.         case 3:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05;break;
  12.         case 4:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03;break;
  13.         case 5:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03;break;
  14.         case 6:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  15.         case 7:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  16.         case 8:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  17.         case 9:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  18.         case 10:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015+(num-1000000)*0.01;break;
  19.         default:break;
  20.    
  21.         }
  22.    
  23.     }
复制代码

应该是这样吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-26 20:33:29 | 显示全部楼层

不对吧 比如说两百万 除1000000就没有对应的case 题上示例负数输出是0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 20:35:34 | 显示全部楼层
癞蛤蟆丶ccc 发表于 2020-10-26 20:33
不对吧 比如说两百万 除1000000就没有对应的case 题上示例负数输出是0

我明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 20:38:02 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int num,prize;
  5.     scanf("%d",num);
  6.     if(num <0)
  7.     {
  8.           printf("0");
  9.           return 0;
  10.     }
  11.     switch(num/100000)
  12.     {
  13.         case 0:prize=num*0.1;break;
  14.         case 1:prize=100000*0.1+(num-100000)*0.075;break;
  15.         case 2:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05;break;
  16.         case 3:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05;break;
  17.         case 4:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03;break;
  18.         case 5:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03;break;
  19.         case 6:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  20.         case 7:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  21.         case 8:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  22.         case 9:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015;break;
  23.         default:prize=100000*0.1+(num-100000)*0.075+(num-200000)*0.05+(num-400000)*0.03+(num-600000)*0.015+(num-1000000)*0.01;break;
  24.    
  25.         }
  26.     return 0;
  27. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-26 20:40:53 | 显示全部楼层

好像对哦 我中间式子错了 我等会改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 20:42:54 | 显示全部楼层
癞蛤蟆丶ccc 发表于 2020-10-26 20:40
好像对哦 我中间式子错了 我等会改

如果问题解决,不要忘记最佳答案哦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-26 20:45:12 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-10-26 20:42
如果问题解决,不要忘记最佳答案哦

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 20:48:51 | 显示全部楼层
应该可以这样写
  1. int main(int argc, char const *argv[])
  2. {
  3.    
  4.     int num,prize;
  5.     scanf("%d",num);
  6.     prize = 0;
  7.     switch(num/100000) {
  8.         case 10:
  9.             prize += (num - 1000000) * 0.01;  // 1%
  10.             num = 1000000;
  11.         case 9:
  12.         case 8:
  13.         case 7:
  14.         case 6:
  15.             prize += (num - 600000) * 0.015;  // 1.5%
  16.             num = 600000;
  17.         case 5:
  18.         case 4:
  19.             prize += (num - 400000) * 0.03;  // 3%
  20.             num = 400000;
  21.         case 3:
  22.         case 2:
  23.             prize += (num - 200000) * 0.05;  // 5%
  24.             num = 200000;
  25.         case 1:
  26.             prize += (num - 100000) * 0.075;  // 7.5%
  27.             num = 100000;
  28.         default:
  29.             prize += num * 0.1;      // 10%
  30.             break;
  31.     }

  32.     return 0;
  33. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-26 21:51:36 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-27 09:11:23 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-10-26 20:42
如果问题解决,不要忘记最佳答案哦

不对 .  if<0后 又去switch循环里面去了 default
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-27 09:13:14 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-10-26 20:42
如果问题解决,不要忘记最佳答案哦

if写到下面就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-1 08:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表