感谢 @墨瑾空城染青衣 提出的错误地方,现已修改。

C程序设计(第四版) 谭浩强 习题4.10 个人设计

习题 4.10 企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提0.1;利润高于100000元,低于200000(100000《I《=200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;200000《I《=400000时,低于200000元的部分仍按上述办法提成(下同)。高于200000元的部分按5%提成;400000《I《=600000元时,高于400000元的部分按3%提成;600000《I《=1000000时,高于600000元的部分按1.5%提成;I>1000000时,超过1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。

要求:

(1)用if语句编程序;

(2)用switch语句编程序。

代码块:

方法1:(用if语句)

#include <stdio.h>
#include <stdlib.h>
int main()
{double i, bonus;printf("Please enter profit: ");scanf("%lf", &i);//输入低于0的数字,报错并重新输入while (i < 0){printf("Error!\n");printf("Please enter profit: ");scanf("%lf", &i);}if (i <= 100000)bonus = i * 0.1;else if (i > 100000 && i <= 200000)bonus = 10000 + (i - 100000) * 0.075;else if (i > 200000&& i <= 400000)bonus = 18500 + (i - 200000) * 0.05;else if (i > 400000 && i <= 600000)bonus = 37500 + (i - 400000) * 0.03;else if (i > 600000 && i <= 1000000)bonus = 43500 + (i - 600000) * 0.015;elsebonus = 49500 + (i - 1000000) * 0.01;printf("Bonus = %.2lf\n", bonus);system("pause");return 0;
}

方法2:(用switch语句)

#include <stdio.h>
#include <stdlib.h>
int main()
{int i, s;double bonus;printf("Please enter profit: ");scanf("%d", &i);while (i < 0){printf("Error!\n");printf("Please enter profit: ");scanf("%d", &i);}//通过分档给各档级别赋值if (i <= 100000)s = 1;      else if (i > 100000 && i <= 200000)s = 2;else if (i > 200000 && i <= 400000)s = 3;else if (i > 400000 && i <= 600000)s = 4;else if (i > 600000 && i <= 1000000)s = 5;elses = 6;//根据级别值执行相应语句switch(s){case 1: bonus = i * 0.1; break;8case 2: bonus = 10000 + (i - 100000) * 0.075; break;case 3: bonus = 18500 + (i - 200000) * 0.05; break;case 4: bonus = 37500 + (i - 400000) * 0.03; break;case 5: bonus = 43500 + (i - 600000) * 0.015; break;case 6: bonus = 49500 + (i - 1000000) * 0.01; break;}printf("Bonus = %.2lf\n", bonus);system("pause");return 0;
}

以上特别说明一下,如果按照教材上的switch实例,使用相同方法,比如通过定义一个s,使得s=i/100000,用switch(s)来实现分档,前两档是没有问题的,但是,在输入600000和1000000两个数值后,就会出现得到错误的分档结果。

方法3:(利用函数的模块化设计)

#include <stdio.h>
#include <stdlib.h>
void input();                                    //定义输入函数
void bonus(int x);                               //定义奖金计算函数
int i;                                           //定义全局变量,利润
int main()
{input();                                     //调用输入函数bonus(i);                                    //调用奖金计算函数system("pause");return 0;
}
//输入函数
void input()
{printf("Please enter profit: ");scanf("%d", &i);//一旦出现负值,报错并重新输入while (i < 0){printf("Error!\n");input();}
}
//奖金计算函数
void bonus(int x)
{int s;double bonus;if (x <= 100000)s = 1;     else if (x > 100000 && i <= 200000)s = 2;else if (x > 200000 && i <= 400000)s = 3;else if (x > 400000 && i <= 600000)s = 4;else if (x > 600000 && i <= 1000000)s = 5;elses = 6;switch(s){case 1: bonus = x * 0.1; break;case 2: bonus = 10000 + (x - 100000) * 0.075; break;case 3: bonus = 18500 + (x - 200000) * 0.05; break;case 4: bonus = 37500 + (x - 400000) * 0.03; break;case 5: bonus = 43500 + (x - 600000) * 0.015; break;case 6: bonus = 49500 + (x - 1000000) * 0.01; break;}printf("Bonus = %.2lf\n", bonus);
}

习题 4.10 企业发放的奖金根据利润提成。。。相关推荐

  1. C语言学习之企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提成10%;

    企业发放的奖金根据利润提成.利润I低于或等于100000元的,奖金可提成10%;利润高于100 000元,低于200 000元(100 000<I≤200000)时,低于100 000元的部分按 ...

  2. 用java编写奖金税率_企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%_java企业利润提成计算代码...

    今天上java课程的时候老师给布置了一个作业,让让java计算一下企业该发放的奖金总额,接下来吾爱编程就为大家介绍一下java实现企业发放的奖金根据利润提成的代码,有需要的小伙伴可以参考一下: 1.题 ...

  3. 2. 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时, 奖金可提10%;利润高于10万元, 低于20万元时, 低于10万元的部分按10%提成,...

    程序算法精题–JS版 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时, 奖金可提10%;利润高于10万元,低于20万元时, 低于10万元的部分按10%提成, 高于10万元的部分, 可提成 ...

  4. 企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提10%;利润高于100000元,低于或等于200000元

    企业发放的奖金根据利润提成.利润I低于或等于100000元的,奖金可提10%:利润高于100000元,低于或等于200000元(100000<I≤200000)时,低于或等于100000元的部分 ...

  5. 企业发放的奖金根据利润提成。 利润(i)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%; 2

    .企业发放的奖金根据利润提成.   利润(i)低于或等于10万元时,奖金可提10%:   利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:  20 ...

  6. C语言练习题:企业发放的奖金根据利润提成。利润 I 低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成

    企业发放的奖金根据利润提成. 利润 I 低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成, 高于10万元的部分,可提成7.5%: 20万到40万 ...

  7. C/C++ 企业发放的奖金根据利润提成。利润 (i) 低于或等于 10 万元时,奖金可提 10% ;利润高 于 10 万元,低于 20 万元时,低于 10 万元的部分按 10% 提成,高于 10 万元

    目录 一.结果演示 二.源代码 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 ...

  8. 2.企业发放的奖金根据利润提成。①利润低于或等于10万元时,奖金可提10%;② 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成 7.5%;

    题目: 企业发放的奖金根据利润提成. ①利润低于或等于10万元时,奖金可提10%: ② 利润高于10万元,低于20万元时,低于10 万元的部分按10%提成,高于10万元的部分, 可提成 7.5%: ③ ...

  9. 【题目】企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5

    文件名:[作业] 作者:〈漆黑〉 描述:〈 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万 ...

最新文章

  1. pyQt 每日一练习 -- 登录框
  2. shell 语法简介(转载)
  3. 树莓派 ROS 段错误
  4. 正面管教PHP交流互助会,父母的心态决定孩子的状态/慧育家正面管教家长讲师认证班...
  5. java语言只保留了什么_java语言的保留的关键字【小白必读】
  6. JZOJ 5396. 【NOIP2017提高A组模拟10.6】Blocks
  7. SAP Cloud SDK‘s Virtual Data Model
  8. mysql练习_创建库与列表、增加列表信息、列表查询(包含多列表查询)_月隐学python第23课
  9. leetcode134. 加油站
  10. bLue的除法算术题 数学
  11. q超级会员都有什么鸿蒙,超级会员+豪华绿钻,超值四开!
  12. 【转】做一名开源社区的扫地僧 (上)
  13. handbrake下载太慢_handbrake使用教程
  14. Pdf2cad v12(顶级pdf转cad软件)官方正式版V12.2020.12 | pdf转cad软件中文版下载 | 比pdf2cadv9更强
  15. 设计模式总结(Java)
  16. 免开发打造智能咖啡机,让您省时又省力
  17. 大数据学习之HBase入门笔记
  18. linux文件损坏怎么修复工具,在Ubuntu操作系统下修复损坏程序包的三种办法
  19. ENVI中出现tif文件无法直接打开
  20. 划时代变革丨山石网科重磅发布A系列智能下一代防火墙 重新定义边界安全

热门文章

  1. 解决EOS启动“不能连接到Server”的问题
  2. Java8 ForkJoinPool(一) 源码解析
  3. (ZT)播放swf文件的html
  4. Python爬虫入门教程 34-100 掘金网全站用户爬虫 scrapy
  5. 怎么给c语言程序加个个密码,C语言对文件加上密码
  6. 爱因斯坦《自述》节选
  7. C语言控制台小程序:自制三角计算器
  8. 五子棋AI - 局面状态
  9. Linux指导-Linux数据库大比拚
  10. mac use subl command