您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第06章--循环控制
THECPROGRAMMINGLANGUAGECH6循环控制C语言程序设计第六章循环控制(2)本章学习目标:掌握四种循环语句格式:while、do…while、for、goto理解循环控制方式的区别和联系理解循环控制语句:break、continue、goto的使用方法和作用利用循环结构编写简单的程序C语言程序设计第六章循环控制(3)C语言提供了四种循环控制格式:(1)当型循环(while)——(又称:前判断结构)(2)直到型循环(do…while)——(又称:后判断结构)(3)记数式循环(for语句)——(又称:面向问题结构)(4)if语句和goto语句构造的循环C语言程序设计第六章循环控制(4)6.1while语句(当型循环)语句格式:while(条件表达式){语句S;}注意:分号“;”的位置是在语句之后而不是表达式的后面。C语言程序设计第六章循环控制(5)执行过程:while语句的特点:先判断循环条件,后执行循环体语句。因此循环体可能未执行。当表达式的值为“真(非0值)”时,循环重复进行,当其值为“假(0值)时,循环结束,程序跳转到循环后面的第一条语句开始执行。执行循环体语句表达式?计算表达式初值退出循环体为真为假C语言程序设计第六章循环控制(6)【例1】打印1~10之间的所有整数。#includestdio.hmain(){intcounter=1;/*初始化*/while(counter=10){printf(“%d\n”,counter);counter++;}printf(“*******\n”);}CH6-1循环进行的条件是:(1)循环控制变量;(2)循环控制变量初始值(在while语句之前);(3)每次循环过程中用以改变循环控制变量的递增/递减值;(4)用来判定循环是否结束的最终条件值。C语言程序设计第六章循环控制(7)【例2】输入一组整数,分别统计正整数和负整数的个数。(0作结束标志)类型说明及赋初值:sum1=0;sum2=0;n;开始输入数据nn为0?n0?sum1增1sum2增1输入数据n输出统计的结果结束为0不为0正数负数yesnoC语言程序设计第六章循环控制(8)main(){intsum1=0,sum2=0,n;scanf(“%d”,&n);while(n!=0){if(n0)sum1++;elsesum2++;scanf(“%d”,&n);}printf(“%d,%d”,sum1,sum2)}CH6-2注意:1.多条语句做循环体时必须用{}括起来形成复合语句形式;2.循环体中必须存在使循环趋于结束的语句,以保证循环的正常结束。3.while语句的无限循环格式是:while(1)…4.while语句的循环体可以为空。例如:while(getchar()!=‘Q’){}C语言程序设计第六章循环控制(9)6.2do…while语句(直到型循环)语句格式:do{语句s;}while(表达式);;不能省略C语言程序设计第六章循环控制(10)执行过程:do…while语句特点:先执行循环体语句,后判断循环条件。因此循环体至少被执行一次。首先执行循环体语句,然后计算表达式的值。当表达式值为“真”时,返回循环体开始处继续执行循环体语句;当表达式的值为“假”,结束循环,执行下面的语句。执行循环体语句表达式?计算表达式初值退出循环体为真为假C语言程序设计第六章循环控制(11)【例3】打印1~10之间的所有整数。#includestdio.hmain(){intcounter=1;do{printf(“%d\n”,counter);counter++;}while(counter=10);printf(“*******\n”);printf(“thecounteris%d”,counter);}CH6-3注意:在do…while结构中,即使循环体为一条语句,也需用花括号{}括了起来。C语言程序设计第六章循环控制(12)【例4】统计在1~100之间的整数中,有多少个数是3的倍数或5的倍数,并打印这些数。main(){inti=0,n=1;do{if(n%3==0)||(n%5==0){i++;printf(“%4d”,n);}n++;}while(n=100);printf(“Thetotalnumberis:%d”,i);}CH6-4C语言程序设计第六章循环控制(13)6.3for语句(计数式循环)语句格式:for(e1;e2;e3){S;}e1(表达式1):通常为赋值表达式,用来实现循环结构变量的初始值。e2(表达式2):通常为关系表达式或逻辑表达式,将循环控制变量与某一值进行比较,以决定是否退出循环(循环进行的条件,判据)。e3(表达式3):一般为表达式语句,描述循环控制变量的变化,通常采用自增或自减表达式。——是C语言中最常用、最灵活、最基本的循环控制语句。特别适合已知循环次数的情况。C语言程序设计第六章循环控制(14)执行过程:for语句的特点:功能强,表达式可以是与循环有关的也可以与循环无关。程序简捷。计算表达式e1的值(循环初值)计算表达式e2的值(循环中间比较值)执行循环体语句S;e2的值为真?YN计算表达式e3的值退出循环体语句,执行for的语句下一条语句。C语言程序设计第六章循环控制(15)【例5】:打印1~10之间的所有整数。#includestdio.hmain(){intcounter;for(counter=1;counter=10;counter++)printf(“%d\n”,counter);printf(“*******\n”);}ch6-5变量的初始值、循环条件、循环计数器值的递增都包含在for结构的头部。从执行过程可以看出:for语句很好的体现了正确表达循环结构应注意的三个问题:(1)控制变量的初始化;(2)循环的条件;(3)循环控制变量的更新;C语言程序设计第六章循环控制(16)三种循环的相似性#includestdio.hmain(){intcounter;counter=1;while(counter=10){printf(“%d\n”,counter);counter++;}printf(“*******\n”);}#includestdio.hmain(){intcounter;for(counter=1;counter=10;counter++)printf(“%d\n”,counter);printf(“*******\n”);}#includestdio.hmain(){intcounter=1;do{printf(“%d\n”,counter);counter++;}while(counter=10);printf(“*******\n”);printf(“thecounteris%d”,counter);}While型do…While型for型C语言程序设计第六章循环控制(17)1.表达式e1、表达式e2和表达式e3中可以包含算术表达式。for循环的几点注意:2.表达式e3可以是负值,进行递减操作,循环向下计数的。3.如果表达式e2开始就不成立,则不执行循环体,而是执行for结构之后的语句。4.循环体中允许打印循环控制变量或改变循环控制变量,控制变量用来控制循环,一般不在循环体中使用。假定a=2、b=10,语句for(j=a;j=3*a*b;j+=b/a)语句for(j==2;j=60;j+=5)等价C语言程序设计第六章循环控制(18)6.多数情况下,for循环结构可以用等价的while循环结构表示:7.常见的错误:1)在for结构中用“,”做表达式之间的分隔符。2)在e3后面放置一个“;”,使得for的结构体成为一个空语句,造成逻辑错误。5.尽管可以在for循环中修改控制变量的值,但是可能导致另人费解的错误。最好不要这样做。表达式1;while(表达式2){语句;表达式3;}for(表达式1;表达式2;表达式3)8.建议将for的语句体用{}括起来,不论是有多少语句:C语言程序设计第六章循环控制(19)【例6】计算自然数1到n的平方和。开始类型说明:n,I,s输入n赋初值:s=0;i=1;i=n?计算平方数:i*i;s=s+i*i;i=i+1;输出计算结果:s结束C语言程序设计第六章循环控制(20)#includestdio.hmain(){inti,n,s=0;printf(“pleaseinputn:\n”);scanf(“%d”,&n);for(i=1;i=n;i++)s=s+i*i;printf(“1*1+2*2+…+%d*%d=%d\n”,n,n,s);}Ch6-6C语言程序设计第六章循环控制(21)for语句的几种特殊格式:(1)for(;;)语句;这是一个死循环,一般采用条件表达式加break语句在循环体内的适当位置,一旦满足循环条件时,用break语句跳出for循环。(2)for(;表达式2;表达式3)语句;使用条件是:循环控制变量的初值不是已知常量,而是在循环语句执行前通过计算得到的,例如:(3)for(表达式1;表达式2;)语句;一般当循环控制变量呈非规则性变化,而且在循环体中存在更新循环控制变量的语句在使用。例如:i=m-n;…for(;ik;i++)语句;for(i=1;i=100;){……i=i*2+1;……}C语言程序设计第六章循环控制(22)注意:1.for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。2.C语言允许在循环体内改变循环变量的值,这在某些程序设计中是很有用的。对于for语句要特别注意省略某一表达式形式的运用。3.表达式2不可省略,否则容易造成死循环。(4)for(逗号表达式1;表达式2;逗号表达式3)语句;在for语句中,表达式1和表达式3都可以是一项或多项。例如:for(i=1,j=5;ij;i+=2,j++){……语句;……}表达式1同时为i和j赋初值,表达式3同时改变i和j的值。当有多于一项时,各项用逗号“,”分隔。C语言程序设计第六章循环控制(23)循环的本质:循环是指在循环条件为真时反复执行执行的一组指令。两种循环方式:1)计数式循环(for循环);2)标记式循环(while循环);在计数式循环中,已知循环的次数。控制变量的值在每次执行完一组循环指令后递增(递减);当控制变量的值表明达到了预定的循环次数时,循环终止并继续执行循环结构后的语句。在如下情况下可用标记值控制循环过程:1)事先不知道准确的循环次数;2)循环体中包含每次循环都要获取数据的语句。标记值是在所有合法的数据项都提供给程序后键入的值,标记值必须不同于正常的数据项。C语言程序设计第六章循环控制(24)#include〈stdio.h〉main(){floataverage;intcounter,grade,total;total=0;counter=0;printf(“Entergrade,-1toend:”);scanf(“%d”,&grade);while(grade!=-1){total=total+grade;counter+=1;printf(“Entergrade,-1toend:”);scanf(“%d”,&grade);}if(counter!=0){average=(float)total/counter;printf(“CLASSaverageis%-5.2f”,average);}elseprintf(“Nogradewereentered\n”);}Ch6-7【例7】求全班的平均成绩。C语言程序设计第六章循环控制(25)6.4几种循环结构的比较(1)while、do…while、if-goto循环的控制一般采用标志法(循环次数未知),for循环采用的大多数为计数法(循环次数已知)。(2)while、do…while循环:循环结束的条件放在while关键字的后面。for循环可以在表达式3中包含有循环结束的操作语句。(3)while
本文标题:第06章--循环控制
链接地址:https://www.777doc.com/doc-3257367 .html