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

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. 无法执行 FunctionImport“entitys.xx”,因为未将它映射到存储函数。EF
  2. 西湖大学鞠峰:环境微生物宏基因组学(报告视频+PPT,11月23日)
  3. 图文详解asp.net自带控件
  4. python 网关控制家居_在树莓派上搭建智能家居网关
  5. 子类访问父类和方法覆写
  6. Java script生成apk_lua脚本实现自动生成APK包
  7. C++vector的reserve和resize比原来的容量小
  8. 行为设计模式 - 状态设计模式
  9. ubuntu查看文件大小
  10. css之div内部靠右
  11. [转]js中escape,encodeURI,encodeURIComponent三个函数的区别
  12. 分布式系统阅读笔记(十九)-----移动计算和无处不在的计算
  13. 刘宇凡:海子,一个孤独的灵魂诗人
  14. 【MATLAB编程实例练习】-(34)直角三角形边长问题
  15. Mysql大数据优化方案
  16. python中as是什么意思_python中“as”语句的含义是什么?
  17. [BZOJ]1059: [ZJOI2007]矩阵游戏
  18. 疑惑!AI中台到底为什么火了?道翰天琼认知智能机器人平台API接口为您揭秘。
  19. 实用的it知识学习_IT榜样 | 寇宇宸:认真听讲是学习知识的绝佳途径
  20. 电脑window medio player播放器可倍速播放

热门文章

  1. 机器人的自述作文_扫地机器人的自述作文600字
  2. 洲际酒店集团将在携程平台开设官方旗舰店;雀巢感CAFE旗舰店登陆天猫 | 美通企业日报...
  3. 服务器安装在机柜上下位置,服务器机柜应如何规范安装?
  4. https连接websocket用wss的连接用法
  5. zzw原创_oracle循环中的异常捕捉_捕捉异常后并继续循环
  6. <Ubuntu忘记密码登录>
  7. 基于3Ds Max实现客厅的设计与实现.docx(毕业设计、成绩评定评分表、成绩评定评审等级表)
  8. 【月报】Android开发实习的第一个月——为什么进度这么慢
  9. 福禄克为什么那么贵的这几个原因你要知道
  10. 施努卡:锂电池标签表面缺陷检测