C语言中Switch语句的范围比较解决方案(学习笔记)
临近国庆,小学期兴趣选修课结课时有一位朋友做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语言中Switch语句的范围比较解决方案(学习笔记)相关推荐
- c语言switch语句支持的字符有哪些,C语言中switch()语句的括号内可以是什么型别的呢?...
C语言中switch()语句的括号内可以是什么型别的呢?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言中swit ...
- c语言switch语句最大嵌套数,浅谈C语言中switch 语句的嵌套使用
浅谈C语言中switch 语句的嵌套使用 作者:未知 [摘要]switch语句是一种分支控制语句,它的应用在程序设计中起至了很重要的作用.由于其格式复杂,对于初学者来说很难掌握,switch语句的嵌套 ...
- c语言switch语句嵌套,浅谈c语言中switch语句的嵌套使用
switch语句是一种分支控制语句,它的应用在程序设计中起到了很重要的作用.由于其格式复杂,对于初学者来说很难掌握,switch语句的嵌套使用更是让初学者难以理解.本文通过介绍switch嵌套语句的形 ...
- c语言中switch语句流程图_全国计算机二级知识点汇总(C语言等)
点击蓝字 关注我们 全国计算机二级知识点汇总 算法的有穷性是指:算法程序的运行时间是有限的 算法的空间复杂度是指:算法在执行过程中所需要的临时工作单元数 算法的时间复杂度是指:算法在执行过程中所需要的 ...
- c语言switch不允许实型,C语言中switch语句什么意思
Switch在C语言中是保留字,其作用是进行判断选择.switch(开关语句)常和case break default一起使用. Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断 ...
- c语言中switch语句流程图_C语言:C语言保留字(关键字)
保留字(reserved word) 保留字又称关键字. 指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用. 每种程序设计语言都规定了自己的一套保留字. 例如:BASIC语言规 ...
- c语言中switch结构,switch结构c语言
C语言中switch结构的使用 用switch结构编制程序,输入1个学生的C语言课程考试成绩(百分制整形数因为case后面不能接范围,也就是说case后面是一个确实固定的常量.用下面的方法比较好, # ...
- C语言switch中break的作用,C语言中switch...case语句中break的重要性
在C语言中switch...case语句是经常用到的,下面我介绍一下在使用该语句时候需要注意的一个细节问题.话不多说,直接举例子: 例子1: switch(fruit) { case 1:printf ...
- c语言 case break,C语言中switch...case语句中break的重要性
在C语言中switch...case语句是经常用到的,下面我介绍一下在使用该语句时候需要注意的一个细节问题.话不多说,直接举例子: 例子1: switch(fruit) { case 1:printf ...
最新文章
- Ubuntu16.04 搭建nexus 私服 学习步骤以及安装maven和git
- BannerDemo【图片轮播图控件】
- 【Linux 内核】进程管理 task_struct 结构体 ② ( state 字段 | stack 字段 | pid 字段 | tgid 字段 | pid_links 字段 )
- 【知识星球】剪枝量化初完结,蒸馏学习又上线
- Ibatis - Open quote is expected for attribute {1} associated with an element type '
- numpy统计分布显示
- php中页面平滑回到顶部代码,原生JS实现平滑回到顶部组件
- 客户端父进程提前死亡
- 1088红包数字代表什么_微信发红包的数字含义?各种红包代表着什么,你有没有发错呢?...
- oracle 混合分区表,Oracle 19C Hybrid partitioned tables混合分区表
- 汽车电子测试相关名词解释
- 微软2023届秋季校园招聘 | 内推名额等待优秀的你
- 【5G核心网】5GC核心网之网元AUSF
- 运动无线耳机哪款不容易掉、最不容易脱落的蓝牙耳机推荐
- mysql数据库中吧时分秒换算成秒的函数TIME_TO_SEC()
- docker中各ID之间的关系和计算(二)-layerID-diffID-chainID-cacheID的计算
- 行列式的拉普拉斯展开定理_如何证明行列式的拉普拉斯定理?
- ICC---data setup
- java基础--Java入门
- 运维日常之机房浪潮服务器硬盘红灯亮起,服务器一直响,raid磁盘红色。。。故障解决方法