什么是语句
语句是一个程序逻辑的体现,它描述了程序。从程序流程的角度来看,程序可以分为三种基本结构, 即顺序结构、分支(选择)结构、循环结构。这三种基本结构可以组成所有的各种复杂程序。
C语言提供了多种语句来实现这些程序结构。
C程序的执行部分是由语句组成的。 程序的功能也是由执行语句实现的。
其中分支语句包括if语句,switch语句。循环语句包括while语句 for语句 do while语句。
注意:c语言中由分号;隔开的就是一条语句。
分支语句之if语句
if语句的语法结构
结构1:
if(表达式)
语句;
结构2:
if(表达式)
语句1;
else
语句2;
结构3:(该语法结构适用于多分支的情况)
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
在if语句中,如果表达式为真,则语句执行。如果表达式为假,则不执行语句。
注意:表达式成立,要执行多条语句式,需要利用大括号将语句列表括起来
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
书写不规范可能存在悬空else的问题
如上图所示,输出结果为空。因为else语句会与之最近的未匹配过的语句进行匹配。
改正如下:
此时else语句才是和if(a==0)相对应。
分支语句之switch语句
该语句常用于多分支的情况
swicth语句的语法结构
switch(整型表达式) //必须为整型,不能为浮点型
{
case 整型常量表达式: //注意后面的冒号,另外必须为整型,不能为浮点型
执行语句;
}
注意:在swicth语句中,我们没法直接实现分支。需要搭配break使用才能实现真正的分支。
输出的情况一致时,可以使用上面的形式进行简化。
如果表达式的值和所有的case标签的值都不匹配。程序并不会终止,也不会报错,只是所有的语句都被跳过而已。如果并不想忽略不匹配所有标签的值,可以在语句列表中增加一条default语句。
当switch语句表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。
注意:default语句可以出现在语句列表的任意位置,每一个switch语句只能出现一条default子句。
循环语句之while
当条件满足时,if语句后的语句执行,否则不执行。这个语句存在缺陷,该语句只会执行一次。
但是在我们的生活中,很多事情需要我们重复进行很多次。
c语言帮我们引入了while语句,可以实现循环的过程
while语句语法结构
while(表达式)
{
循环语句;
}
while语句的执行流程:
例如利用while语句实现数字1到10的打印
while语句中的break和continue
注意:在whlie循环中,只要遇到break,就会停止后期所有的循环,直接终止循环。所以在shile语句中,break的作用是用来永久终止循环的。
当i=5时,会直接进入到下一次循环的入口判断。因为没有执行i++,所以之后i的值会一直为5.所以打印结果为1234555555555.........
总结:continue是用来终止本次循环的,也就是本次循环中continue后面的代码不会再执行,而是直接跳转到while语句的判断部分,进行写一次循环的入口判断。
循环语句之for循环
前面介绍了while循环,为什么还要介绍for循环呢。因为while循环存在着一定的缺点,当代码过长时,初始值,判断值,调整值距离远,不便于阅读和修改。for循环的优点是将初始值,判断值,调整值放在了一起。
for循环的语法结构
for(表达式1;表达式2;表达式3)
循环语句;
表达式1是初始化部分,用于初始化循环变量的。表达式2是条件判断部分,用于判断是否终止循环。表达式3是调整部分,用于循环条件的调整。
for循环中的break和continue
在for循环中,break语句是直接跳出大循环,continue是跳出本次循环。
注意:
不可以在for循环变量体内修改循环变量,防止for循环失去控制
建议for语句的循环控制变量的取值采用前闭后开区间写法
循环语句之do while
do语句的语法结构
do
循环语句;
while(表达式);
do语句的特点:
循环至少执行一次,使用的场景有限,所以不是经常使用。
do语句中的break语句和continue语句。
break语句是用来跳出大循环,continue循环是用来跳到判断部分。