关于C语言switch这个奇葩的东东。

很多C语言习题中都会有输入考试成绩,判断等级(90-100优,80-89良……0-59不及格)的题目。

首先,刚开始学到分支结构会用if … else if … else if …… else这样的结构,例如:

if (0 = g)

GP[n] = 0;

else if (60 = g)

GP[n] = 1;

else if (70 = g)

GP[n] = 2;

else if (80 = g)

GP[n] = 3;

else GP[n] = 4;

然后呢,又学到switch,则会变成,先除以10,利用趋零截尾的性质,然后把0-5直接合并了……例如:

ch = (int)(g / 10);

if (ch < 6)

{

ch = 5;

}

switch(ch)

{

case 5 : GP[n] = 0;break;

case 6 : GP[n] = 1;break;

case 7 : GP[n] = 2;break;

case 8 : GP[n] = 3;break;

case 9 : GP[n] = 4;break;

case 10 : GP[n] = 4;break;

}

但是呢,其实呢,这个if再把0-5合并 是可以去掉的,利用switch的特性,结果是这样子:

switch(grade/10)

{

case 0 :

case 1 :

case 2 :

case 3 :

case 4 :

case 5 : rank = 'E';

break;

case 6 : rank = 'D';

break;

case 7 : rank = 'C';

break;

case 8 : rank = 'B';

break;

case 9 :

case 10: rank = 'A';

break;

default: puts("Invalid grade");

exit (1);

}

记得在expert C programing中,作者就很BS当初C语言把switch中,每个分支都要加上break;跳出才不致于执行完所有语句。根据作者统计,97%的使用了switch判断分支的代码都是要用上break;的,也是就是说“完全的选择”,而只有剩下的少得可怜的switch会出现不带break;的情况,所以当时sun的编译器会对switch case不带上break;作waning。但是这里或许正是switch不带break;时的用途所在吧。

其实个人看来,使用switch时加上break;已是非常自然的,不加上break;反而觉得有点怪怪的。正如文中所述,前面两种想法是3月的时候做ACM OJ的模拟题时想到的,而第三种方法还是这两天逛论坛时无意才想起来……

不过,话说回来,这个例子是特例,其实在绝大多数时候,我严重地支持expert C programing的作者的。

至于第三种方法效率是否有所提高,我也不得而知。第一种我个人是比较反对的,原因是多重if else判断让人眼花。通常遇到多重分支判断都会使用switch。其实在本文中,第二第三种应该是不相上下的。

c语言switch优点,关于C语言switch相关推荐

  1. 电脑java语言有什么用_Java语言是什么?_Java语言有什么优点

    问题:Java是什么?Java有什么优点 Java是一门面向对象计算机编程语言,java不仅仅吸收了C++语言的各种优点,而且还除去了C++里面很多难以理解的多继承.指针等概念,因此java语言就具有 ...

  2. c语言成颖pdf,程序设计语言开篇导学.ppt-资源下载在线文库www.lddoc.cn

    <程序设计语言>开篇导学.ppt 程序设计语言开篇导学,成颖 教授 博士生导师 南京大学信息管理学院,1.引言,C语言程序设计是计算机相关学科中的一门基础课,也是培养结构化程序设计思想以及 ...

  3. c语言 switch案例,C语言程序设计 2. switch语句的运用 案例 switch条件语句.docx

    C语言程序设计补充案例 C语言程序设计 案例 switch条件语句 一.案例描述 考核知识点 名称:switch条件语句 练习目标 了解switch语句的执行流程 掌握switch语句的使用方法及使用 ...

  4. c语言 switch语句大小,C语言switch语句(板式整齐)

    <C语言switch语句(板式整齐)>由会员分享,可在线阅读,更多相关<C语言switch语句(板式整齐)(38页珍藏版)>请在人人文库网上搜索. 1.switch 语句,1, ...

  5. go语言中及格比较特殊的switch语法

    go语言中几种特殊的switch语法 package mainimport ("fmt" )func main() {// go语言中switch的特殊用法// 当没有expr的时 ...

  6. c语言中switch语句流程图_C语言:C语言保留字(关键字)

    保留字(reserved word) 保留字又称关键字. 指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用. 每种程序设计语言都规定了自己的一套保留字. 例如:BASIC语言规 ...

  7. c语言switch scanf语句,c语言switch语句 谢谢·!~!~

    c语言switch语句 谢谢·!~!~以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语言switch语句 谢谢·!~ ...

  8. c语言switch case ppt,C语言-09switch-case多分支开路语句.ppt

    C语言-09switch-case多分支开路语句.ppt C语言程序设计,第九课 switch-case 多分支开路语句,9.1 switch-case 语句,在编写应用程序时,在必须从很多可以的选项 ...

  9. c语言商场收款程序,c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式...

    c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语 ...

  10. 【C语言】细品分支结构——switch语句

    ©作者:凡人编程传 ©系列:C语言初阶(适合小白入门) ©说明:以凡人之笔墨,书写未来之大梦 这一期我们介绍分支结构的最后一个语句,switch语句,希望你能在文章中有所收获,话不多说,直接开干. 文 ...

最新文章

  1. 【进程通信】Socket
  2. Git 常用命令集锦 1
  3. python开源的人脸识别库_什么是 SeetaFace 开源人脸识别引擎
  4. 程序员探案之 Python 和 Redis 的“第三者”
  5. 一句公道话引发的......
  6. 一个沉重的问题:软件开发到底还有价值吗?
  7. vlookup 公式使用及常见问题
  8. 全国地名联动选择的程序|地名三级联动(原创JS无数据库19K优化版)
  9. GUI 尚学堂马士兵视频上留的作业,自己改出来的
  10. 蓝牙技术|伦茨科技智能语音遥控器方案简介
  11. linux下使用LVM合并挂载硬盘以及扩容
  12. not annotated with HTTP method type (ex. GET, POST) 问题解决
  13. ubuntu 16.04 Clion2018.1.1 添加桌面快捷方式
  14. 真实案件之:意料之外的 RAC 宕机罪犯 - 子游标
  15. 026 三角函数求导公式推导
  16. 计算机c盘满了怎么移到d盘去,我电脑里的c盘满了,d盘还有容量,请问怎么把d盘多的容量移到c盘中?就是所谓的分区。...
  17. java程序连接redis服务器
  18. 创新实训1 小组分工以及项目部署
  19. 如何将搜狗拼音输入法键盘布局更改成日文106键布局
  20. python中文文本分析_python简单的分析文本

热门文章

  1. c++ PDFium pdf转为图片(实例)
  2. windows 生成ssh 密钥
  3. 牛牛游戏牛型判断算法实现
  4. kubernetes部署Ingress-nginx
  5. pageadmin CMS网站建设教程:信息日期格式的设置
  6. Python绘制二元函数图像
  7. IDEA从Git 上down 项目报错
  8. 如何构建本地化的blast2go数据库
  9. 上帝的归上帝 凯撒的归凯撒
  10. 用Nodejs爬取Matrix67的博客