您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 第6章 高级语言程序设计C--循环结构设计
第六章循环结构程序设计第六章循环结构程序设计内容提要先判断再执行while先执行再判断do…while循环次数控制for循环嵌套中止语句break和跳转语句continue无条件跳转语句gotowhile当型循环语句形式如下:while(循环条件表达式){循环体语句集合}后续语句While当型循环语句的特点:先判断表达式后执行循环体语句集合6.1while当型循环while当型循环语句流程图:当循环条件表达式值为真(非0)的时候,执行循环体语句集合值为假(0)的时候,不执行循环体语句集合,而直接执行while之后的后续语句。6.1while当型循环计算从1至100的和。main(){inti=1,sum=0;while(i=100){sum=sum+i;i++;}printf(“Thesumis%d\n”,sum);}6.1while当型循环•程序将执行100次循环。•循环体在计算sum的值,sum=sum+i。循环体使用{}括起来了,组成了循环体语句集合。•其中i为循环控制变量,而循环条件表达式为i=100,只要i的值小于等于100判断式计算结果为真,则该循环结构的循环体语句集合就将被执行。每做一次循环,i值自加1。6.1while当型循环语句中应有使表达式=0的语句。否则会出现无限循环–––死循环。注:while后面的语句一般为复合语句,即:加{}•死循环main(){while(2){printf(Thisisanendlessloop\n);}}6.1while当型循环•由于循环条件表达式为常数2,常数2为非0值,在条件判断表达式中,非0表示的是真。于是while循环条件的计算结果恒为真值,于是该循环始终在循环体中无休止执行。这样就形成了一个死循环。•程序陷入死循环,按ctrl+break中止该程序继续运行。•do…while循环的一般形式为:do{循环体语句集合}while(循环条件表达式);后续语句;6.2do…while直到型循环•在do…while循环语句中,先执行大括号中的循环体语句集合1次,再判断表达式的值。•若为真值(非0)的时候,继续执行循环,•若为假值(0)的时候,中止循环。•do…while语句也至少执行一次循环体语句集合,而while有可能不会执行循环体语句集合。•do…while循环的流程图:•当型循环与直到型循环可以互相替换•替换的时候需要注意修改循环控制语句。•do…while最后的判断条件所在的括号后必须加上“;”。6.2do…while直到型循环使用do…while循环,计算1到100的和。main(){inti=1;intsum=0;do{sum=sum+i;i++;}while(i=100);printf(“Thesumis%d\n”,sum);}6.2do…while直到型循环1.while语句与do…while语句的区别:当第一次执行时,若表达式=0时,则while语句与dowhile有所不同,dowhile执行一次后面的语句,而while不执行。2do…while(表达式)语句的while子句部分是需要以;结尾。而while(表达式)语句不需要;号。for语句的一般形式如下:for(表达式1;表达式2;表达式3){循环体语句集合}后续语句•表达式1,一般是给循环变量来赋初值的,一般是一个或者多个赋值表达式。如果循环变量在之前已经被赋值,则表达式1可以被省略。•表达式2,一般是与表达式1提到的循环变量相关的循环条件表达式。•若条件表达式计算结果为真值(非0),则循环体被执行•若条件表达式计算结果为假值(0),则不再执行循环体,而执行后续语句。•表达式3,一般是用来改变循环变量的。可以为赋值语句。6.3for语句当型循环for语句的流程图:6.3for语句当型循环•首先计算表达式1得到循环变量初值•将循环变量代入表达式2,计算表达式2,若表达式2结果为真(非0),则执行循环体语句集合,之后再计算表达式3,得到新的循环变量;再将新得到的循环变量带入表达式2,进行逻辑求值。重复以上过程,直到表达式2的结果为假(0);•不再执行循环体语句集合,转向执行后续语句。使用for语句求1至100的和6.3for语句当型循环main(){inti,sum=0;for(i=1;i=100;i++){sum=sum+i;}printf(Thesumis%d\n,sum);}main(){inti=1,sum=0;for(;i=100;i++){sum=sum+i;}printf(Thesumis%d\n,sum);}main(){inti=1,sum=0;for(;i=100;){sum=sum+i;i++;}printf(Thesumis%d\n,sum);}完整写法省略表达式1省略表达式3表达式2一般不可省略,否则为无限循环相当于:while(1){sum=sum+i;i++;}例:for(i=1;;i++)sum=sum+i;相当于条件永真、永不为0,若用while表示•在for循环中的3个表达式均可被省略•但是省略表达式后,“;”是不能少的。•for(;;)这种写法是省略了所有3个表达式,无条件不停执行循环。•当这种循环出现的时候,需要在循环体语句集合中设置中止条件。•在for语句的圆括号后,是不可以添加“;”的如果加了“;”,C会认为循环体为空语句•导致循环体语句集合得不到循环执行6.3for语句当型循环•外部循环的循环语句集合部分,依然可以使用任意一种循环语句结构作为内部循环。如:6.4循环嵌套while(){…while(){…}…}while(){…do{…}while();…}while(){…for(…;…;…){…}…}等等……•打印一组星号,使之够成一个5行5列的图形。6.4循环嵌套main(){inti,j;for(i=0;i5;i++){for(j=0;j5;j++){printf(*);}printf(\n);}}break语句:•break能够在switch…case中,作为跳出switch…case语句的关键字•break能够在循环中使用。•break在循环中的作用是跳出本层循环,转而执行本层循环的后续语句。6.5终止语句break和跳转语句continue问题:计算圆的面积r2,半径取1,2,3,4…,当面积area100时结束。for(r=1;r=10;r++){area=PIrr;if(area100)break;printf(%f,area);}}6.5.1break语句#definePI3.14159#includestdio.hmain(){floatarea;intr;从结构化程序要求出发,用break,退出循环,执行for语句后面的下一条语句。•continue语句表达的意思是结束本次循环,转而进行下一次同层的循环过程。•与break语句不同,continue不是中止掉整个的同层的循环过程。6.5终止语句break和跳转语句continuecontinue语句只是起了结束本次循环体执行的作用,而非结束循环语句本身。•找到100以内不能被3整除的数6.5终止语句break和跳转语句continuemain(){inti,j;for(i=3;i100;i++){if(i%3==0){continue;}else{printf(%d,i);}}printf(\n);}continue语句在循环中出现在if条件判断中。只要条件满足,即i为3的倍数,则执行continue语句,结束掉本次循环。若条件不满足,执行else中的语句集合,将i打印出来。goto语句的一般形式为:goto语句标号;•语句标号为符合C语法的标识符,它出现在一般语句的前面,与goto配合使用。•C语言中标号不能重名。•无论标号在哪出现,只要goto语句得以执行,则程序流转向到该语句标号处继续执行。6.6无条件跳转语句gotomain(){inti,sum=0;i=1;loop:if(i=100){sum=sum+i;i++;gotoloop;}printf(%d,sum);}运行结果如下:5050•题目1课堂练习有一个分数序列2/1,3/2,5/3,8/5,13/8,21/13,……求出这个数列的前20项之和。•题目2课堂练习1.判断一个数是否是素数2.求100-200之间的全部素数
本文标题:第6章 高级语言程序设计C--循环结构设计
链接地址:https://www.777doc.com/doc-3819052 .html