《循环结构训练》PPT课件.ppt
《《循环结构训练》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《循环结构训练》PPT课件.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、综合训练一综合训练一 循环结构程序循环结构程序项目一:图形编程项目一:图形编程项目二:学生成绩的分组汇总项目二:学生成绩的分组汇总 项目三:其他问题项目三:其他问题项目四:举一反三项目四:举一反三项目一项目一 图形输出图形输出项目要求项目要求 给定图形,按照要求格式输出项目分析:项目分析:分析图形的特点,包括行、列上字符的个数,通过多重循环控制图形的输出 *使用使用使用使用双重循环双重循环双重循环双重循环实现实现实现实现思路:思路:思路:思路:一共有一共有一共有一共有4 4 行,每行由星号组成:行,每行由星号组成:行,每行由星号组成:行,每行由星号组成:变量变量变量变量 i i 控制输出行数,
2、控制输出行数,控制输出行数,控制输出行数,从从从从1 1变化到变化到变化到变化到4 4变量变量变量变量 j j 控制输出每行的星号:控制输出每行的星号:控制输出每行的星号:控制输出每行的星号:j j 从从从从1 1变化到变化到变化到变化到 4 4,每次输出一个星号每次输出一个星号每次输出一个星号每次输出一个星号例例1 1:编程序,输出以下图形:编程序,输出以下图形参考代码:参考代码:#includestdio.hmain()int i,j;for(i=1;i=4;i+)for(j=1;j=4;j+)printf(*);printf(n);改写例改写例1 1:编程序,输出以下图形。编程序,输出以
3、下图形。*思路:思路:思路:思路:一共有一共有一共有一共有4 4 行,每行由星号组成:行,每行由星号组成:行,每行由星号组成:行,每行由星号组成:变量变量变量变量 i i 控制输出行数,控制输出行数,控制输出行数,控制输出行数,从从从从1 1变化到变化到变化到变化到4 4变量变量变量变量 j j 控制输出每行的星号:控制输出每行的星号:控制输出每行的星号:控制输出每行的星号:j j 从从从从1 1变化到变化到变化到变化到 i i,每次输出一个星号每次输出一个星号每次输出一个星号每次输出一个星号参考代码:参考代码:main()inti,j;for(i=1;i=4;i+)for(j=1;j=i;j
4、+)printf(*);printf(n);再次改写例再次改写例1 1:编程序,输出以下图形。编程序,输出以下图形。*思路:思路:思路:思路:一共有一共有一共有一共有4 4 行,每行由空格和星号组成:空格数行,每行由空格和星号组成:空格数行,每行由空格和星号组成:空格数行,每行由空格和星号组成:空格数按行增加,星号按行减少按行增加,星号按行减少按行增加,星号按行减少按行增加,星号按行减少变量变量变量变量 i i 控制输出行数,控制输出行数,控制输出行数,控制输出行数,从从从从1 1变化到变化到变化到变化到4 4变量变量变量变量 j j 控制输出每行的空格和星号:控制输出每行的空格和星号:控制输
5、出每行的空格和星号:控制输出每行的空格和星号:j j 从从从从1 1变化到变化到变化到变化到 i i,每次输出一个空格每次输出一个空格每次输出一个空格每次输出一个空格 j j 从从从从1 1变化到变化到变化到变化到 8-28-2*i i1 1,每次输出一个星号每次输出一个星号每次输出一个星号每次输出一个星号参考算法和程序:参考算法和程序:main()inti,j;for(i=1;i=4;i+)for(j=1;j=i;j+)printf();for(j=1;j=8-(2*i-1);j+)printf(*);printf(n);for(i=1;i=4;i+)for(j=1;j=i;j+)输出一个空
6、格输出一个空格 for(j=1;j=8-(2*i-1);j+)输出一个星号输出一个星号 换行换行思考:思考:思考:思考:l l如何输出如何输出如何输出如何输出1010行行行行图形?图形?图形?图形?l l输出图形向右输出图形向右输出图形向右输出图形向右平移平移平移平移2020个字符个字符个字符个字符位置,应如何修改程序?位置,应如何修改程序?位置,应如何修改程序?位置,应如何修改程序?【反复训练】编程显示如下所示的图形【反复训练】编程显示如下所示的图形 *分析:题目要求的三角形由5行组成,因此程序中循环结构的循环次数应为5次,每一次输出一行。而“输出一行”又进一步分为三项工作。(1)输出若干个
7、空格;(2)输出若干个星号;(3)回车换行,为新的一行的输出做准备。现在的问题是,如何确定每一行应输出的空格数和字符”*”的数目,以便分别通过循环来输出这两种字符。行号应输出的空格应输出的“*”151243335427519i6-i2*i-1#includemain()inti,j;for(i=1;i=5;i+)/一共输出一共输出5行行for(j=1;j=6-i;j+)printf();/输出空格数输出空格数for(j=1;j=2*i-1;j+)printf(*);/输出输出”*”的数目的数目printf(“n”);/换行换行项目二项目二 学生成绩的分组汇总学生成绩的分组汇总项目要求项目要求
8、一个班中有四个小组,求本学期期中考试中每个小组数学成绩的总分及平均分。项目分析项目分析在一个小组中对学生数学成绩的平均分与总分进行计算;然后就是重复进行4次。所以,将这一项目可分成二个任务:任务一:求一个小组学生成绩的总分及平均分;任务二:求四个小组学生成绩的总分及平均分。分析:如果本小组一共有十个同学,显然不可能定义十个变量x1,x2,x10,然后在程 序中表示成sum=x1+x2+x3+x10。求一个小组的学生总成绩的步骤就是:先输入第一个学生的成绩,然后将这个成绩加到总分中,接下来,输入第二个学生的成绩,再将第二个学生的成绩加入到总分中,不断重复,直到小组中最后一个同学的成绩输入并加入到
9、总分为止。重复执行就是循环。重复工作是计算机特别擅长的工作之一。任务任务1 1 求一个小组学生成绩的总分及平均分求一个小组学生成绩的总分及平均分 一、问题情景一、问题情景 一个班进行了一次考试,现要输入第一小组学生的成绩,计算这一小组的总分与平均分,并按要求输出。二、具体实现二、具体实现#include stdio.hmain()int score,i,sum=0;float avg;i=1;printf(请输入本小组10个学生的成绩:);while(i=10)scanf(%d,&score);sum=sum+score;i=i+1;avg=sum/10.0;printf(本小组10个学生的总
10、分为:%dn,sum);printf(本小组10个学生的平均分为:%.2fn,avg);while(i=10)scanf(“%d”,&score);sum=sum+score;i=i+1;任务情景中的程序及流程图任务情景中的程序及流程图#includestdio.hmain()intscore,i,sum=0;floatavg;i=1;printf(请输入本小组请输入本小组10个学生的成绩:个学生的成绩:);while(i=10)scanf(%d,&score);sum=sum+score;i=i+1;avg=sum/10.0;printf(本小组本小组10个学生的总分为:个学生的总分为:%d
11、n,sum);printf(本小组本小组10个学生的平均分为:个学生的平均分为:%.2fn,avg);WhileWhile实例练习实例练习【例2】本学期期末考试进行了三门课程的测试。成绩单下来后,8个室友兄弟要一比高低,这就要得到每个人三门课程的总分和平均分,用C语言实现之。分析:(1)定义五个实型变量x,y,z,s和avg,依次放每一名学生的三门课程成绩、这三门课程的总成绩和平均分;(2)每次取出一名学生的三门课程成绩,依次给x,y,z,然后再一起放到s中,就可以得到该同学的三门课的总分和平均分。(3)以上步骤重复执行8次。#includestdio.hmain()inti;floatx,y
12、,z,sum,avg;i=1;while(i=8)printf(请输入第请输入第%d个同学三门课的成绩个同学三门课的成绩,i);scanf(%f%f%f,&x,&y,&z);sum=x+y+z;avg=sum/3;printf(第第%d个同学的总分为个同学的总分为%.2f,平均分平均分%.2fn,i,sum,avg);i=i+1;求一个小组学生成绩的总分及平均分的程序可改写为求一个小组学生成绩的总分及平均分的程序可改写为:#includestdio.hmain()intscore,i,sum=0;floatavg;i=1;printf(请输入本小组请输入本小组10个学生的成绩:个学生的成绩:)
13、;doscanf(%d,&score);sum=sum+score;i=i+1;while(i=10);avg=sum/10.0;printf(本小组本小组10个学生的总分为:个学生的总分为:%dn,sum);printf(本小组本小组10个学生的平均分为:个学生的平均分为:%.2fn,avg);将例将例2用用dowhile语句来改进实现。语句来改进实现。求求8个室友兄弟每个人三门课程的总分和平均分个室友兄弟每个人三门课程的总分和平均分#includestdio.hmain()inti;floatx,y,z,sum,avg;i=1;doprintf(请输入第请输入第%d个同学三门课的成绩个同学
14、三门课的成绩,i);scanf(%f%f%f,&x,&y,&z);sum=x+y+z;avg=sum/3;printf(第第%d个同学的总分为个同学的总分为%.2f,平均分平均分%.2fn,i,sum,avg);i=i+1;while(i=8);求一个小组学生成绩的总分及平均分的程序可改写为:求一个小组学生成绩的总分及平均分的程序可改写为:#includestdio.hmain()intscore,i,sum=0;floatavg;printf(请输入本小组请输入本小组10个学生的成绩:个学生的成绩:);for(i=1;i=10;i+)scanf(%d,&score);sum=sum+scor
15、e;avg=sum/10.0;printf(本小组本小组10个学生的总分为:个学生的总分为:%dn,sum);printf(本小组本小组10个学生的平均分为:个学生的平均分为:%.2fn,avg);for的进一步练习的进一步练习用for语句来改进实现例2。(求八位室友每个人三门求八位室友每个人三门课的总分及平均分课的总分及平均分)#includestdio.hmain()inti;floatx,y,z,sum,avg;for(i=1;i=8;i+)printf(请输入第请输入第%d个同学三门课的成绩个同学三门课的成绩,i);scanf(%f%f%f,&x,&y,&z);sum=x+y+z;av
16、g=sum/3;printf(第第%d个同学的总分为个同学的总分为%.2f,平均分平均分%.2fn,i,sum,avg);任务任务 2 2 求每个小组学生成绩的总分及平均分求每个小组学生成绩的总分及平均分一、问题情景一、问题情景 一个班进行了一次考试,现要输入全班四个小组的学生成绩,计算每一小组的总分与平均分,并按要求输出。分析分析在任务在任务1中,所解决的问题是:一个小组学生成绩的总分及平均分。中,所解决的问题是:一个小组学生成绩的总分及平均分。若现在一个班中有四个小组,现求每个小组的学生成绩的总分及若现在一个班中有四个小组,现求每个小组的学生成绩的总分及平均分。也就是将任务平均分。也就是将
17、任务1重复进行四次,显然写四段程序是不科学重复进行四次,显然写四段程序是不科学的,科学的方法是再嵌套一个循环。的,科学的方法是再嵌套一个循环。具体实现:具体实现:#includestdio.hmain()intscore,i,j=1,sum;floatavg;while(j=4)sum=0;i=1;printf(请输入第请输入第%d小组学生成绩小组学生成绩:,j);while(i=10)scanf(%d,&score);sum=sum+score;i=i+1;/本小组学生数增加本小组学生数增加1/注意输入方式(空格)注意输入方式(空格)avg=sum/10.0;printf(本小组本小组10个
18、学生的总分为:个学生的总分为:%dn,sum);printf(本小组本小组10个学生的平均分为:个学生的平均分为:%.2fn,avg);j+;/下一个小组下一个小组定义变量及赋初值score,i,sum定义平均分float avg;定义变量j并赋初值1 /j代表小组数,先从第一小组开始 j=4赋初值i=1,sum=0 /每个小组刚开始总分为零提示请输入本小组10个学生的成绩:i的初值为1i=10输入成绩scoresum=sum+score;/将成绩累加到总分sum中i+;/学生人数增加1计算平均分输出总分及平均分j+;程序运行结果一个循环体内又包含另一个完整的循环体,称为循环的嵌套,与一个循环
19、体内又包含另一个完整的循环体,称为循环的嵌套,与if的嵌套相同,的嵌套相同,内嵌的循环中还可以嵌套循环,这就是多层循环。内层的优先级比外层的高,内嵌的循环中还可以嵌套循环,这就是多层循环。内层的优先级比外层的高,只有内层的执行完才能执行外层的,循环嵌套的要领对各种语言都是一样的。只有内层的执行完才能执行外层的,循环嵌套的要领对各种语言都是一样的。三种循环三种循环(while循环、循环、dowhile循环、循环、for循环循环)可以互相嵌套。可以互相嵌套。本任务用本任务用dowhile循环嵌套循环嵌套dowhile循环的程序解决:循环的程序解决:#includestdio.hmain()ints
20、core,i,sum;floatavg;intj=1;dosum=0;i=1;printf(请输入第请输入第%d小组学生成绩小组学生成绩:,j);doscanf(%d,&score);sum=sum+score;i=i+1;/本小组学生数增加本小组学生数增加1while(i=10);avg=sum/10.0;printf(本小组本小组10个学生的总分为:个学生的总分为:%dn,sum);printf(本小组本小组10个学生的平均分为:个学生的平均分为:%.2fn,avg);j+;/下一个小组下一个小组while(j=4);黄色的循环包含在玫瑰色的循环中本任务用本任务用for循环嵌套循环嵌套fo
21、r循环:循环:#includestdio.hmain()intscore,i,sum;floatavg;intj=1;for(;j=4;j+)sum=0;printf(请输入第请输入第%d小组学生成绩小组学生成绩:,j);for(i=1;i=10;i+)scanf(%d,&score);sum=sum+score;avg=sum/10.0;printf(本小组本小组10个学生的总分为:个学生的总分为:%dn,sum);printf(本小组本小组10个学生的平均分为:个学生的平均分为:%.2fn,avg);黄色的循环包含在玫瑰色的循环中本任务本任务while循环嵌套循环嵌套dowhile循环循环
22、#includestdio.hmain()intscore,i,sum;floatavg;intj=1;while(j=4)sum=0;printf(请输入第请输入第%d小组学生成绩小组学生成绩:,j);i=1;doscanf(%d,&score);sum=sum+score;i+;while(i100。#includemain()inti;i=1;while(i=100)if(i%3!=0)printf(“%3d”,i);i+;程序如下将将【例【例3 3】用用for语句来改进实现语句来改进实现v将将1100之间不能被之间不能被3整除的数输出。整除的数输出。#includemain()inti
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环结构训练 循环 结构 训练 PPT 课件
限制150内