C语言switch语句进阶用法----范围型控制

  • 关于C语言中的switch语句,先来说说基本知识,switch后括号中的只能是整型表达式(也可以是字符,字符是整型数据中的一种类型),而case后的各项结果只能是整型常量表达式,一般为相应的单个数据或者相应字符。


  • case后的结果一般为单个数据,可以解决一些使用情况,但当我们表示的结果是一个范围时,就会显得很麻烦。

  • 比如:有一按路程长短分段计算运费的题,现有路程s,当0<s<250时运费无折扣,当250≤S<500时,运费打九折,当500≤S<3000时,运费打八折,S≥3000时,运费七五折,这种题用switch语句该怎么处理怎么思考呢?

  • (不嫌麻烦可以一个一个将情况列出)这样就急需一种新方法来解决这一情况,我经过总结,得到了以下方法体系,和大家分享,希望对大家有所帮助(・∀・)

  • 方法:       NO.1:缩小范围(找规律) 即找出所有边界值的公约数,选择适合的公约数x,用所有的边界值除以这个x将得到的值作为新的边界(尽量使新的边界值为个位数)                         如上题可以选择公约数250,这样处理后边界值就变为0、1、2、12。这样再用case处理就会方便很多。因此我们可以将代码写成这样(记住default可以用来总结一组不规则的情况哦)b0f80e99688644e6b39017c4e2a5d134.png

     

     但可以看出对于500≤S<3000的情况我们这种处理似乎也不太合理这样我们还有进一步优化

  • 方法:   NO.2:对于有多种结果对应一种计算方法的情况(如上述case从1到11都对应一个计算方法)我们可以在switch语句之前引进一个赋值操作,来对500≤S<3000的情况一个统一的结果这样我们就可以将代码优化成这样e687fc7aab0a41368ece296d80d8ad79.png

     

  •  这样就可以用switch语句编写一些对范围有要求的情况,既满足要求又可以保证不出现多个case对应一种计算方法的冗长代码,不仅简洁还提高了代码的可读性。

  • 总结一下:对于switch语句中对范围型有要求的题,1.我们首先要想办法缩小范围,方法是找到边界值合适的公约数,让边界值除以公约数以达到缩小范围的目的,让需要用到case的数量变少;2.如果某段范围缩小后还是不能用少量case表示,我能可以在switch语句前提前对这种情况赋予特殊的固定值,让switch语句中这种情况要用到的case数量减少(记得default可以总结一类要用到多个case的情况,要好好利用哦)。总之我们的目的就是要简化代码,让代码可读性更强更优质!

  • 以上就是我今天的总结,希望可以帮到大家(・∀・),我会持续分享我在学习编程时的一些想法与思路,希望可以和和大家一起进步!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值