C语言中Switch语句的范围比较解决方案(学习笔记)
2020-02-15 06:40
1156 查看
临近国庆,小学期兴趣选修课结课时有一位朋友做C语言的结课作业时遇到了困难请教我,话不多说,先把题目贴上来:
程序设计题:薪水是上班族最关心的问题,对于即将步入社会的我们也同样重要,毕业后找到一份高薪的工作不但能让家人放心,而且能够提升自己和家人的生活质量。每个人都想拿到更高的薪水,这就需要我们拥有强大的工作能力了。已知某公司有一批销售员工,其底薪为2000元,员工销售额与提成比例如下:
(1)当销售额<=3000时,没有提成;
(2)当3000<销售额<=7000时,提成10%;
(3)当7000<销售额<=10000时,提成15%;
(4)当销售额>10000是,提成20%。
要求利用switch语句编写程序,通过输入员工的销售额,计算出其薪水总额并输出到屏幕上。
刚打眼时觉得这就是一道很普通的题目,通过比较数据大小划定区间,用if语句肯定很好做,但题目要求使用switch语句,也就没多想,上手时才发现好像没学过switch语句怎样做范围的比较,在网上搜了搜,但找到的都是类似于用switch划定成绩等级的语句,具体如下:
#include <stdio.h> int main() { double score; int nKey; while (scanf_s("%lf", &score) == 1) { if (score < 0 || score > 100) { printf("请输入0-100范围内的分数\n"); continue; } nKey = (int)score / 10; switch (nKey) { case 0: case 1: case 2: case 3: case 4: case 5: printf("E\n"); break; case 6: printf("D\n"); break; case 7: printf("C\n"); break; case 8: printf("B\n"); break; case 9: case 10: printf("A\n"); break; default: break; } } return 0; } ———————————————— 版权声明:本文为CSDN博主「aaronymhe」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/yi_ming_he/article/details/71159449
百度知道里的一些讨论也没有关于这个问题的解决方案,于是我就按照这样的方法,做出了一个简单的程序:
int main() { int num; float slary; printf("请输入月销售额:\n"); scanf("%d",&num); switch(num/1000) { case 1:slary=2000+0.0*num;break; case 2:slary=2000+0.0*num;break; case 3:slary=2000+0.0*num;break; case 4:slary=2000+0.1*num;break; case 5:slary=2000+0.1*num;break; case 6:slary=2000+0.1*num;break; case 7:slary=2000+0.1*num;break; case 8:slary=2000+0.1*num;break; case 9:slary=2000+0.1*num;break; case 10:slary=2000+0.2*num;break; } printf("应发工资为%.2f元",slary); return 0;
当时心急,这个方法完成了题目要求的输入输出实例,我就给他发过去了。次日脑海里一直在回想这道题,于是回到寝室又想了一遍,优化了一下,算是用我目前能够到的水平,解决了这个问题,代码如下,请各位大神指点:
#include <stdio.h> int main() { int num,flag; float slary; printf("请输入月销售额:\n"); scanf("%d",&num); if(num<2000||num==2000) flag=1; else if(num>2000||num<7000||num==7000) flag=2; else if(num>7000||num<10000||num==10000) flag=3; else if(num>10000||num==10000) flag=4; switch(flag) { case 1:slary=2000;break; case 2:slary=2000+0.1*num;break; case 3:slary=2000+0.15*num;break; case 4:slary=2000+0.2*num;break; } printf("应发工资为%.2f元",slary); return 0; }
如果评论区有大神可以指点switch语句的去其他用法,烦请指点一二,小生在此抱拳谢过了。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- C语言静态库与动态库一些心得
- c/c++中的uint8_t uint16_t uint32_t uint64_t size_t数据类型
- c语言:简单的客户管理系统
- windows c++调用Pytorch模型的过程
- Atl实战系列《用ATL COM Wizard 实现(VC++的插件)Add-in》
- C++进制转换
- c++ 数组长度
- C语言程序设计之循环结构。
- C语言十一月七号。
- C语言程序设计之数组。
- C语言程序设计(11.26)
- C语言程序设计(11.28)
- C语言程序设计(12.5)
- 大数据排序(10亿量级以上)C语言实现
- EPANET源码中用到的几个简单C语言函数介绍一
- EPANET源码中用到的几个简单C语言函数介绍三
- C语言中返回字符串函数的四种实现方法
- C语言字符串编码方式转换
- C++(2)导读学习笔记
- 关于Fibonacci数列,使用C语言输出