您的位置:首页 > 编程语言 > C语言/C++

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语句的去其他用法,烦请指点一二,小生在此抱拳谢过了。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
阿古  发布了1 篇原创文章 · 获赞 0 · 访问量 291 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: