c语言switch优点,关于C语言switch
关于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相关推荐
- 电脑java语言有什么用_Java语言是什么?_Java语言有什么优点
问题:Java是什么?Java有什么优点 Java是一门面向对象计算机编程语言,java不仅仅吸收了C++语言的各种优点,而且还除去了C++里面很多难以理解的多继承.指针等概念,因此java语言就具有 ...
- c语言成颖pdf,程序设计语言开篇导学.ppt-资源下载在线文库www.lddoc.cn
<程序设计语言>开篇导学.ppt 程序设计语言开篇导学,成颖 教授 博士生导师 南京大学信息管理学院,1.引言,C语言程序设计是计算机相关学科中的一门基础课,也是培养结构化程序设计思想以及 ...
- c语言 switch案例,C语言程序设计 2. switch语句的运用 案例 switch条件语句.docx
C语言程序设计补充案例 C语言程序设计 案例 switch条件语句 一.案例描述 考核知识点 名称:switch条件语句 练习目标 了解switch语句的执行流程 掌握switch语句的使用方法及使用 ...
- c语言 switch语句大小,C语言switch语句(板式整齐)
<C语言switch语句(板式整齐)>由会员分享,可在线阅读,更多相关<C语言switch语句(板式整齐)(38页珍藏版)>请在人人文库网上搜索. 1.switch 语句,1, ...
- go语言中及格比较特殊的switch语法
go语言中几种特殊的switch语法 package mainimport ("fmt" )func main() {// go语言中switch的特殊用法// 当没有expr的时 ...
- c语言中switch语句流程图_C语言:C语言保留字(关键字)
保留字(reserved word) 保留字又称关键字. 指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用. 每种程序设计语言都规定了自己的一套保留字. 例如:BASIC语言规 ...
- c语言switch scanf语句,c语言switch语句 谢谢·!~!~
c语言switch语句 谢谢·!~!~以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语言switch语句 谢谢·!~ ...
- c语言switch case ppt,C语言-09switch-case多分支开路语句.ppt
C语言-09switch-case多分支开路语句.ppt C语言程序设计,第九课 switch-case 多分支开路语句,9.1 switch-case 语句,在编写应用程序时,在必须从很多可以的选项 ...
- c语言商场收款程序,c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式...
c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语 ...
- 【C语言】细品分支结构——switch语句
©作者:凡人编程传 ©系列:C语言初阶(适合小白入门) ©说明:以凡人之笔墨,书写未来之大梦 这一期我们介绍分支结构的最后一个语句,switch语句,希望你能在文章中有所收获,话不多说,直接开干. 文 ...
最新文章
- 【进程通信】Socket
- Git 常用命令集锦 1
- python开源的人脸识别库_什么是 SeetaFace 开源人脸识别引擎
- 程序员探案之 Python 和 Redis 的“第三者”
- 一句公道话引发的......
- 一个沉重的问题:软件开发到底还有价值吗?
- vlookup 公式使用及常见问题
- 全国地名联动选择的程序|地名三级联动(原创JS无数据库19K优化版)
- GUI 尚学堂马士兵视频上留的作业,自己改出来的
- 蓝牙技术|伦茨科技智能语音遥控器方案简介
- linux下使用LVM合并挂载硬盘以及扩容
- not annotated with HTTP method type (ex. GET, POST) 问题解决
- ubuntu 16.04 Clion2018.1.1 添加桌面快捷方式
- 真实案件之:意料之外的 RAC 宕机罪犯 - 子游标
- 026 三角函数求导公式推导
- 计算机c盘满了怎么移到d盘去,我电脑里的c盘满了,d盘还有容量,请问怎么把d盘多的容量移到c盘中?就是所谓的分区。...
- java程序连接redis服务器
- 创新实训1 小组分工以及项目部署
- 如何将搜狗拼音输入法键盘布局更改成日文106键布局
- python中文文本分析_python简单的分析文本