1、大学计算机基础网络信息中心教研室5.1 while 语句5.3 for 语句5.4 几种循环的比较主要内容主要内容5.2 do.while 语句大学计算机基础网络信息中心教研室5.5 循环嵌套 5.6 break 语句5.8 应用举例主要内容主要内容5.7 continue 语句大学计算机基础网络信息中心教研室教教 学目学目 的的:1、掌握三种循环结构语句的语法结构、掌握三种循环结构语句的语法结构2、灵活运用循环结构语句、灵活运用循环结构语句教学重点和难点:教学重点和难点:重点:三种循环结构语句重点:三种循环结构语句while、do-while、for难点:三种循环结构语句的循环过程难点:三种
2、循环结构语句的循环过程大学计算机基础网络信息中心教研室1*1+2*2+3*3=?1*1+2*2+3*3+99*99+1000*1000=?引言引言抽象:for(i=1;i=1000;i+)s=s+i*i;大学计算机基础网络信息中心教研室循环结构程序设计要考虑两方面的问题:循环结构程序设计要考虑两方面的问题:l 循环条件循环条件:决定循环体执行的次数:决定循环体执行的次数 (或退出循环条件或退出循环条件)常用关系表达式和逻辑表达式表示。常用关系表达式和逻辑表达式表示。l 循环体循环体:需要重复执行的工作。:需要重复执行的工作。循环体也可用循环体也可用break语句跳出循环,用语句跳出循环,用co
3、ntinue语语句结束本次循环。句结束本次循环。大学计算机基础网络信息中心教研室while 语句do-while 语句for 语句条件循环计数循环三种循环语句:定义:在给定条件成立时,重复执行某个程序段的语句称为循环语句,重复执行的程序段称为循环体。循环体可以是单个语句、空语句或符合语句,当循环体为空语句(只有一个分号)时,表示在循环体中什么也不做。大学计算机基础网络信息中心教研室一般形式:while(表达式表达式)循环体语句;循环体语句;执行流程:表达式成立表达式成立循环体语句循环体语句假假(0)真真(非非0)初变量始化初变量始化大学计算机基础网络信息中心教研室v特点:先判断(表达式)后执行
4、(循环体)v说明:l循环体有可能一次也不执行l循环体可为复合语句l循环体内应有改变循环控制变量的语句;l下列情况,退出while循环u表达式不成立u循环体内遇break,return,gotol无限循环:while(1)循环体;While语句特点和说明:语句特点和说明:大学计算机基础网络信息中心教研室【例例】求求#includemain()int k,sum=0;n=1;while(n=100)sum=sum+n;n+;printf(%dn,sum);1001nn大学计算机基础网络信息中心教研室一般形式:do 循环体语句;循环体语句;while(表达式表达式);执行流程:初始化变量初始化变量循
5、环体语句循环体语句表达式成立表达式成立假假(0)真真(非非0)大学计算机基础网络信息中心教研室v特点特点:先执行先执行循环体,循环体,后判断后判断循环条件是否成立。循环条件是否成立。v说明:说明:1)1)至少执行一次循环体;至少执行一次循环体;2)2)其他跟其他跟whilewhile语句相同语句相同 3 3)do-whiledo-while可转化成可转化成whilewhile结构结构dowhile语句特点和说明:语句特点和说明:大学计算机基础网络信息中心教研室#includemain()int n=1,sum=0;do sum=sum+n;n+;while(n=100);printf(%d,s
6、um);【例例】求求 1001nn大学计算机基础网络信息中心教研室v一般形式:for(表达式1;表达式2;表达式3)循环体语句;v执行流程:表达式表达式2循环体语句循环体语句假假(0)真真(非非0)表达式表达式1表达式表达式3大学计算机基础网络信息中心教研室表达式1:初值表达式,用在循环开始前为循环变量赋初值表达式2:循环控制表达式,用来控制循环执行的条件表达式3:修改循环控制变量表达式大学计算机基础网络信息中心教研室【例例】for(k=10;k20;k+)printf(k=%dn,k);表达式表达式1为为k=10,表达式表达式2为为k20,表达式表达式3为为k+。计算表达式计算表达式1,k得
7、到初值得到初值10。计算表达式计算表达式2,k20为真为真,执行第一次循环执行第一次循环,输出输出:k=10。计算表达式计算表达式3,k的值变为的值变为11。计算表达式计算表达式2,k20为真为真,执行第二次循环执行第二次循环,输出输出:k=11。最后最后:k 的值变为的值变为19,执行第执行第20次循环次循环,输出输出:k=19。计算表达式计算表达式3,k 的值变为的值变为20。计算表达式计算表达式2,k20为假为假,终止整个循环的执行终止整个循环的执行,退出循环。退出循环。大学计算机基础网络信息中心教研室for语句说明:语句说明:1 1、forfor语句中的三个表达式均可以是逗号表达式,故
8、语句中的三个表达式均可以是逗号表达式,故可同时对多个变量赋初值及修改。可同时对多个变量赋初值及修改。如:如:for(i=0,j=1;jn∈i+,j+)2 2、forfor语句中表达式语句中表达式1,表达式表达式2,表达式表达式3都可省略,都可省略,但分号;不可省。但分号;不可省。(3)省略表达式省略表达式3for(i=0;i10;)i值不变,死循环值不变,死循环 sum=sum+i;(1)(1)省略表达式省略表达式1 1int i=1;for循环前边赋初循环前边赋初值值for(;i10;i+)sum=sum+i;(2)省略表达式省略表达式2for(i=0;i+)死循环死循环 sum=su
9、m+i;大学计算机基础网络信息中心教研室(4)省略表达式省略表达式1和和3for(;i10;)sum=sum+i;i+;等价于等价于while(i10)sum=sum+i;i+;(5)3个表达式都省略个表达式都省略 for(;)sum=sum+i;等价于等价于while(1)sum=sum+i;i+;大学计算机基础网络信息中心教研室#include main()int n,s;for(s=0,n=1;n=100;n+)s=s+n;printf(1+2+3+100=%dn,s);【例例】求求 1001nn大学计算机基础网络信息中心教研室1、一般情况下,4种循环可以互相代替,但不建议使用goto语
10、句。2、while和do-while循环,需要在while后面指定合适的循环条件,且在循环体中应包含使循环趋于结束的语句,避免出现死循环。for循环则非常灵活,3个表达式可以灵活使用,既适用于已经循环次数的循环,也适用于不确定次数的循环,因此for语句的功能更强,凡用while循环能完成的,用for循环都能实现。大学计算机基础网络信息中心教研室3、用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。4、while循环、do-while循环和for循环,除了自然终止外,还可以用break语句随时
11、跳出循环,用continue语句结束本轮循环(break语句和continue语句相关知识见后续小节)。而对用goto语句和if语句构成的循环,break语句和continue语句无效。大学计算机基础网络信息中心教研室1 1、一个循环体内又包含另一个完整的循环结构,称为循环嵌套。、一个循环体内又包含另一个完整的循环结构,称为循环嵌套。2、内嵌的循环中还可以嵌套循环,这就是多层循环。有许多问题需要用、内嵌的循环中还可以嵌套循环,这就是多层循环。有许多问题需要用两层甚至多层循环才能解决。两层甚至多层循环才能解决。3、三种循环可互相嵌套三种循环可互相嵌套,层数不限层数不限4 4、外层循环可包含两个以
12、上内循环、外层循环可包含两个以上内循环,但不能相互交叉但不能相互交叉5 5、嵌套循环的执行流程、嵌套循环的执行流程(1)while()while().(2)do do while();.while();(3)while()do while();.(4)for(;)do while();while().内循环内循环外循环外循环内循环内循环大学计算机基础网络信息中心教研室【例例】编程实现九九乘法表编程实现九九乘法表#includemain()int i,j;for(i=1;i=9;i+)/*i作为外循环控制变量,控制被乘数变化作为外循环控制变量,控制被乘数变化*/printf(n);for(j=1
13、;j=i;j+)/*j作为内循环控制变量,控制乘数变化作为内循环控制变量,控制乘数变化*/printf(%1d*%1d=%2d ,i,j,i*j);大学计算机基础网络信息中心教研室格式格式:break;功能功能:用用break语句可以跳出语句可以跳出switch语句语句,继续执行继续执行switch语句下面的一个语句。语句下面的一个语句。而且而且break语句还可以用语句还可以用来跳出循环体,即提前结束循环,接着执行循环下面的来跳出循环体,即提前结束循环,接着执行循环下面的语句。语句。说明说明:break只能终止并跳出最近一层的结构,不能用只能终止并跳出最近一层的结构,不能用于循环语句和于循环
14、语句和switch语句之外的任何其他语句中。语句之外的任何其他语句中。大学计算机基础网络信息中心教研室break语句实例语句实例 该程序实现的功能是该程序实现的功能是for(r=1;r100)break;printf(%fn”,area);大学计算机基础网络信息中心教研室格式格式:continue;功能功能:结束本次循环结束本次循环,即跳过循环体中即跳过循环体中continue语句后面尚未执行的语句语句后面尚未执行的语句,接着进行下一次是接着进行下一次是否执行循环的判断。否执行循环的判断。大学计算机基础网络信息中心教研室#includemain()int n;for(n=100;n=200;n
15、+)if(n%3=0)continue;printf(“%4d”,n);等价于:等价于:if(n%3!=0)printf(“%d”,n);continue语句实例语句实例 大学计算机基础网络信息中心教研室【例例1】求求10个正整数之和。个正整数之和。#include main()int i,n,s=0;for(i=1;i=10;i+)scanf(%d,&n);if(n0)continue;s=s+n;printf(10个正整数之和=%4dn,s);大学计算机基础网络信息中心教研室#includemain()int i=1,n,s=0;while(i=10)scanf(%d,&n);if(n0)
16、continue;s+=n;i+;printf(10个正整数之和=%4dn,s);【例例2】大学计算机基础网络信息中心教研室【例例3】求前求前10个自然数中所有偶数的和。个自然数中所有偶数的和。#includemain()int s=0,i;for(i=1;i=10;i+)if(i%2!=0)continue;s=s+i;printf(s=%dn,s);等价于:等价于:if(n%2=0)s=s+i;大学计算机基础网络信息中心教研室v1 1、三种循环的区别和灵活使用;、三种循环的区别和灵活使用;v2 2、breakbreak语句和语句和continuecontinue语句的应用规则;语句的应用规则;v3 3、注意循环嵌套的层次。注意循环嵌套的层次。