您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作计划 > 第6章c语言教程独家
C语言程序设计信息学院计算机基础教研室第六章循环控制C语言程序设计信息学院计算机基础教研室第六章循环控制6.1概述6.2goto语句以及用goto语句构成的循环6.3while语句6.4do_while语句6.5for语句6.6循环的嵌套6.7几种循环的比较6.8break语句和continue语句6.9程序举例C语言程序设计信息学院计算机基础教研室§6.1概述二、循环的应用要求输入全校学生的学习成绩;求若干个数之和;迭代求解方程的根一、复杂程序的基本构造单元顺序结构选择结构循环结构C语言程序设计信息学院计算机基础教研室三、实现循环的基本方法用goto语句和if语句用while语句用do-while语句用for语句C语言程序设计信息学院计算机基础教研室§6.2goto语句及用goto语句构成循环goto语句标号;一、goto语句的一般形式用标识符表示,定名规则与变量名相同。由字母、数字和下划线组成,其第一个字符必须是字母或下划线。Label_1,_123,_abc,a123合法标号123,213不合法标号下划线C语言程序设计信息学院计算机基础教研室二、goto语句的主要用途与if语句一起构成循环结构,从循环体中跳转到循环体外。此功能可以用break和continue语句取代。只有需要从多层循环的内层跳到外层循环时才用到goto语句。由于goto语句使程序流程无规律,不符合结构化程序设计原则,要限制作用。C语言程序设计信息学院计算机基础教研室三、用if语句、goto语句构成循环实例[例6.1]if、goto语句求和教材P106main(){inti,sum=0;i=1;loop:if(i=100){sum=sum+i;i++;gotoloop;}printf(“%d”,sum);}1001nn注意标号的使用注意语句标号的使用从循环体中跳出循环变量在循环体内应有变化C语言程序设计信息学院计算机基础教研室§6.3while语句(当型循环结构)while(表达式)语句一、一般形式当表达式为非0值时,执行while语句中的内嵌语句。语句表达式假真先判断表达式后执行语句C语言程序设计信息学院计算机基础教研室二、while语句求和实例[例6.2]教材P107求1001nni=1当i=100sum=sum+ii=i+1假sum=sum+ii=i+1i=100真i=1main(){inti,sum=0;i=1;while(i=100){sum=sum+i;i=i+1;}printf(“%d”,sum);}C语言程序设计信息学院计算机基础教研室main(){inti,sum=0;i=1;while(i=100){sum=sum+i;i=i+1;}printf(“%d”,sum);}三、while语句中应注意的问题循环体包含一个以上的语句时,应该用大括号括起来在循环体内应有使循环趋于结束的语句C语言程序设计信息学院计算机基础教研室§6.4do-while语句(直到型循环)do语句while(表达式);一、一般形式先执行指定的内嵌语句,然后判断表达式,当表达式的值为非0时,返回重新执行该语句,直到表达式的值为0时,循环结束。语句表达式假真先执行语句然后再判断表达式C语言程序设计信息学院计算机基础教研室二、do-while语句求和[例6.3]教材P108i=1直到i100sum=sum+ii=i+1main(){inti,sum=0;i=1;do{sum=sum+i;i=i+1;}while(i=100);printf(“%d”,sum);}假sum=sum+ii=i+1i=100真i=1C语言程序设计信息学院计算机基础教研室三、while和do-while循环比较(例6.4)main(){inti,sum=0;scanf(“%d”,&i);while(i=10){sum=sum+i;i++;}printf(“%d”,sum);}main(){inti,sum=0;scanf(“%d”,&i);do{sum=sum+i;i++;}while(i=10);printf(“%d”,sum);}程序运行过程155程序运行过程155程序运行过程110程序运行过程1111C语言程序设计信息学院计算机基础教研室§6.5for语句for(表达式1;表达式2;表达式3)语句一、一般形式1.先求解表达式1;2.求解表达式2;值为非0,则执行内嵌语句,转第3步;值为0,则结束循环,转到第5步3.若表达式为真,求解表达式3;4.转回上面第2步继续执行;5.执行for语句的后续语句。语句表达式2假真求解表达式3求解表达式1C语言程序设计信息学院计算机基础教研室二、for语句最简单的应用形式for(循环变量初值;循环条件;循环变量增值)语句for(i=1;i=100;i++)sum=sum+i例如i=1;while(i=100){sum=sum+i;i++;}故for语句一般形式也可写成表达式1;while(表达式2){语句表达式3;}C语言程序设计信息学院计算机基础教研室分号不能省略可认为表达式2始终为真分号不能省略执行时,跳过求解表达式1for(;i=100;i++)sum=sum+i三、for语句有关说明for语句中的表达式1可以省略表达式2省略,循环无终止地进行for(i=1;;i++)sum=sum+i表达式3省略,循环变量须在循环体内有变化for(sum=0,i=1;i=100;){sum=sum+i;i++;}循环变量在循环体内变化C语言程序设计信息学院计算机基础教研室for(;i=100;){sum=sum+i;i++;}续for语句有关说明(一)可以省略表达式1和表达式3三个表达式都省略,循环无终止地进行for(;;)表达式1和表达式3可以是与循环变量无关的其他赋值表达式,也可以是一个以上的表达式for(sum=0,i=1;i=100;i++,j--)sum=sum+i;for(i=1;i=100;i++,i++)sum=sum+i;while(i=100){sum=sum+i;i++;}while(1)在逗号表达式内按自左至右顺序求解,整个逗号表达式的值为其中最右边的表达式的值。for(i=1;i=100;i=i+2)sum=sum+i;C语言程序设计信息学院计算机基础教研室循环体为空语句,本程序把要在循环体执行的内容放在表达式3中从终端接收一个字符赋给c,然后判断是否是‘\n’(换行符),如果不是换行符,就执行循环体for(i=0;(c=getchar())!=‘\n’;i+=c);续for语句有关说明(二)表达式2一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值为非0,就执行循环体for(;(c=getchar())!=‘\n’;)printf(“%c”,c);无表达式1和表达式3的目的是每读入一个字符便输出一个字符运行过程:ComputerComputerC语言程序设计信息学院计算机基础教研室§6.6循环的嵌套一、概念:嵌套:一个循环体内包含另一个完整的循环结构多层循环:内嵌的循环体内又嵌套循环结构前述的三种循环都可以互相嵌套while循环do-while循环for循环C语言程序设计信息学院计算机基础教研室二、几种嵌套形式while(){…while(){…}}(A)do{…do{…}while();}while();(B)for(;;){…for(;;){…}}(C)C语言程序设计信息学院计算机基础教研室二、几种嵌套形式(续)while(){…do(){…}while();…}(D)for(;;){…while(){…}…}(E)do{…for(;;){…}…}while();(F)C语言程序设计信息学院计算机基础教研室§6.7几种循环的比较四种循环可以用来处理同一问题,但一般情况不提倡用goto型循环。while和do-while循环,只在while后面指定循环条件,在循环体内包含循环趋于结束语句。while和do-while循环,循环变量应在循环语句前初始化。While循环和for循环是先判断表达式后执行语句,而do-while循环是先执行语句,然后判断表达式。对while、do-while和for循环,可用break语句跳出循环,而用continue语句结束本次循环;而对goto型循环,不能用break、continue语句进行控制C语言程序设计信息学院计算机基础教研室§6.8break语句和continue语句break;一、break语句1.break语句可以使流程跳出switch结构2.break语句可以用来从循环体内跳出循环体,即提前结束循环接着执行循环下面的语句。for(r=1;r=10;r++){area=pi*r*r;if(area100)break;printf(“%f”,area);}当面积值大于100时,跳出循环体,不再执行其余几次循环C语言程序设计信息学院计算机基础教研室二、continue语句continue;一般形式:其作用是结束本次循环,即跳过循环体下面未执行的语句,接着进行下一次是否执行循环的判定。for(n=100;n=200;n++){if(n%3==0)continue;printf(“%d”,n);}当n能被3整除时,跳出本次循环,不再执行printf语句,但是还要继续循环判断本程序的功能是打印出100~200之间不能被3整除的整数(见教材P75例5.5)C语言程序设计信息学院计算机基础教研室三、break和continue语句的区别假表达式2真表达式1真假While(表达式1){…if(表达式2)break;…}While(表达式1){…if(表达式2)continue;…}假表达式2真表达式1真假C语言程序设计信息学院计算机基础教研室#includemath.hmain(){ints;floatn,t,pi;t=1;pi=0;n=1.0;s=1;while((fabs(t))=1e-6){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf(pi=%10.6f\n,pi);}[例6.6]求的近似值(见教材P116)t=1,pi=0,n=1,s=1pi=pi+tn=n+2s=-st=s/npi=pi*4输出pi当|t|=1.0E-6运行结果:pi=���3.141397§6.9程序举例C语言程序设计信息学院计算机基础教研室main(){longintf1,f2;inti;f1=1;f2=1;for(i=1;i=20;i++){printf(%12ld%12ld,f1,f2);if(i%2==0)printf(\n);f1=f1+f2;f2=f2+f1;}}运行结果:(见教材P77)[例6.7]求Fabonacci数列前40个数f1=1,f2=1输出f1,f2f1=f1+f2f2=f2+f1fori=1to20C语言程序设计信息学院计算机基础教研室#includemath.hmain(){intm,i,k;scanf(%d,&m);k=sqrt(m);for(i=2;i=k;i++)if(m%i==0)break;if(i=k+1)printf(%disaPrimeNumber.\n,m);elseprintf(%disnotaPrimeNumber.\n,m);}[例6.8]判断m是否素数(程序)运行过程:17(输入)17isaPrimeNumber.C语言程序设计信息学院计算机基础教研室[例6.8]判断m是否素数(框图)读入mk=mi=2M被i整除用break结束循环i=i+1i=k+1输出:m是素数输出:m不是素数当i=k真假C语言程序设计信息学院计算机基础教研室#includemath.hmain(){intm,k,i,n=0;for(m=101;m=200;m=m+2){if(n%10==0)p
本文标题:第6章c语言教程独家
链接地址:https://www.777doc.com/doc-5536418 .html