三大结构
C语言中有三大结构,分别是 顺序结构、选择结构和循环结构。
选择结构
关系运算符和关系表达式
关系运算符及其优先次序
C语言提供6种关系运算符:小于(<) 、小于等于(<=)、大于等于(>=)、大于(>)、等于(==)、不等于(!=)
1.结合性:自左向右
2.优先级
(<、<=、>=、>)4种关系运算符的优先级别相同
(==、!=)优先级相同
前4种优先级高于后2种
关系运算符的优先级低于算术运算符、高于赋值运算符
关系表达式
1.定义:由关系运算符连成的表达式。关系运算符的两边可以是C语言中的任何合法表达式。
2.关系运算符的结果是一个整数值——“0”或”1”,用非零值来表示”真”,用零值表示”假”。
3.当关系运算符两边值类型不一致时,系统将自动转化。
逻辑运算符和逻辑表达式
逻辑运算符及其优先级
C语言提供了3种逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!) 。其中”&&”和”||”是双目运算符,而”!”是单目运算符,要求必须在运算对象左边。
1.结合性:自左至右
2.优先级:”!”>”&&”>”||”
“!”>算术运算符>关系运算符>”&&”>”||”>赋值运算符
逻辑表达式
1.逻辑表达式由逻辑运算符和运算对象组成。
2.参与逻辑运算的对象可以是一个具体的值,还可以是C语言中任意合法的表达式。
3.逻辑表达式的运算结果为1(真)或者为0(假)
● A&&B运算中,只有A,B同为真时才为真
● A||B运算中,只有A,B同为假时才为假
● 关系运算符不能连用,但可用逻辑运算符表示,如0<x<10 表示为 0<x&&x<10
if语句和用if语句构成的选择结构
if语句的几种形式
- if(表达式)语句
if是C语言中的关键字
表达式两侧的括号不可少,并且只能是圆括号
紧跟着的语句,称if子句,如果在if子句中需要多个语句,则应使用大括号{}把一组语句括起来构成复合语句 - if(表达式) 语句1
else 语句2 - if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式3) 语句3
…
else if(表达式m) 语句m
else 语句n
● “语句1”是if子句,”语句2···语句m”是else子句
● 子句若为多余语句应用花括号({})把这些语句括起来组成复合语句
● else必须与if配对,共同组成if…else语句
if语句的嵌套
在if语句中又包含一个或多个if语句结构,称为if语句的嵌套。
条件运算符构成的选择结构
- 条件运算符 ? :
- 条件运算符的一般形式:表达式1?表达式2:表达式3
- 求解过程:先求解表达式1 的值,当表达式1的值是非0时,以表达式2的值作为整个条件表达式的值,当表达式1 的值是0时,以表达式3的值作为整个条件表达式的值。
4.优先级:条件运算符高于赋值运算符,但低于逻辑运算符、关系运算符和算术运算符。
switch语句
switch 语句是C语言提供的多分支选择语句,用来实现多分支选择结构。
一般形式:
1 | switch(表达式) |
●switch 后面用花括号括起来的部分是switch语句体。
●switch 后面括号内的“表达式”,可以是C语言中任意合法表达式,但表达式两侧的括号不可省略。
●case与其后面的常量表达式合称case语句标号,常量表达式的类型必须与switch后面的表达式的类型相匹配,且各case语句标号的值各不相同,不能重复。
●default也是关键字,起标号的作用,代表除了以上所有case标号之外的那些标号,default标号可以出现在语句体中任何标号位置上,当然也可以没有。
●case语句标号后的语句1,语句2,可以是一条语句,也可以是若干条,在必要时,case语句标号后的语句可以省略不写。
执行过程:
①首先计算”表达式”的值,假设为m
②从第一个case开始比较,”整数数值1”和m,如果它们相等,就执行冒号后面的所有语句,也就是从”语句1”到”语句n+1”不管后面的case是否匹配成功。
③如果”整型数值1”和m不相等就跳过它比较后面的表达式,直到发现某个整型数值相等的表达式,则执行其后面的所有语句。
④如果直到最后一个表达式都没有与表达式m值相匹配,则执行default后的”语句n+1”
●若想在switch语句中仅执行一个分支,则必须在每个分支后添加break语句
●break是C语言的一个关键字,专用于跳出switch语句,所谓”跳出”是指一但执行就不会再执行switch中任何语句。
循环结构
while循环语句
1.一般形式:
while(表达式) 循环体
●while是C语言的关键字
●紧跟其后的表达式可以是C语言中任意合法的表达式,该表达式是循环条件,由它来控制循环体是否执行。
●循环体只是一条可执行语句,当多项操作需重复时可用复合语句。
2.执行过程
①第一步:计算紧跟while后括号中表达式的值,当表达式的值为非0时,则接着执行while语句中的内嵌语句;当表达式的值为0时,则跳过该while语句,执行while结构后的其他语句。
②第二步:执行循环体内嵌语句
③第三步:返回去执行步骤①,直到条件不满足,即表达式的值为0时,退出循环,while结构结束。
3.特点:先对表达式进行条件判断,后执行语句。
do…while语句
1.一般形式:
do{
循环体语句
}while(表达式);
●do是C语言的关键字,必须和while联合使用,不能独立出现。
●do…while循环由do开始,用while结束。
●while后面的圆括号中的表达式,可以是C语言中任意合法的表达式,由它控制循环是否执行。
●在语法上,do和while之间只能是一条语句,如需执行多条语句时,可使用复合语句。
●while(表达式)后的分号不可丢。
2.执行过程:
①先执行一次指定的循环体语句
②执行完后,判别while后面的表达式的值,当表达式的值为非零(真)时,程序流程返回,去重新执行循环体语句。
③如此反复,直到表达式的值等于零为止,此时循环结束。
3.特点:先执行循环体一次,然后判断循环条件是否成立。
for语句
1.一般形式为:
for(表达式1;表达式2;表达式3);
●圆括号中通常是3个表达式,用于for循环的控制。for语句中的表达式可以部分或全部省略,但其中分号不可省略。
●各表达式用分号隔开,圆括号不可省略。
●按照语法规则,循环体只能是一条语句,如需要完成多项操作,须使用复合语句。
1 | for(表达式1;表达式2;表达式3){ |
2.执行过程
①先执行”表达式1”
②再执行”表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环
③执行完循环体后再执行”表达式3”
④重复执行步骤②③,直到”表达式2”的值为假,就结束循环
▲上面步骤②③是一次循环,for语句的作用就是不断执行步骤②③。
●”表达式1”仅在第一次循环中执行,以后都不会再执行,可以认为这是一个初始化语句。
●”表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为”循环条件”。
●”表达式3”很多情况下是一个带有自增自减操作的关系式,以使循环条件逐渐变得”不成立”。
其执行过程如图:
循环的嵌套
定义: 在某一个循环体内部又包含了另一个完整的循环结构,称为循环的嵌套。
注意:while、do…while、for循环都可以互相嵌套,循环的嵌套可以多层,但要保证每一层循环在逻辑上必须是完整的。
几种循环的比较
while和do…while循环,只在while后面指定循环条件,循环体内应包含使循环趋于结束的语句,for中使循环趋于结束的操作可以包含在”表达式3”中。
break语句和continue语句
break语句
1.在break后面加上分号就可以构成break语句,break语句还可以用于从循环体内跳出,即提前结束循环。
2.说明:
①break语句只能出现在循环体内及switch语句内,不能用于其它语句。
②当break出现在循环体中的switch语句体内,其作用是跳出该switch语句体。
当break出现在循环体中,而非switch语句内,则执行break后结束本层循环,不再进行条件判断。
continue语句
1.continue后面加上分号就可构成continue语句。
2.作用:结束本次循环,即跳过循环体中下面尚未执行的语句,而转去重新判定循环条件是否成立,从而确定下一次循环是否继续执行。
break与continue的比较
break与continue相比;break用来结束所有循环,循环语句不再有执行的机会;continue用来结束本次循环直到跳到下一次循环,如果循环条件成立,还会继续循环。
版权声明
Scholar’s Blog by scholargeek is licensed under a Creative Commons BY-NC-ND 4.0 International License.
由董仕麟创作并维护的scholargeek博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于Scholar’s Blog博客,版权所有,侵权必究。
本文永久链接:https://scholargeek.github.io/2018/02/08/C%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A04/