在学习分支循环语句之前,首先得了解C语言,C语言是一门结构化的程序设计语言,具体结构分为以下三类:选择结构,顺序结构,循环结构。
而其中最简单的就是顺序结构,那么什么是顺序结构呢?举个例子,在你做一件事情的时候,从头做到尾。
接下来就介绍选择结构,同样举个简单的例子,从北京到广州,你可以坐飞机,坐高铁,同样也可以自己开车,这是你在去往广州的选择,这就是选择结构。
最后介绍循环,举个简单的例子就是你每天都吃饭,这就是一件你在循环做的事情。
分支语句包括两种:switch和if
循环语句包括三种:while和for和do......while;
分支语句
if语句
if语句的语法形式如下所示:
表达式如果为真,那么就执行语句;否则,就不执行(注:C语言中用0表示假,用非表示真)
举个例子:输入一个整数,判断这个整数是否为奇数。
在上面这个例子中,我们输入了一个5,最后发现结果是一个奇数。根据我们以前在数学里学过的知识知道,一个数如果不是奇数,那么就是一个偶数,如果我们想实现这个代码,该怎么办呢?
这个用到了一个if.....else语句,它的语法形式如下:
这个可以理解为:表达式为正,执行语句1;为假,执行语句2。(注:一般来说,else后面是不用加表达式的。因为一个数不是奇数就是偶数,那么判断一个数的时候,这个数除以2不等于0了,那么这个数不是偶数了,那你还要去判断那个书那个书是否为奇数吗?答案肯定的是不需要了)
此外,我在写代码的时候,不管是if还是else,我都用了一个{ },这个其实就是因为if和else都是默认只识别一个语句(建议带上一个{ })。
嵌套if,在if...else语句中,可以用else与另外一个if语句连用,构成多重判断。
例如:输入一个整数,判断其正负,还是0。代码如下:
这就是嵌套,在if....else中继续使用其本身(在判断哪一部分使用在外部,哪一部分使用在里头,我个人认为是这样的:首先比较出哪两部分是对立的,例如:正数和负数是两个对立,那么这两个肯定是要放在一个if...else中的。接下来再看剩下的是否能组成相对立的部分:这里头可能需要自己总结,剩下的是非0和0,这个非0是要自己总结的,这个就是判断的过程)
上面代码:首先输入一个数判断是否为0,如果是则执行对应的语句;如果不是0,那么接下来,再判断是否小于0,如果是则执行对应的语句,反之就执行else对应的语句。
接下来,讲一个关于悬空else的问题:如果有多个if和else,else总是和最接近的if匹配。
举个例子:
从程序运行的结果来看,为什么上面什么都没有打印呢?
其实else是与它最接近的那个if相匹配的,那么这个代码就是最上面的那个if包括下面的if....else语句
就是这个样子,如果加个{ },会更加明显看出。关于为什么什么都没有打印呢,就是因为a等于0,不等于1,所以更本就不执行if语句。
以上就是if...else的讲解,接下来,就开始介绍switch语句
switch语句
switch语句是一种特殊形式的if...else结构,用于判断条件有多个结果的情况。
根据表达式不同的值执行不同的语句,如果找不到对应的值,就执行default分支。
注:1.switch后面的表达式必须是整形表达式
2.case后面的值,必须是整型常量表达式
3.每一个case语句后都应该跟一个break,这样才能够跳出那个switch语句,
如果没有加上,那就会一直执行到这个switch语句结束。
4.default语句与case语句之间没有固定的顺序关系,但是通常是把default语句放在最后
以上就介绍了分支语句的两种。
接下来,开始介绍循环语句
循环语句
1.while循环
如果有多条语句,那么也是应该加上{ }
while循环首先是来判断表达式的真假。如果为真,就执行下面的语句,执行完,上来继续判断表达式的真假,如果为真,就执行下面的语句,一直这样循环往复直到表达式为假或者死循环;如果为假,那么就直接跳出该循环。
练习:在屏幕上打印1~10
2.for循环
for循环是三种循环里头用的最多的一种
如果有多条语句,那么也是应该加上{ }
表达式1是循环变量初始化
表达式2是循环条件判断
表达式3是循环变量的调整
首先执行表达式1,接下来执行表达式2,若表达式2的结果不等于0,那么就开始执行语句,执行完语句,就执行表达式3,调整循环变量,接着就继续执行表达式2,判断循环的条件,若表达式2的结果不等于0,那么就继续执行语句,执行完语句,就执行表达式3,调整循环变量,一直这样执行下去,直到表达式2的等于0,才停止,或者死循环;如果表达式2的结果为0,那么就直接跳出该循环。
练习:在屏幕上打印1~10的值
3.do...while循环
如果有多条语句,那么也是应该加上{ }
do...while循环首先是执行语句,执行完之后,再判断表达式的真假,如果为真,就继续执行语句,执行完后,又判断表达式的真假,一直这样重复,直到表达式的结果为假或者死循环;如果表达式2的结果为0,那么就直接跳出该循环。
练习:在屏幕上打印1~10的值
do...while循环与for循环还有while循环最大的区别就是其是先执行再判断,后者两个是先判断在执行。所以do...while循环不管表达式的真假,其都会执行一次。
break和continue
这两个都是在循环是用于终止循环
break是永久性的终止循环,直接跳出循环
continue是跳过本层循环后面的代码
break举例:
当i等于5时,执行if语句,break直接跳出for循环,后面的数字也不再打印
continue举例:
这里我们发现这两个结果最终不同,是因为for循环跳过continue后面的代码,回到调整部分,那么这个i就不再等于 5,可以继续打印后面的值了;但是这个while循环的continue跳过后面的代码,继续判断,i还是等于5,那么就死循环了。综上所述:只要调整部分在continue之前,那么就不会陷入死循环。