C语言程序设计教程-第5章

上传人:xins****2008 文档编号:228005814 上传时间:2023-08-17 格式:PPT 页数:42 大小:275KB
收藏 版权申诉 举报 下载
C语言程序设计教程-第5章_第1页
第1页 / 共42页
C语言程序设计教程-第5章_第2页
第2页 / 共42页
C语言程序设计教程-第5章_第3页
第3页 / 共42页
资源描述:

《C语言程序设计教程-第5章》由会员分享,可在线阅读,更多相关《C语言程序设计教程-第5章(42页珍藏版)》请在装配图网上搜索。

1、第五章 循环结构 5.1 while语句5.2 do-while语句5.3 for 语句5.4 break、continue和goto语句5.5 循环的嵌套5.6 复合结构程序举例C C语言程序设计教程语言程序设计教程8/17/20238/17/20231 1C语言程序设计教程 第5章 循环程序设计本章重点、难点内容一、重点:一、重点:1 1)3 3种循环语句的语法结构及其使用种循环语句的语法结构及其使用 时的区别;时的区别;2 2)循环结束条件表达式的构造;)循环结束条件表达式的构造;3 3)forfor语句的使用方法;语句的使用方法;二、难点:二、难点:1 1)循环控制变量的使用及循环)循

2、环控制变量的使用及循环 结束条件的设定;结束条件的设定;2 2)forfor语句的几种不同使用方法;语句的几种不同使用方法;3 3)breakbreak、continuecontinue语句的使用;语句的使用;4 4)循环嵌套;)循环嵌套;8/17/20238/17/20232 2C语言程序设计教程 第5章 循环程序设计 C语言有while、do-while、和for语句三种循环结构语句。前两个称为条件循环,即根据条件来决定是否继续循环;后一个称为计数循环,即根据设定的执行次数来执行循环。8/17/20238/17/20233 3C语言程序设计教程 第5章 循环程序设计5.1 while语句

3、while 语句是通过判断循环控制条件是否满足来决定是否继续循环的语句。一般形式:while (条件表达式)循环体语句序列条件表达式为循环控制条件,当表达式的值为非零(满足循环条件),就执行循环体语句,当表达式的值为零,就退出循环。8/17/20238/17/20234 4C语言程序设计教程 第5章 循环程序设计while语句执行流程表达式语句真假表达式首先计算条件表达式语句如果表达式的值为非零,执行语句表达式重新计算表达式如果表达式的值为0,则跳出循环如果表达式的值一开始就为0,则语句一次也会被不执行。8/17/20238/17/20235 5C语言程序设计教程 第5章 循环程序设计whil

4、e语句举例问题:求n个学生的平均成绩(先考虑程序的输入及输出)算法:1 输入 n;i=1,average=0;2 输入第 i 个学生的score;3 average+=score;i+;4 当 i=n 重复做2;5 average/=n;8/17/20238/17/20236 6C语言程序设计教程 第5章 循环程序设计main()int n,score,i=1;float average=0;printf(“n Enter n:”);scanf(“%d”,&n);while(i=n)printf(“n Enter score:”);scanf(“%d”,&score);average+=sco

5、re;i+;average/=n;printf(“n average=%f”,average);8/17/20238/17/20237 7C语言程序设计教程 第5章 循环程序设计5.25.2 dowhile语句 dowhile 语句的一般形式是:do 循环体语句 while (条件表达式)特点:首先执行语句,再通过判断循环控制条件是否满足来决定是否继续循环。8/17/20238/17/20238 8C语言程序设计教程 第5章 循环程序设计dowhile语句执行流程首先计算语句,再计算表达式。如果表达式的值为非零,继续下一次循环如果表达式的值为0,则跳出循环如果表达式的值一开始就为0,也会执行一

6、次语句。循环体语句条件表达式真真假假8/17/20238/17/20239 9C语言程序设计教程 第5章 循环程序设计main()int score,n,i=1;float average=0;do printf(“Enter n:”);scanf(“%dn”,&n);printf(“n Enter score:”);scanf(“%d”,&score);average+=score;i+;while(i=n);average/=n;printf(“n average=%f”,average);思考:与前面用While语句构成的循环在程序运行结果上有何区别?8/17/20238/17/2023

