C语言.控制语句循环语句.ppt_第1页
C语言.控制语句循环语句.ppt_第2页
C语言.控制语句循环语句.ppt_第3页
C语言.控制语句循环语句.ppt_第4页
C语言.控制语句循环语句.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章 循环控制结构,学习内容:,3、while循环,5、for循环,6、循环的嵌套,4、do-while循环,7、几种循环结构的比较,1、循环控制概述,2、goto语句和goto循环,重难点:,2、break、continue语句。,1、 while语句、do-while语句和for语句及三种循环之间嵌套和区别。,学习目标:,2、掌握break、continue语句的功能和用法。,1、熟练掌握while、do-while和for语句及三种循环之间 的嵌套和区别。,8、辅助控制语句,9、循环结构程序设计举例,引例:给出N个儿童的体重,要求计算平均体重,#define N 10 #include “stdio.h” main( ) /*定义变量存放某儿童体重、总体重和 平均体重*/ float Weight, total=0, aver; *输入N个儿童的体重并计算总体重*/ scanf(“%f”, /*前2个儿童的总体重*/,scanf(“%f”, /*前7个儿童的总体重*/,scanf(“%f”, ,#define N 10 #include “stdio.h” main( ) /*定义变量存放某儿童体重、总体重和平均体重*/ int i; float Weight, total=0, aver; *输入N个儿童的体重并计算总体重*/ for(i=1;i=N;i+) scanf(“%f”, ,循环结构是结构化程序设计的基本结构之一。,C语言中的循环结构可以用以下语句实现: 1. while 循环 2. do-while 循环 3. for 循环,5.3 while循环,一、while语句的语法格式:,while(表达式) 循环体,二、执行过程:,1.计算while后圆括号内表达式的值,为非0则执行第步,否则执行第步;,2.执行循环体,然后返回第步;,3.结束循环,执行while语句的下一语句。,例6-2:从键盘输入正整数n,求 1+2+3+.+n。,#include void main( ) int n,i,sum=0; scanf(“%u”, ,#include main( ) unsigned n,i=1; long factorial=1; scanf(“%u”, ,例6-3:从键盘输入正整数n,求n!,三、while语句的功能:,当表达式为非0时重复执行循环体。,四、注意事项:,1.while 语句的特征是”先判断后执行”;允许0次循环。,2.如果循环体包含一个以上的语句,那么应该用复合语 句“ ”的形式。,例如,程序段1: sum=i=0 ; while (i10) +i ; sum+=i ;,程序段2: sum=i=0; while(i10) +i; sum+=i; 想一想执行程序段1和程序段2后 i、sum的值?,3.在循环体中应有使循环趋于结束的语句。,考虑以下while循环的执行情况: i=1; sum=0; while(i10) sum+=i;,i=1; sum=0; while(i10) sum+=i; +i; ,作业: 1.从键盘输入两个正整数,求出它们的最大公约数和最小 公倍数。 要求: (1)使用while语句实现; (2)输出要说明信息,其形式为: 最大公约数=具体值,最小公倍数=具体值。 2.计算并输出100999中的水仙花数(若3位数的各位数立 方之和等于该数本身,则称该3位数为水仙花数)。 (1)使用while语句实现; (2)注意输出数据的格式控制。 3.假设公鸡每只5元,母鸡每只3元,小鸡三只1元,现有 100元,要求买100只鸡,问公鸡、母鸡和小鸡各多少只? 要求: (1)使用while语句的嵌套形式实现; (2)输出要有说明信息。,5.4 do-while循环,一、do-while语句的语法格式:,do 循环体 while( 表达式 );,do-while循环控制流程图,二、执行过程:,1.执行循环体;,2.求解while后圆括号内的表达式,若为非0则返回第1步;否则执行第3步;,3.结束循环,执行do-while语句的下一语句。,例6-4:从键盘输入正整数n,求 1+2+3+.+n。,#include void main( ) int i=1; unsigned n,sum=0; scanf(“%u”, ,3、do-while语句的功能:,执行循环体,直到表达式为0。,#include main( ) unsigned n,i=1; long factorial=1; scanf(“%u”, ,例6-5:从键盘输入正整数n,求n!,四、注意事项:,1.do-while 语句的特征是“先执行,后判断”;循环体最 少执行一次。,2.对于同一个问题, 既可以用 while语句 ,也可以用 do-while语句处理。,3.特别要注意while后加分号 ;,4.while和do-while循环的比较:,unsigned n, i=1,sum=0; scanf(“%u”, ,unsigned n,i=1,sum=0; scanf(“%u”, while(i=n);,作业: 1.从键盘输入两个正整数,求出它们的最大公约数和最小 公倍数。 要求: (1)使用do-while语句实现; (2)输出要有字说明,其形式为: 最大公约数=具体值,最小公倍数=具体值。 2.计算并输出100999中的水仙花数(若3位数的各位数立 方之和等于该数本身,则称该3位数为水仙花数)。 (1)使用do-while语句实现; (2)注意输出数据的格式控制。 3.从键盘输入80个字符,统计其中的空格、+ 、- 、* 、/ 、英文字母和其他字符的个数。 要求: (1)使用do-while语句的嵌套形式实现; (2)输出要有说明信息。,5.5 for循环,一、for语句的语法格式:,for(表达式1;表达式2;表达式3) 循环体,二、说明:,2.循环体由语句构成,以实现某种功能。,1.表达式1和表达式3是算式表达式,表达式2是条件;,for (i=1,sum=0; i=100; i+) sum=sum+i ;,for循环控制流程图,三、执行过程:,1.求解表达式1;,2.求解表达式2,若为非0则执行第3步;否则执行第5步;,3.执行循环体;,4.求解表达式3,然后返回第2步;,5.结束循环,执行for语句的下一语句。,例6-6:从键盘输入正整数n,求 1+2+3+.+n。,#include void main( ) int i; unsigned n,sum=0; scanf(“%u”, ,#include main( ) unsigned n,i; long factorial=1; scanf(“%u”, ,例6-7:从键盘输入正整数n求n!,四、for语句的功能:,当表达式2为非0时重复执行循环体。,五、使用for语句的注意事项:,1.任意表达式都可省略,但表达式后的分号必须保留:,例6-8:求1100之内偶数和。,main( ) int i , sum=0; for( i=1; i100;i+ ) if( i%2=0 )sum+=i; printf(“1-100之内偶数=%d”,sum); ,省略“表达式1”时,应在for语句之前给循环变量赋初值;,i=1 ; for( ; i=100 ; i+) sum+=i ;,省略“表达式2”时,编译系统默认表达式2为非0;,省略“表达式3”时,应在循环体中修改循环控制变量,以 保证循环正常结束.,for( i=1 ; ; i+) sum+=i ;,for( i=1 ; i=100 ; ) sum+=i ; i+ ; ,2.表达式2可以是任何类型,其值理解为逻辑量;,3.若表达式2从一开始就为0,那么循环体一次也不执行;,4.表达式1可以包含除给循环变量赋初值之外的其他操作;,5.表达式3可以做属于循环体的操作;,6.逗号表达式的最主要的用处:,让程序员使用多个初始化表达式和多个值递增表达式, 这在for语句中表现为表达式1和表达式3都是逗号表达式。,for(i=1,j=100,sum=0;ij;i+,j-) sum+=i+j;,for(i=1,sum=0;i=n; sum+=i+) ;,for(i=1,sum=0;i=n; i+) sum+=i;,六、循环语句的使用要点:,1.循环体含一个以上语句时,必须以复合语句的形式出现;当循环体为空时不要掉了分号(;)。,2.注意循环控制变量的初值及其修改,以保证循环正常 执行和正常结束。,3.可以在循环体中安排使表达式变为”0”的语句,也可以 通过表达式本身实现这种控制功能。,for( i=1; i=n; i+) if(! ( i%2 ) ) sum = sum + i;,for( i=1; i=n; ) if( ! ( i%2 ) ) sum = sum + i; i+ ; ,4.应避免无限循环、永不执行的循环、执行次数不正确 的循环等情况.,5.对于嵌套的循环语句,应写成缩进对齐格式,以增加 程序结构的清晰感和美感.,作业: 1.从键盘输入两个正整数,求出它们的最大公约数和最小 公倍数。 要求: (1)使用for语句实现; (2)输出要有字说明,其形式为: 最大公约数=具体值,最小公倍数=具体值。 2.计算并输出100999中的水仙花数(若3位数的各位数立 方之和等于该数本身,则称该3位数为水仙花数)。 (1)使用for语句实现; (2)注意输出数据的格式控制。 3.从键盘输入80个字符,统计其中的空格、+ 、- 、* 、/ 、英文字母和其他字符的个数。 要求: (1)使用for语句的嵌套形式实现; (2)输出要有说明信息。,5.6 循环的嵌套,当一个循环体内又包含另一个完整的循环结构时,就称 为循环的嵌套,while(条件1) while(条件2) ,do do while(条件2); while(条件1);,for(表达式1;表达式2;表达式3) for(表达式1;表达式2;表达式3) ,while(条件1) do while(条件2); ,while(条件) for(表达式1;表达式2;表达式3) ,do while(条件2) while(条件1);,do for(表达式1;表达式2;表达式3) while(条件);,for(表达式1;表达式2;表达式3) while(条件) ,for(表达式1;表达式2;表达式3) do while(条件); ,(1).内层循环出现在外层循环的循环体中;并且每次从 外层进入内层时,内层循环控制变量必须重新赋值。,1.注意事项:,例6-10:计算并输出100999中的水仙花数(若3位数的各 位数立方之和等于该数本身,则称该3位数为水仙花数)。,#include main( ) int a,b,c; printf(“n水仙花数:”); for(a=1;a=9;a+) for(b=0;b=9;b+) for(c=0;c=9;c+) if(a*a*a+b*b*b+c*c*c=a*100+b*10+c) printf(“%-6d”,a*100+c*10+d); ,例6-11:编写程序显示“九九乘法表”。,#include main( ) int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(“%d*%d=%-4d”,i,j,i*j); printf(“n”); ,(2). 根据具体问题分析内外层循环控制变量的关系。,作业: 百马百担问题:有100匹马,驮100担货,大马驮3担,中 马驮2担,两匹小马驮1担,问有大,小,中马各有多少匹?,5.7 几种循环的比较,1.四种循环都可以处理同一问题,一般情况下可以互换, 但是尽量不用if-goto型循环。,3. while 和do-while 循环,在while后面只指定循环的条 件,而使循环趋于结束的语句包含在循环体中。而for 循 环可以在“表达式3”中包含使循环趋于结束的操作。,2.用while 和 do-while循环时,循环变量的赋值应在 while 和 do-while之前 ;而for 循环可以在“表达式1”中 实现。,4. while循环和for循环:先判断后执行; do-while循环:先执行后判断。,5.对 while循环、do-while循环、for循环,用 break 语 句跳出循环,可以用 continue 语句结束本次循环。,例如:求 1+2+3+.+100?,void main( ) int i,sum=0; i=1; loop: if (i=100) sum=sum+i; i+; goto loop; printf(“%d“,sum); ,void main( ) int i,sum=0; i=1; while (i=100) sum=sum+i; i+; printf(“%d“,sum); ,goto 语句 构成的循环,while语句 构成的循环,void main( ) int i,sum=0; i=1; do sum=sum+i; i+; while(i=100); printf(“%d“,sum); ,do-while语 句构成的循环,void main( ) int i,sum=0; for (i=1;i=100;i+) sum=sum+i; printf(“%d“,sum); ,for语句构 成的循环,5.8 控制转移语句,一、C中控制转移语句的种类:,1.break语句,continue语句,goto语句:用于改变控制结构预定的程序流程。,2.return语句:用于从函数返回到函数的调用处。,二、break语句,1.语法格式:,break;,2.作用:,终止switch、for、while、do-while语句的执行,而 转去执行相应的下一语句.,阅读以下程序,分析其功能: void main() int i; unsigned factorial; factorial=1; for(i=1;132768) break; printf(“%d!=%dn“, i,factorial); ,3.使用break语句的注意事项:,(1).break语句只能用于循环语句或switch语句;,例:输出100以内的素数。 voi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论