,单击此处编辑母版标题样式,语言技能教程,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,(中职)c语言技能教程第5章ppt课件,第5章 聪明的循环,循环结构,语言技能教程,第五章,5.1 技能1:用while语句进行循环结构的程,序设计,5.2 技能2:用 do-while语句实现循环结构的程,序设计,5.3 技能3:灵活应用for语句设计循环程序,5.4 技能4:使用循环的帮手break和continue,5.5 技能5:不得不说的朋友goto 语句,语言技能教程,5.1 技能1,5.1.1 循环结构与while 语句,【知识点】,while 语句的一般形式:,while (表达式),语句,语言技能教程,5.1 技能1,【典型例题】,例5.3 写出下面程序的运行结果。,main(),int n=1;,while(n=0);,printf(a=%d,b=%d,a,b);,语言技能教程,5.2 技能2,5.2.2 应用do-while 编制程序,【典型例题】,例5.9 编写程序,累加用户所输入的整数,直到输入0为止。,main(),int i,sum=0;,do,scanf(%d,sum=sum+i;,while(i!=0);,printf(sum is%d,sum);,语言技能教程,5.3 技能3,5.3.1 for 的形式和特点,【知识点】,for语句一般格式:,for(表达式1;表达式2;表达式3),语句 /*可以是单条语句,也可以是,复合语句*/,语言技能教程,5.3 技能3,5.3.2 for 的省略形式,【知识点】,省略表达式1时,表达式1的功能可以放在for语句之前实现。for(i=1;i=100;),省略表达式3时,表达式3的功能可以放在for语句循环体中实现。for(i=1;i+),省略表达式2时,表示无条件循环,此时可以在循环体内使用if语句和break语句相配合来实现循环的结束。,语言技能教程,5.3 技能3,【典型例题】,例5.11 写出下面程序的运行结果。,main(),int n;,for(n=1;n=20;n+=2),if(n%3=0)printf(%d,n);,语言技能教程,5.3 技能3,5.3.3 应用for 编制程序,【典型例题】,例5.12 编写程序,打印出所有的“水仙花数”。(“水仙花数”是指一个三位数,其各位数字的立方之和等于该数的本身。例:407=43+03+73。),语言技能教程,5.3 技能3,main(),int i,a,b,c;,for(i=100;i=999;+i),a=i/100;/*是i的百位数字*/,b=i/10-a*10;/*是i的十位数字*/,c=i%10;/*是i的个位数字*/,if(i=a*a*a+b*b*b+c*c*c),printf(%5d,i);,语言技能教程,5.3 技能3,5.3.4 几种循环的嵌套使用,【典型例题】,例5.13,求3100之间的所有素数。,(每4个一组输出。),语言技能教程,5.3 技能3,main(),int i,m,k,j=0;,for(m=3;m=100;m+),k=0;,for(i=2;i=m-1;i+),if(m%i=0),k=1;,break;,if(k=0),printf(%4d,m);,j=j+1;,if(j%4=0),printf(n);,语言技能教程,5.4 技能4,5.4.1 通过范例体会break的作用,【知识点】,一般形式:,break;,功能:break语句放在循环结构中,可以用来跳出本层循环结构,提前结束循环,继续执行for 之后的语句。,语言技能教程,5.4 技能4,5.4.2 通过范例体会continue的作用,【知识点】,一般形式:continue;,功能:结束本次循环,继续进行下一次循环的判断与执行。,语言技能教程,5.4 技能4,5.4.3 在程序中体会循环结构中break 和continue的区别,【知识点】,continue语句跟break语句有相似性,但continue语句使用的频率要少得多;continue语句跟 break语句不同,它只是结束本次循环,而不是跳出循环体,它跳出当前的这一次循环,马上进行下一次循环的判断(在while语句和do-while语句里,这就意味着马上执行条件测试部分;在for语句里,程序执行方向转到了增量步骤,也就是表达式3的位置)。而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。,continue语句只用在循环语句里,不能用在switch语句中,而break在switch语句中另有含义。,语言技能教程,5.5 技能5,【知识点】,goto语句的一般形式:,goto 语句标号;,功能:无条件地使程序执行方向跳到语句,标号所标识的语句去执行。,语言技能教程,5.5 技能5,【典型例题】,例5.18 goto语句的使用,main(),int i=1,sum=0;,loop:sum=sum+i;,i+;,if(i=100),goto loop;,else,printf(sum is%d,sum);,语言技能教程,理论与上机实习双指导,一、学习目标,本章重点介绍了控制语句中的循环语句以及相关的辅助语句。通过本章学习,应达到以下要求:,、熟练掌握循环语句while语句和 do-while语句,并能区分两语句的不同之处。,、掌握for语句的使用方法和执行过程。,、掌握辅助语句break 语句和continue语句的使用方法。,、了解转向语句goto语句的使用方法。,语言技能教程,理论与上机实习双指导,二、常见问题及上机注意事项,1for语句和while 语句的循环体之前错加了分号。,2while 语句的循环体之前错加了分号,而条件第一次成立,构成死循环。,3循环体中缺少条件变量变化的语句而构成死循环。,4.循环体由多个语句组成时复合语句时,忘了加花括号。,5.控制循环条件的表达式不准确,从而使循环的次数多了一次(或少了一次),。,6累加求和时,累加器在循环前忘了清零,累乘时,累乘器在循环前忘了赋初值为1,导致结果不准确。,语言技能教程,