分支语句和循环语句

目录

1.分支语句和循环语句

2.分支语句(选择结构)

3.switch语句

4.循环语句


1.分支语句和循环语句

分支语句有:if 和 switch。

循环语句 :while、for、do while。

C语言是一门结构化的程序设计语言

C语言支持三种结构:

1、顺序结构

2、选择结构

3、循环结构

什么是语句

C语句可分为以下五类

1.表达式语句

2.函数调用语句

3.控制语句

4.复合语句

5.空语句

先说明一下控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。

可以分成一下三类:

1.条件判断语句也叫分支语句:if语句、switch语句;

2.循环执行语句:do while语句、while语句、for语句。

3.转向语句:break语句、goto语句、continue语句、return语句。

2.分支语句(选择结构)

2.1if语句

语法结构:

//单分支
if(表达式)
	语句;
//如果表达式成立进入语句

//双分支
if(表达式)
	语句1;
else
	语句2;
//如果表达式成立进入语句1,不成立进入语句2。

//多分支
if(表达式1)
	语句1;
else if(表达式2)
	语句2;
else 
	语句3;
//如果表达式1不成立,进入表达式2,表达式2不成立,进入语句3。

举个例子:如果大于等于18就可以去工作

分支语句和循环语句_第1张图片

程序的运行结果满足了我们的要求但是当我们的条件小于18呢?

分支语句和循环语句_第2张图片

程序依就输出printf("工作\n");这条语句,说明这条语句并不受到我们if语句的控制,无论条件是否成立这条语句依然会执行。只要给我们的if语句加上大括号把语句放在里面,这样这两条语句就会受到if语句的控制。

分支语句和循环语句_第3张图片

这里一对大括号{}就是一个代码块,可以让里面的代码受到我们的函数、关键字的控制。

如果条件成立要执行多条语句就要加上大括号{},因为C语言if和else规定后面只能跟一条语句。.

if后面可以追加无数个else if。

分支语句和循环语句_第4张图片

2.2悬空else

分支语句和循环语句_第5张图片

这个代码输出的是hehe还是haha?

分支语句和循环语句_第6张图片

实际上什么都没有输出,实际else和第二个if匹配就近原则。

else和离它最近的if匹配,或者用{}大括号匹配它们。

3.switch语句

switch语句也是一种分支语句,常常用于多分支的请况。

比如:

输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期天

如果写成if...else if.....else if...的形式太复杂那我们就可以使用switch语句。

switch(整形表达式)

{

语句项;

}

语句项是什么?

是一些case语句;

如下:

(case整形常量表达式:

语句;)

3.1在switch语句中的break

在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支。比如:

int main()

{

int day = 0;

switch(day)

{

case 1 :printf(“星期一\n”);break; //case - 标签

......

....

}

}

break语句的实际效果是把语句列表划分为不同的部分。

如果没有break语句就会一直往下执行,break有停止和终止的意思。

分支语句和循环语句_第7张图片

加上break语句

分支语句和循环语句_第8张图片

3.2default子句。

default - 用来处理非法状况,当switch表达式的值并不匹配所有标签的值时,这个default子句后面的语句就会执行。

可以写在case最前面或者后面

嵌套使用

分支语句和循环语句_第9张图片

其他用法:

分支语句和循环语句_第10张图片

4.循环语句

● while

● for

● do while

● go to

4.1 while

//while语法结构

while(表达式)

{循环语句:}

分支语句和循环语句_第11张图片

break在while循环中的作用:

分支语句和循环语句_第12张图片

其实在循环中只要遇到break,就停止后期的所有循环,直接终止循环。

所以:while中的break是用于永久终止循环的。

continue -是用于终止本次循环跳过后面的代码,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句执行下一次的判断部分。进行下一次循环的入口判断。

continue - (跳过继续)

分支语句和循环语句_第13张图片

此时i ++之后i=5进入循环,if判断i如果等于5则执行continue跳过后面的代码不执行,此时i一直等于5导致程序死循环。

4.2 for

for循环

语法

for(表达式1;表达式2;表达式3)

循环语句:

表达式1:表达式1为初始化部分,用于初始化循环变量的。表达式2:表达式2为条件判断部分,用于判读循环时候终止,

表达式3:表达式3为调整部分,用于循环条件的调整。

实际上就用一种循环就能解决所有问题

for循环语句的优点

能把三个表达式放在一个括号里

while循环语句的缺点

代码写的越多3个表达式离得越远

分支语句和循环语句_第14张图片

break和continue在for循环中,他们的意义和在while循环中是一样的。但还是有些差异:

for循环

分支语句和循环语句_第15张图片

while循环

分支语句和循环语句_第16张图片

for语句的循环控制变量

1.不可在for循环体内修改循环变量,防止for循环失去控制

2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法。大不是绝对。

区间

设a,b是两个实数,而且a

(1)满足a

(2)满足的a小于等于x小于等于b实数x组成的集合称为闭区间,记作[a,b];

(3)满足a小于等于x小于b或a

前闭后开区间(i = 0; i < 10; i++),前闭后闭区间(i = 0; i <= 10; i++)

分支语句和循环语句_第17张图片

一个= 是赋值

两个== 是判断

一些for循环的变种

代码1

int main()

{

for (;;) //1、for循环的初始化、调整、判断 都可以省略

{ //但是:

printf("hehe\n"); //for循环的判断部分如果被省略,那判断条件就是:恒为正,死循环

} //2、如果不是非常熟练,不要随便省略代码

return 0;

}

代码2

int main()

{

int i = 0;

int j = 0;

for (; i < 10; i++)

{

for (; j < 10; j++)//2、如果不是非常熟练,不要随便省略代码

{

printf("hehe\n");

} //10*10先判断进入执行里面的for,在执行外面的for

}

return 0;

}

变种2

int main()

{

int x, y;

for (x = 0, y = 0; x < 2 && y < 5; x++, y++)

{

printf("hehe\n"); //打印2次

}

return 0;

}

(假设:把i++发在循环体里面先++或者去当做判断条件会有什么效果呢?)

4.3 do while

do
	//循环语句;
while(表达式);

分支语句和循环语句_第18张图片

do while语句的简称(do语句),do语句的特点的。

循环至少执行一次,使用的场景有限,所以不是经常有限。(先执行后判断)

4.4 go to

C语言中提供了可以随意滥用的goto语句和标记跳转的标号。

从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易的写出的代码。

但是某些场合goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。

列如:一次跳出多层循环。

多层循环这种情况使用break是达不到目的的。他只能从最内层循环退出到上一层的循环。

注:goto语句只能在同一个函数内部跳转不能跨函数跳转!!!!。

你可能感兴趣的:(C语言,c语言)