7、1010C语言程序设计教程 第5章 循环程序设计注意:循环控制变量值在循环体内必须有所改变。例如:i=1;while(i=100)putchar(*);i+;这个循环永远不会结束这个循环永远不会结束,因为循环控制变量因为循环控制变量i i没有没有在循环体内被改变,在循环体内被改变,i+;i+;不属于循环语句。不属于循环语句。i+i+应该在循环体内改变应该在循环体内改变:i i=1 1;while(i=while(i=100100)putcharputchar(*);(*);i i+;+;8/17/20238/17/20231111C语言程序设计教程 第5章 循环程序设计5.3 for循环语句

8、for(表达式1;表达式2;表达式3)循环体语句这是这是C语言最有特点的循环语句。使用最为灵活语言最有特点的循环语句。使用最为灵活方便方便。一般形式:一般形式:8/17/20238/17/20231212C语言程序设计教程 第5章 循环程序设计先执行表达式先执行表达式1(初值表达式初值表达式),用,用于循环开始前设置变量初值。于循环开始前设置变量初值。接着计算表达式接着计算表达式2(循环条件控制表循环条件控制表达式达式),根据其真假值决定是否继,根据其真假值决定是否继续循环。续循环。执行循环体语句。执行循环体语句。最后执行表达式最后执行表达式3(循环控制变量修循环控制变量修改改)。表达式1表达

9、式2循环体表达式3执行流程执行流程真真假假8/17/20238/17/20231313C语言程序设计教程 第5章 循环程序设计利用for语句重新设计求平均成绩程序main()int n,score,i;float average=0;printf(“n Enter n:”);scanf(“%d”,&n);for(i=1;i=n;i+)printf(“n Enter score:”);scanf(“%d”,&score);average+=score;average/=n;printf(“n average=%f”,average);8/17/20238/17/20231414C语言程序设计教程

10、 第5章 循环程序设计例例:求求 1+2+99#include(stdio.h)main()int i,s=0;/*s清清0*/for(i=1;i100;i+)s=s+i;printf(“s=%d”,i;);i=1i100s=s+ii+8/17/20238/17/20231515C语言程序设计教程 第5章 循环程序设计循环语句的多种表示for(i=0;i100;i+)s=s+i;main()int i=1,s=0;do s=s+i;i+;while(i100);printf(“s=%d”,i);i=0i100s=s+ii+main()int i,s=0;i=0;while(i100)s=s+i

11、;i+;printf(“s=%d”,i);8/17/20238/17/20231616C语言程序设计教程 第5章 循环程序设计for语句的表达式可以省略如已先给变量赋过值。则可以省略表达式1。for(;i100;i+)如果想在循环内部改变变量的值,则可以省略表达式3。for(i=0;i100;)如果省略表达式1,3的话就相当于while。for(;i100;)while(i100)全部省略就是死循环。for(;)(需要用break跳出)8/17/20238/17/20231717C语言程序设计教程 第5章 循环程序设计逗号表达式 逗号运算符的主要应用就在for语句中。for语句中的表达式1和表

12、达式3可以是逗号表达式,特别是有两个循环变量参与对循环的控制时。表达式1和表达式3为逗号表达式,将使程序显得非常清晰。例:for(i=1,j=10;i=j;i+,j-)8/17/20238/17/20231818C语言程序设计教程 第5章 循环程序设计for(i=a,j=b;i=j;i+,j-)举例问题:求 1/100+2/99+1 float s=0.0;for(i=1,j=100;i100)break;/*如果 i100,则退出循环*/printf(“s=%d”,s);本程序中,当i100时,强行终止for循环,继续执行for语句下一条语句8/17/20238/17/20232424C语言

13、程序设计教程 第5章 循环程序设计非结构化语句之continuecontinue语句被称为继续语句。执行continue语句,使本次循环提前结束,即跳过循环体中continrue语句下面的尚未执行的循环体语句,但不结束整个循环,继续进行下一次循环的条件判别,条件为真,继续进行执行循环语句。该语句形式为:continue;8/17/20238/17/20232525C语言程序设计教程 第5章 循环程序设计例5.4统计某个班级一门课程学生及格的人数 main()main()int int n,i=1,j=0n,i=1,j=0;float score;float score;printfprintf

14、(“n=:”);(“n=:”);scanfscanf(“%dn”,&n);(“%dn”,&n);while(i=n)while(i=n)printfprintf(“enter score:”);(“enter score:”);scanfscanf(“%fn”,&score);(“%fn”,&score);i+;i+;/*/*请思考该语句能否放在请思考该语句能否放在j+j+语句处语句处 if(score60)if(score60)continuecontinue;j+j+;printfprintf(“%dn”,j);(“%dn”,j);8/17/20238/17/20232626C语言程序设计

15、教程 第5章 循环程序设计非结构化语句之gotogoto被称为无条件转移语句被称为无条件转移语句。由两部分组成由两部分组成goto 标号标号;和和 标号标号:语句语句它最大的好处就是可以一下子跳出多重循环,而break却不能做到这点。8/17/20238/17/20232727C语言程序设计教程 第5章 循环程序设计#include“include“stdiostdio.h”.h”main()main()float score,average=0 float score,average=0;intint n=0 n=0;scanfscanf(“%f”,&score)(“%f”,&score);

16、/*/*输入第一个学生的分数输入第一个学生的分数*/if if(score0score=0)/*if(score=0)/*表达式为非表达式为非0,0,转移到转移到looploop标号处标号处*/gotogoto loop loop;average=average/n average=average/n;/*/*求平均成绩求平均成绩average*/average*/end end:printf(“%6.2f”,average)printf(“%6.2f”,average);/*/*输出平均成绩输出平均成绩,保留两位小数保留两位小数 */*/8/17/20238/17/20232828C语言程序

17、设计教程 第5章 循环程序设计 5.5 循环的嵌套 在循环体语句中又有另一个完整的循环结构的形式,称为循环的嵌套。嵌套在循环体内的循环称语句称为内循环,外面的循环语句称为外循环。如果内循环体中又有嵌套的循环语句,称为多层循环。While、do-while、for三种循环都可以互相嵌套。循环嵌套的程序中,要求内循环必须被包含在外层循环的循环体中,不允许出现内外层循环体交叉的情况。8/17/20238/17/20232929C语言程序设计教程 第5章 循环程序设计00 01 02 03 04 0510 11 12 13 14 1520 21 22 23 24 2530 31 32 33 34 35

18、40 41 42 43 44 4550 51 52 53 54 55输出结果:执行语句段:执行语句段:for(i=0;i6;i+)for(j=0;j6;j+)printf(“%3d%3d”,i,j);putchar(n);8/17/20238/17/20233030C语言程序设计教程 第5章 循环程序设计循环嵌套举例问题:输出图形*8/17/20238/17/20233131C语言程序设计教程 第5章 循环程序设计分析:一共6行,每行的*数目与行号相同算法:行用 i 表示,当 i=6 do 输出 i 个 *换行 int i,j;for(i=1;i7;i+)printf(n);for(j=1;j

19、=i;j+)putchar(*);8/17/20238/17/20233232C语言程序设计教程 第5章 循环程序设计循环嵌套举例问题:输出图形 *8/17/20238/17/20233333C语言程序设计教程 第5章 循环程序设计循环嵌套分析分析:一共一共4 4行,行,第第i i行输出的空格数为行输出的空格数为:(7-:(7-i+1)/2i+1)/2 第第i i行输出行输出 i*2-1i*2-1个个*,算法算法:当当 i=7 doi=7 do 输出输出 (7-(7-i+1)/2i+1)/2个空格个空格 ;输出输出i i 个个 *换行换行 ;i+=2;i+=2;8/17/20238/17/20

20、233434C语言程序设计教程 第5章 循环程序设计main()int i,j;for(i=1;i=7;i+=2)printf(“n”);for(j=1;j=(7-i+1)/2;j+)putchar();/*输出 (7-i+1)/2个空格*/for(j=1;j=i;j+)putchar(*);/*输出i 个 */getch();8/17/20238/17/20233535C语言程序设计教程 第5章 循环程序设计复合程序结构 C语言允许循环语句与分支结构语句联用,即在循环体包含一个完整的分支结构,这样的程序结构被称为复合程序结构。复合程序结构同样必须做到嵌套层次清楚,决不允许出现嵌套层次之间相互

21、交叉的情况。8/17/20238/17/20233636C语言程序设计教程 第5章 循环程序设计 例:给多个学生的成绩评级例:给多个学生的成绩评级。#include#include main()int i,score;scanf(%d,&score);while(score=0)switch(score/10)case 10:case 9:printf(%d:An,score);break;case 8:case 7:printf(%d:Bn,score);break;case 6:printf(%d:Cn,score);break;default:printf(%d:Dn,score);sc

22、anf(“%d”,&score);/*输入下一个学生的成绩输入下一个学生的成绩*/while 结构中嵌套了一个多分支选择结构。结构中嵌套了一个多分支选择结构。8/17/20238/17/20233737C语言程序设计教程 第5章 循环程序设计5.6 复合程序结构举例例1目标:输入一个年号,判断是否为闰年。算法:能被4整除且不是100的倍数,或者能被400整除。8/17/20238/17/20233838C语言程序设计教程 第5章 循环程序设计8/17/20238/17/20233939C语言程序设计教程 第5章 循环程序设计#include void main()int year,leap;p

23、rintf(“Enter year:”);scanf(“%d”,&year);if(year%400=0)leap=1;/*是闰年leap 置成1*/else if(year%4=0&year%100!=0 )leap=1;else leap=0;/*不是闰年leap 置成0*/if(leap=1)printf(“%d:is a leap year.”,year);else printf(“d is not a leap year”,year);8/17/20238/17/20234040C语言程序设计教程 第5章 循环程序设计例例2目标:找出3至1000内的全部的质数。算法:从i=1 开始做

24、分别用2,3,4,i-1 除i,如果i被某个数整除,i是素数。i+;测试下一个i;8/17/20238/17/20234141C语言程序设计教程 第5章 循环程序设计#include main()int i,j,count,flag;/*用flag作标志*/count=0;for(i=3;i=1000;i+)flag=0;/*设标志为0*/for(j=2;j=sqrt(i);j+)if (i%j=0)/*用 j 测试 i*/flag=1;/*不是素数,设标志为1*/*i 测试完毕*/if(flag=0)/*i是素数*/printf(“%4d,”,i);count+;if(count%8=0)printf(“n”);/*每输出8个素数就换行*/*测试下一个 i */8/17/20238/17/20234242

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!