C语言学习4

文章目录
  1. 1. 三大结构
    1. 1.1. 选择结构
      1. 1.1.1. 关系运算符和关系表达式
        1. 1.1.1.1. 关系运算符及其优先次序
        2. 1.1.1.2. 关系表达式
      2. 1.1.2. 逻辑运算符和逻辑表达式
        1. 1.1.2.1. 逻辑运算符及其优先级
        2. 1.1.2.2. 逻辑表达式
      3. 1.1.3. if语句和用if语句构成的选择结构
        1. 1.1.3.1. if语句的几种形式
        2. 1.1.3.2. if语句的嵌套
        3. 1.1.3.3. 条件运算符构成的选择结构
      4. 1.1.4. switch语句
    2. 1.2. 循环结构
      1. 1.2.1. while循环语句
      2. 1.2.2. do…while语句
      3. 1.2.3. for语句
      4. 1.2.4. 循环的嵌套
      5. 1.2.5. 几种循环的比较
      6. 1.2.6. break语句和continue语句
        1. 1.2.6.1. break语句
        2. 1.2.6.2. continue语句
        3. 1.2.6.3. break与continue的比较

三大结构

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语句的几种形式

  1. if(表达式)语句
    if是C语言中的关键字
    表达式两侧的括号不可少,并且只能是圆括号
    紧跟着的语句,称if子句,如果在if子句中需要多个语句,则应使用大括号{}把一组语句括起来构成复合语句
  2. if(表达式) 语句1
    else 语句2
  3. 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. 条件运算符的一般形式:表达式1?表达式2:表达式3
  3. 求解过程:先求解表达式1 的值,当表达式1的值是非0时,以表达式2的值作为整个条件表达式的值,当表达式1 的值是0时,以表达式3的值作为整个条件表达式的值。
    4.优先级:条件运算符高于赋值运算符,但低于逻辑运算符、关系运算符和算术运算符。

switch语句

switch 语句是C语言提供的多分支选择语句,用来实现多分支选择结构。
一般形式:

1
2
3
4
5
6
7
8
switch(表达式)
{
case 常量表达式1: 语句1
case 常量表达式2: 语句2
...
case 常量表达式n: 语句n
default:语句n+1
}

●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
2
3
for(表达式1;表达式2;表达式3){
语句块
}

2.执行过程
①先执行”表达式1”
②再执行”表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环
③执行完循环体后再执行”表达式3”
④重复执行步骤②③,直到”表达式2”的值为假,就结束循环
▲上面步骤②③是一次循环,for语句的作用就是不断执行步骤②③。
●”表达式1”仅在第一次循环中执行,以后都不会再执行,可以认为这是一个初始化语句。
●”表达式2”一般是一个关系表达式,决定了是否还要继续下次循环,称为”循环条件”。
●”表达式3”很多情况下是一个带有自增自减操作的关系式,以使循环条件逐渐变得”不成立”。

其执行过程如图:

for循环流程图

循环的嵌套

定义: 在某一个循环体内部又包含了另一个完整的循环结构,称为循环的嵌套。
注意: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/

更新日期:


本站总访问量