C语言程序设计教程第5章课件

上传人:txadgkn****dgknqu... 文档编号:241639131 上传时间:2024-07-12 格式:PPT 页数:42 大小:248.03KB
返回 下载 相关 举报
C语言程序设计教程第5章课件_第1页
第1页 / 共42页
C语言程序设计教程第5章课件_第2页
第2页 / 共42页
C语言程序设计教程第5章课件_第3页
第3页 / 共42页
点击查看更多>>
资源描述
C语言程序设计教程 第5章 循环程序设计2024/7/121第五章第五章 循环结构循环结构 5.1 while语句5.2 do-while语句5.3 for 语句5.4 break、continue和goto语句5.5 循环的嵌套5.6 复合结构程序举例C C语言程序设计教程语言程序设计教程2023/8/141第五章 循环结构 5.1 whileC语言程序设计教程 第5章 循环程序设计2024/7/122本章重点、难点内容本章重点、难点内容l一、重点:1)3种循环语句的语法结构及其使用l 时的区别;l 2)循环结束条件表达式的构造;l 3)for语句的使用方法;l二、难点:1)循环控制变量的使用及循环 l 结束条件的设定;l 2)for语句的几种不同使用方法;l 3)break、continue语句的使用;l 4)循环嵌套;2023/8/142本章重点、难点内容一、重点:1)3种循环C语言程序设计教程 第5章 循环程序设计2024/7/123 C语言有while、do-while、和for语句三种循环结构语句。前两个称为条件循环,即根据条件来决定是否继续循环;后一个称为计数循环,即根据设定的执行次数来执行循环。2023/8/143 C语言有whileC语言程序设计教程 第5章 循环程序设计2024/7/1245.1 5.1 whilewhile语句语句 while 语句是通过判断循环控制条件是否满足来决定是否继续循环的语句。一般形式:while (条件表达式)循环体语句序列条件表达式为循环控制条件,当表达式的值为非零(满足循环条件),就执行循环体语句,当表达式的值为零,就退出循环。2023/8/1445.1 while语句 while 语句C语言程序设计教程 第5章 循环程序设计2024/7/125while语句执行流程语句执行流程表达式语句真假表达式首先计算条件表达式语句如果表达式的值为非零,执行语句表达式重新计算表达式如果表达式的值为0,则跳出循环如果表达式的值一开始就为0,则语句一次也会被不执行。2023/8/145while语句执行流程表达式语句真假表达C语言程序设计教程 第5章 循环程序设计2024/7/126while语句举例语句举例问题:求n个学生的平均成绩(先考虑程序的输入及输出)算法:1 输入 n;i=1,average=0;2 输入第 i 个学生的score;3 average+=score;i+;4 当 i=n 重复做2;5 average/=n;2023/8/146while语句举例问题:求n个学生的平C语言程序设计教程 第5章 循环程序设计2024/7/127main()int n,i=1;float score,average=0;printf(“n Enter n:”);scanf(“%d”,&n);while(i=n)printf(“n Enter score:”);scanf(“%f”,&score);average+=score;i+;average/=n;printf(“n average=%f”,average);2023/8/147main()C语言程序设计教程 第5章 循环程序设计2024/7/1285.2 dodowhilewhile语句语句 dowhile 语句的一般形式是:do 循环体语句 while (条件表达式)特点:首先执行语句,再通过判断循环控制条件是否满足来决定是否继续循环。2023/8/1485.2 dowhile语句 dowhC语言程序设计教程 第5章 循环程序设计2024/7/129dowhile语句执行流程语句执行流程首先计算语句,再计算表达式。如果表达式的值为非零,继续下一次循环如果表达式的值为0,则跳出循环如果表达式的值一开始就为0,也会执行一次语句。循环体语句条件表达式真真假假2023/8/149dowhile语句执行流程首先计算语句C语言程序设计教程 第5章 循环程序设计2024/7/1210main()int score,n,i=1;float average=0;printf(“Enter n:”);scanf(“%dn”,&n);do printf(“n Enter score:”);scanf(“%d”,&score);average+=score;i+;while(i=n);average/=n;printf(“n average=%f”,average);思考:与前面用While语句构成的循环在程序运行结果上有何区别?2023/8/1410main()C语言程序设计教程 第5章 循环程序设计2024/7/1211注意:循环控制注意:循环控制变量变量值值在循环体在循环体内必须有所改变。内必须有所改变。例如: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+;+;2023/8/1411注意:循环控制变量值在循环体内必须有所C语言程序设计教程 第5章 循环程序设计2024/7/12125.3 for循环语句 for(表达式1;表达式2;表达式3)循环体语句这是这是C语言最有特点的循环语句。使用最为灵活语言最有特点的循环语句。使用最为灵活方便方便。一般形式:一般形式:2023/8/14125.3 for循环语句 for(表达C语言程序设计教程 第5章 循环程序设计2024/7/1213先执行表达式先执行表达式1(初值表达式初值表达式),用,用于循环开始前设置变量初值。于循环开始前设置变量初值。接着计算表达式接着计算表达式2(循环条件控制表循环条件控制表达式达式),根据其真假值决定是否继,根据其真假值决定是否继续循环。续循环。执行循环体语句。执行循环体语句。最后执行表达式最后执行表达式3(循环控制变量修循环控制变量修改改)。表达式1表达式2循环体表达式3执行流程执行流程真真假假2023/8/1413先执行表达式1(初值表达式),用于循环C语言程序设计教程 第5章 循环程序设计2024/7/1214利用利用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);2023/8/1414利用for语句重新设计求平均成绩程序mC语言程序设计教程 第5章 循环程序设计2024/7/1215例例:求求 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+2023/8/1415例:求 1+2+99#inclC语言程序设计教程 第5章 循环程序设计2024/7/1216循环语句的多种表示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;i+;printf(“s=%d”,i);2023/8/1416循环语句的多种表示for(i=0;C语言程序设计教程 第5章 循环程序设计2024/7/1217for语句的表达式可以省略语句的表达式可以省略如已先给变量赋过值。则可以省略表达式1。for(;i100;i+)如果想在循环内部改变变量的值,则可以省略表达式3。for(i=0;i100;)如果省略表达式1,3的话就相当于while。for(;i100;)while(i100)全部省略就是死循环。for(;)(需要用break跳出)2023/8/1417for语句的表达式可以省略如已先给变量C语言程序设计教程 第5章 循环程序设计2024/7/1218逗号表达式逗号表达式 逗号运算符的主要应用就在for语句中。for语句中的表达式1和表达式3可以是逗号表达式,特别是有两个循环变量参与对循环的控制时。表达式1和表达式3为逗号表达式,将使程序显得非常清晰。例:for(i=1,j=10;i=j;i+,j-)2023/8/1418逗号表达式 逗号运算符的主要C语言程序设计教程 第5章 循环程序设计2024/7/1219for(i=a,j=b;i=j;i+,j-)举例举例问题:求 1/100+2/99+1 float s=0.0;int i,j;for(i=1,j=100;i=j;i+,j-)s=s+1.0*i/j;2023/8/1419for(i=a,j=b;i100)break;/*如果 i100,则退出循环*/printf(“s=%d”,s);本程序中,当i100时,强行终止for循环,继续执行for语句下一条语句2023/8/1424非结构化语句之break 它的作用C语言程序设计教程 第5章 循环程序设计2024/7/1225非结构化语句之非结构化语句之continuecontinue语句被称为继续语句。执行continue语句,使本次循环提前结束,即跳过循环体中continrue语句下面的尚未执行的循环体语句,但不结束整个循环,继续进行下一次循环的条件判别,条件为真,继续进行执行循环语句。该语句形式为:continue;2023/8/1425非结构化语句之continueconC语言程序设计教程 第5章 循环程序设计2024/7/1226例例5.4统计某个班级一门课程学生及格的人统计某个班级一门课程学生及格的人数数 main()int n,i=1,j=0;float score;printf(“n=:”);scanf(“%dn”,&n);while(i=n)printf(“enter score:”);scanf(“%fn”,&score);i+;/*请思考该语句能否放在j+语句处 if(score60)continue;j+;printf(“%dn”,j);2023/8/1426例5.4统计某个班级一门课程学生及格的C语言程序设计教程 第5章 循环程序设计2024/7/1227非结构化语句之非结构化语句之gotogoto被称为无条件转移语句。由两部分组成被称为无条件转移语句。由两部分组成goto 标号标号;和和 标号标号:语句语句它最大的好处就是可以一下子跳出多重循环,而break却不能做到这点。2023/8/1427非结构化语句之gotogoto被称为无C语言程序设计教程 第5章 循环程序设计2024/7/1228l#include“stdio.h”lmain()l float score,average=0;l int n=0;l scanf(“%f”,&score);/*输入第一个学生的分数*/lif(score=0)/*表达式为非0,转移到loop标号处*/l goto loop;l average=average/n;/*求平均成绩average*/l end:printf(“%6.2f”,average);/*输出平均成绩,保留两位小数*/l2023/8/1428#include“stdio.h”C语言程序设计教程 第5章 循环程序设计2024/7/1229 5.5 循环的嵌套 在循环体语句中又有另一个完整的循环结构的形式,称为循环的嵌套。嵌套在循环体内的循环称语句称为内循环,外面的循环语句称为外循环。如果内循环体中又有嵌套的循环语句,称为多层循环。While、do-while、for三种循环都可以互相嵌套。循环嵌套的程序中,要求内循环必须被包含在外层循环的循环体中,不允许出现内外层循环体交叉的情况。2023/8/1429 5.5 循环的嵌套 C语言程序设计教程 第5章 循环程序设计2024/7/123000 01 02 03 04 0510 11 12 13 14 1520 21 22 23 24 2530 31 32 33 34 3540 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);2023/8/143000 01 02 03 04 05输出C语言程序设计教程 第5章 循环程序设计2024/7/1231循环嵌套举例循环嵌套举例问题:输出图形*2023/8/1431循环嵌套举例问题:输出图形C语言程序设计教程 第5章 循环程序设计2024/7/1232分析:一共6行,每行的*数目与行号相同算法:行用 i 表示,当 i=6 do 输出 i 个 *换行 int i,j;for(i=1;i7;i+)printf(n);for(j=1;j=i;j+)putchar(*);2023/8/1432分析:一共6行,每行的*数C语言程序设计教程 第5章 循环程序设计2024/7/1233循环嵌套举例循环嵌套举例问题:输出图形 *2023/8/1433循环嵌套举例问题:输出图形C语言程序设计教程 第5章 循环程序设计2024/7/1234循环嵌套循环嵌套分析:一共4行,第i行输出的空格数为:(7-i+1)/2 第i行输出 i*2-1个*,算法:当 i=7 do 输出 (7-i+1)/2个空格 ;输出i 个 *换行;i+=2;2023/8/1434循环嵌套分析:一共4行,C语言程序设计教程 第5章 循环程序设计2024/7/1235main()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();2023/8/1435main()int i,j;C语言程序设计教程 第5章 循环程序设计2024/7/1236复合程序结构复合程序结构 C语言允许循环语句与分支结构语句联用,即在循环体包含一个完整的分支结构,这样的程序结构被称为复合程序结构。复合程序结构同样必须做到嵌套层次清楚,决不允许出现嵌套层次之间相互交叉的情况。2023/8/1436复合程序结构 C语言允许循C语言程序设计教程 第5章 循环程序设计2024/7/1237 例:给多个学生的成绩评级例:给多个学生的成绩评级。#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);scanf(“%d”,&score);/*输入下一个学生的成绩输入下一个学生的成绩*/while 结构中嵌套了一个多分支选择结构。结构中嵌套了一个多分支选择结构。2023/8/1437 例:给多个学生的成绩评级。C语言程序设计教程 第5章 循环程序设计2024/7/12385.6 复合程序结构复合程序结构举例举例l例1l目标:输入一个年号,判断是否为闰年。l算法:能被4整除且不是100的倍数,或者能被400整除。2023/8/14385.6 复合程序结构举例例1C语言程序设计教程 第5章 循环程序设计2024/7/12392023/8/1439C语言程序设计教程 第5章 循环程序设计2024/7/1240#include void main()int year,leap;printf(“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);2023/8/1440#include C语言程序设计教程 第5章 循环程序设计2024/7/1241l例例2l目标:找出3至1000内的全部的质数。l算法:从i=3 开始做l分别用2,3,4,i-1 除i,l如果i被某个数整除,i不是素数。li+;测试下一个i;2023/8/1441例2C语言程序设计教程 第5章 循环程序设计2024/7/1242#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 */2023/8/1442#include m
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


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

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


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