《C语言第7章.ppt》由会员分享,可在线阅读,更多相关《C语言第7章.ppt(35页珍藏版)》请在三一办公上搜索。
1、第七章 循环结构与转移语句,第七章 循环结构与转移语句,7.1 循环结构7.2 当型循环语句 while语句7.3 直到型循环语句 do-while语句7.4 for语句7.5 循环语句的比较7.6 循环的嵌套7.7 转向语句7.8 综合运用7.9 实战练习,本章学习内容,第七章 循环结构与转移语句,假设需要计算1+2+3+100的和常规定义:int sum;sum=1+2+3+100/*C语言没有省略号*/C语言的循环语句用来解决这个问题,7.1 循环结构,需要重复做有规律的运算,可以使用循环结构特点:在给定条件成立时,反复执行某个语句块,直到条件不成立为止(其中:给定的条件称为循环条件;反
2、复执行的语句块称为循环体),三种循环语句:while语句、do-while语句、for语句,7.2 当型循环语句while语句,一般形式:while(表达式)语句块;,7.2 当型循环语句while语句,执行过程:1.计算表达式的值,若表达式的值为非0(逻辑真),执行步骤2;若表达式的值为0(逻辑假),执行步骤42.执行循环体3.转回步骤1,重新执行4.循环结束,执行while循环语句后面的语句,7.2 当型循环语句while语句,例如:i=0;while(+i=100)sum+=i;printf(“sum=%dn”,sum);,7.2 当型循环语句while语句,说明:1.while是C语言
3、的关键字,后面的圆括号中的表达式可以是C语言任何合法的表达式,但不能为空2.循环体中的语句可以是空语句、一条语句或多条语句,当循环体中只有一条语句时,可以省略花括号3.无法终止的循环称为死循环,正常情况下,循环体中除了执行语句外,还需要控制循环的值,避免出现死循环4.while语句是先判断后执行,若表达式的值一开始为0,那么循环体一次都不执行,7.3 直到型循环语句do-while语句,一般形式:do 循环体语句块;while(表达式);,7.3 直到型循环语句do-while语句,执行过程:1.执行do后面的循环体2.计算while后面圆括号内表达式的值,若值为非0(逻辑真),执行步骤1;若
4、值为0(逻辑假),执行步骤33.结束循环,执行do-while之后的语句,7.3 直到型循环语句do-while语句,例如:i=1;do sum+=i;while(+i=100);printf(“sum=%dn”,sum);,7.3 直到型循环语句do-while语句,说明:1.do和while一样,也是C语言关键字,do必须和while联合使用2.while语句圆括号中的表达式,可以是C语言任意合法的表达式3.while语句后面的分号不能省略4.与while语句不同,do-while语句总是先执行一次循环体,无论表达式的值为0还是非0,循环体都至少被执行一次,7.4 当型循环语句for语句,
5、一般形式:for(表达式1;表达式2;表达式3)循环体语句;,7.4 当型循环语句for语句,执行过程:1.首先计算表达式1的值2.计算表达式2的值;若表达式2的值为非0(逻辑真),执行步骤3;若值为0(逻辑假),执行步骤53.执行for语句的循环体4.计算表达式3的值,执行步骤25.结束循环,执行for语句后的语句,7.4 当型循环语句for语句,例如:for(i=1;i=100;i+)sum+=i;printf(“sum=%dn”,sum);,7.4 当型循环语句for语句,说明:1.for是C语言的关键字,表达式1、表达式2和表达式3称为for语句的3个要素,分别对应循环的起点、循环执行
6、条件和循环值的更新。一般形式中的中括号,代表三个表达式在使用时可以省略2.表达式1给出循环的起始值3.表达式2是循环控制条件,用来决定是否继续执行循环体,一般为关系表达式或逻辑表达式4.表达式3是每次执行循环体后循环变量值的更新语句5.循环体语句可以是空语句、一条语句或语句块,7.4 当型循环语句for语句,注意:1.省略表达式1、表达式2或表达式3时,要注意它们之间的分号,例如:for(;)/*合法的for语句,表示无限循环*/2.for语句的执行过程中,表达式1只被计算1次;表达式2和表达式3可能被计算多次;循环体也可能被执行多次,当表达式2的值为0时,循环体一次都不执行,7.4 当型循环
7、语句for语句,for语句的变体1.for语句中省略表达式1,表达式1的作用是对循环变量设置初值,如果省略表达式1,需要在for语句之前就给循环变量赋初值i=1;for(;i=100;i+);省略表达式1时,表达式1和2之间的分号不能省略!,7.4 当型循环语句for语句,2.for语句中省略表达式2省略表达式2,不判断循环条件时,for语句会无限执行,使得程序进入死循环为了避免死循环,需要使用转向语句break,后续章节介绍,7.4 当型循环语句for语句,3.for语句中省略表达式3省略表达式3时,若要保证循环体正常结束,需要在循环体内控制循环变量值的更新,for(i=1;i=100;)s
8、um+=i;i+;,7.4 当型循环语句for语句,4.表达式1是与循环变量赋值无关的表达式,int sum;int i=1;for(sum=0;i=100;i+)sum+=i;,7.4 当型循环语句for语句,for语句中逗号应用表达式1和表达式3,可以使用逗号表达式for(sum=0,i=1;i=100;i+)sum+=i;,7.5 循环语句的比较,1.while语句和do-while语句只在while后面指定循环条件,在循环体中应包含循环趋于结束的语句;for语句可以在表达式3中包含使循环趋于结束的操作,可以在循环体中包含使循环趋于结束的操作2.循环变量的初始化应该在while语句和do
9、-while语句之前完成;for语句可以在之前完成初始化,也可以在表达式1中完成初始化3.while语句和for语句只有在循环条件满足的前提下执行循环体;do-while语句无论循环条件是否满足,都会先执行一次循环体4.三种循环语句都可以使用break语句跳出循环,都可以使用continue语句结束本轮循环剩余语句并执行下一次循环操作,7.6 循环的嵌套,1.while语句中嵌套while语句,while(表达式)语句块:while(表达式)语句块:,7.6 循环的嵌套,2.while语句中嵌套do-while语句,while(表达式)语句块:do 语句块:while(表达式);,7.6 循环
10、的嵌套,3.while语句中嵌套for语句,while(表达式)语句块:for(表达式1;表达式2;表达式3)语句块;,7.6 循环的嵌套,4.do-while语句中嵌套do-while语句,do 语句块:do 语句块;while(表达式);while(表达式);,7.6 循环的嵌套,5.for语句中嵌套for语句,for(表达式;表达式;表达式)语句块:for(表达式;表达式;表达式),7.7 转移语句,转向语句又称为转移语句,可以改变程序的执行流程,使程序从其所在的位置转移到另一处执行转移语句包含goto语句、break语句和continue语句其中goto语句是无条件转移语句break语
11、句是终止整个循环,使程序从当前循环退出continue语句只是结束本次循环的剩余语句,转去执行下一轮循环,goto语句goto语句是无条件转移语句,可以使程序立即跳转到函数内部的任意一条可执行语句goto语句的一般形式为:goto 标识符;例如:goto flag;printf(“this message is not print!”);flag:printf(“this message will be print!”);,7.7 转移语句,注意:1.goto语句的跳转方向可以是当前位置之前,也可以是当前位置之后;可以跳出一个循环,也可以跳入一个循环2.结构化程序设计不提倡使用goto语句,因
12、为goto语句会使程序的执行流程无规律、可读性差,但也不是绝对禁止使用3.goto语句可以从循环体中跳转到循环体外,甚至一次性跳出多重循环,7.7 转移语句,一般形式:break;例如:while(1)i+;if(i 10)break;,break语句break语句在switch语句中的作用是退出switch语句;在循环语句中是使程序跳出当前循环,执行循环后面的语句,注意:break语句不能用于switch语句和循环语句之外的其他任何语句中,7.7 转移语句,continue语句continue语句用于终止本次循环,跳出循环剩余语句,执行下一次循环一般形式:continue;,注意:continue语句只结束本次循环,而不是终止整个循环;break语句则是结束整个循环,7.7 转移语句,7.9 实战练习,1.分别使用while语句、do-while语句和for语句打印大写字母ASCII码2.累加1-100的值,当和超过4000时,使用break语句终止累加,输出结果3.改写例7.2,使用continue语句输出0100之间不能被3整除的数,END,