上一章我们讲了C语言分支结构中的if...else,那么这一章我们来讲一下分支中的另外一种结构switch。
一般来说在C语言分支结构中if...else结构可以搞定几乎所有的判断语句,但有时候用if...else结构会比较繁琐,而用switch就会简洁方便很多。比如我们输入一个字符
(就输入a和b吧),然后相应的输出一个以该字符开头的动物名称。
那如果用if...else怎么写呢?
While scanf ch
If ch=='a'
Printf argali(盘羊)
continue;//跳过这次循环
If ch=='b'
Printf babirusa(鹿豚)
那么if虽然也可以处理,但是其实在C语言中还有一种比较简洁的结构,switch来解决这个程序会更加具有可读性。
通过这个列子,我们来看一下switch的结构:
switch(integer expression)--------→这里必须是int型常量或int型常量表达式
{
Case constant1:-------------------------->case标签不能是变量
Statements------------------→可选
break;-----------------------→可选
Case constant2:
Statements--------------------→可选
break;------------------------→可选
default:----------------------------→可选,default标签表示如果上面的标签都没有匹配那么执行这个标签的代码
Statements---------------------→可选
break;--------------------→可选
}
那么switch是怎么执行的呢:
在switch中case标签中的break是可以不写的,那么不写会造成什么后果呢,如果没有break那么程序就会顺序执行下去,直到碰到break或者到switch结束。
那么我们什么时候用if...else什么时候用switch呢,其实有时候并没有什么选择,因为switch的条件太严格必须是int型的常量或常量表达式。所以一般碰到不是int型的常量或者范围条件基本都要用if...else。
在结尾呢,在介绍一个跳转语句:goto。
goto平时基本不会用到,而且呢,最好也不要用。
直接用一个程序介绍一下吧:
好了这一章结束,C语言中的分支也讲完了,不知道大家都学会了么?
我们在来做一题吧:
要求输入一周中的工作小时数,然后打印工资总额,税金以及净工资。作如下假设:
a、 基本工资等级=10.00美元/小时
b、 加班(超过40小时)=1.5倍的时间
c、 税率 前300美元为15%
下一个150美元为20%
余下的为25%
使用#define(预处理命令格式是"#define 常量的符号名 值"如#define WAGE 10)定义常量。
大家可以把程序写在评论里交流一下。
,