目录
1.分支语句和循环语句
2.分支语句(选择结构)
3.switch语句
4.循环语句
分支语句有: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.1if语句
语法结构:
//单分支 if(表达式) 语句; //如果表达式成立进入语句 //双分支 if(表达式) 语句1; else 语句2; //如果表达式成立进入语句1,不成立进入语句2。 //多分支 if(表达式1) 语句1; else if(表达式2) 语句2; else 语句3; //如果表达式1不成立,进入表达式2,表达式2不成立,进入语句3。
举个例子:如果大于等于18就可以去工作
程序的运行结果满足了我们的要求但是当我们的条件小于18呢?
程序依就输出printf("工作\n");这条语句,说明这条语句并不受到我们if语句的控制,无论条件是否成立这条语句依然会执行。只要给我们的if语句加上大括号把语句放在里面,这样这两条语句就会受到if语句的控制。
这里一对大括号{}就是一个代码块,可以让里面的代码受到我们的函数、关键字的控制。
如果条件成立要执行多条语句就要加上大括号{},因为C语言if和else规定后面只能跟一条语句。.
if后面可以追加无数个else if。
2.2悬空else
这个代码输出的是hehe还是haha?
实际上什么都没有输出,实际else和第二个if匹配就近原则。
else和离它最近的if匹配,或者用{}大括号匹配它们。
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有停止和终止的意思。
加上break语句
3.2default子句。
default - 用来处理非法状况,当switch表达式的值并不匹配所有标签的值时,这个default子句后面的语句就会执行。
可以写在case最前面或者后面
嵌套使用
其他用法:
● while
● for
● do while
● go to
4.1 while
//while语法结构
while(表达式)
{循环语句:}
break在while循环中的作用:
其实在循环中只要遇到break,就停止后期的所有循环,直接终止循环。
所以:while中的break是用于永久终止循环的。
continue -是用于终止本次循环跳过后面的代码,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句执行下一次的判断部分。进行下一次循环的入口判断。
continue - (跳过继续)
此时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个表达式离得越远
break和continue在for循环中,他们的意义和在while循环中是一样的。但还是有些差异:
for循环
while循环
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++) 一个= 是赋值 两个== 是判断 一些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语句的简称(do语句),do语句的特点的。 循环至少执行一次,使用的场景有限,所以不是经常有限。(先执行后判断) 4.4 go to C语言中提供了可以随意滥用的goto语句和标记跳转的标号。 从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易的写出的代码。 但是某些场合goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。 列如:一次跳出多层循环。 多层循环这种情况使用break是达不到目的的。他只能从最内层循环退出到上一层的循环。 注:goto语句只能在同一个函数内部跳转不能跨函数跳转!!!!。do
//循环语句;
while(表达式);