目录
2.3 switch语句中的case和default的顺序问题
今天我们来说一说在我们c语言中一个很重要的东西——分支与循环,在我们c语言中分别有三种结构分别是:顺序结构、选择结构以及循环结构。基本上所有的事我们都能拆成这三种结构来实现,我们使用if、switch实现分支的结构,使用for、while、do while来实现循环。接下来我将一一介绍他们的结构以及用法。
1.if语句
1.1 if
if语句它的语法形式如下:
if后面括号括起来的表达式用于if语句的判断,表达式成立则为真,表达式不成立则为假,则if语句将不会执行而我们c语言中,0表示假,非0c为真,意思就是说表达式的结果如果为0的话,则if语句不会执行,不是0的话,语句会执行。下面我们便尝试用它来写一串代码,看一下吧。
在这串代码中通过if来判断一个数是不是偶数,input这个数如果%2为0的话则说明这个数是偶数,表达式则为真,if语句将会执行,反之则不会。我们来看看输出的结果:
我们if语句的执行流程如下:
1.2 else
我们前面输入的if代码,其实我们明显能感觉到它的分支不完整,一个数的话不是偶数,那肯定就是奇数了,而刚刚我们只输出了一个数是否为偶数,并没有说它是奇数,所以这个时候我们就要使用到else,else会与if连用,构成我们的if......else语句了,它的形式如下:
它的意思是,if语句如果不能执行,则会执行else中的语句,下面我们来看一串代码:
我们输入123这个数,执行结果为:
1.3 分支中包含多条语句
这里需要注意的是if和else语句中默认都是只控制一条语句的,例如:
执行结果:
1.
2.
你可以发现在上面结果中无论输入的是不是偶数,他都会打印“%d是偶数”在屏幕上。
这是因为 if 语句只能控制⼀条语句,就是 printf("%d是偶数\n"); ,if语句为真,则可以整除2, if语句为假,则不打印,对于 printf("%d是偶数\n"); 是独立存在的,不管if语句的条件的真 假,都会被执⾏。那如果我们要if语句同时控制2条语句,怎么办呢?那就要使⽤ {} 将代码括起来, else 后也可以跟上大括号。下面我们试着写一串代码:
输出的结果为:
1.4 嵌套if
if else语句中,else可以与另一个if语句连用,形成多重判断。
比如:要求输入一个整数,判断输入的整数是0,还是整数或者负树,如下代码:
输入结果为:
再比如这个代码:
要求输⼊⼀个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:负数。
上面代码中用红框框起来的代码也是嵌套在if语句中的,构成了嵌套if语句。
上面就是嵌套if语句的语法,有了嵌套if语句,我们就能完成更多复杂的逻辑判断了。
2.switch语句
switch语句作用也是进行分支选择,它是一种特殊形式的if.....else结构,用于判断条件有多个结果的情况。它把else if改成更易用更易读懂的形式。它的形式如下:
2.1if语句和switch语句的对比
例如:输入任意的一个整数,计算除3后的余数。
if语句完成的话,例如:
而如果我们用switch语句改写的话,如下:
这里需要强调的是:
1.case和后面的数字之间必须有空格
2.每一个case语句中的代码执行完成后,需要加上break,才能跳出switch语句。
而如果我们这里如果去掉break会是什么情况呢?我们继续看一串代码:
输出的结果为:
在这里我们发现,10除以3的话明明余数是1,但是最终输出的结果多出了一行“余数是2”的打印。这是为什么呢?
原因是 switch 语句也是分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。就⽐如上⾯的代码就执⾏了 case 2 中的语句。
所以在 switch 语句中 break 语句是⾮常重要的,能实现真正的分⽀效果。
当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了。
2.2 switch语句中的default
在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊default ⼦句。
当switch后边的expression的结果既不是value1,又不是value2的时候,就会执行default,下面我们我们看一串代码:
当我们输入8的时候,其结果为:
2.3 switch语句中的case和default的顺序问题
在switch语句中并没有规定它们的顺序问题,不是说case只能在default前面,default只能在最后面,这可以根据实际需求来输入,不过我们通常都将default放在最后面来处理。
3.while循环语句
3.1while
前面讲了分支,接下来我们就来介绍一下循环吧,循环中的一种便是我们的while语句,while语句它的形式为:
while语句其实和我们的if语句有点相似,它也是先进行表达式的判断,表达式为真则代表为非0,while语句开始执行,语句执行完后再继续判断,下一次是否还能执行。而如果表达式为假则代表为0,while语句不会执行循环变回结束。我们可以看一下while的执行流程图:
我们了解了while语句的之后,下面我们试着用while语句来进行数字1——10的打印吧:
输出的结果为:
4. for循环语句
4.1 for语句
for语句也是循环语句中的一种,它的形式如下:
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
![](https://img-blog.csdnimg.cn/0e4449806dda44bead5aa8690d20ce1a.png)
![](https://img-blog.csdnimg.cn/20a409d15ffd47b7aceccbc593a3fbf8.png)
![](https://img-blog.csdnimg.cn/0230b71787734f12b80d346b2ae921a8.png)
5.do while循环
5.1 do while语句
接下里我再来介绍循环语句中的do while,它相比与前两种循环,它的使用频率相对较少
do while语句的形式为:
![](https://img-blog.csdnimg.cn/98624afc25d041288888384148fe8a62.png)
![](https://img-blog.csdnimg.cn/b024cca907c04c05881158f32a625577.png)
![](https://img-blog.csdnimg.cn/2b906bb918794e8c88601208b1f0bd0a.png)