循环结构训练ppt课件

上传人:资****亨 文档编号:130409032 上传时间:2020-04-27 格式:PPT 页数:42 大小:560.50KB
返回 下载 相关 举报
循环结构训练ppt课件_第1页
第1页 / 共42页
循环结构训练ppt课件_第2页
第2页 / 共42页
循环结构训练ppt课件_第3页
第3页 / 共42页
循环结构训练ppt课件_第4页
第4页 / 共42页
循环结构训练ppt课件_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《循环结构训练ppt课件》由会员分享,可在线阅读,更多相关《循环结构训练ppt课件(42页珍藏版)》请在金锄头文库上搜索。

1、综合训练一循环结构程序 项目一 图形编程项目二 学生成绩的分组汇总项目三 其他问题项目四 举一反三 项目一图形输出 项目要求给定图形 按照要求格式输出项目分析 分析图形的特点 包括行 列上字符的个数 通过多重循环控制图形的输出 使用双重循环实现 思路 一共有4行 每行由星号组成 变量i控制输出行数 从1变化到4变量j控制输出每行的星号 j从1变化到4 每次输出一个星号 例1 编程序 输出以下图形 参考代码 include stdio h main inti j for i 1 i 4 i for j 1 j 4 j printf printf n 改写例1 编程序 输出以下图形 思路 一共有4

2、行 每行由星号组成 变量i控制输出行数 从1变化到4变量j控制输出每行的星号 j从1变化到i 每次输出一个星号 参考代码 main inti j for i 1 i 4 i for j 1 j i j printf printf n 再次改写例1 编程序 输出以下图形 思路 一共有4行 每行由空格和星号组成 空格数按行增加 星号按行减少变量i控制输出行数 从1变化到4变量j控制输出每行的空格和星号 j从1变化到i 每次输出一个空格j从1变化到8 2 i 1 每次输出一个星号 参考算法和程序 main inti j for i 1 i 4 i for j 1 j i j printf for j

3、 1 j 8 2 i 1 j printf printf n 思考 如何输出10行图形 输出图形向右平移20个字符位置 应如何修改程序 反复训练 编程显示如下所示的图形 分析 题目要求的三角形由5行组成 因此程序中循环结构的循环次数应为5次 每一次输出一行 而 输出一行 又进一步分为三项工作 1 输出若干个空格 2 输出若干个星号 3 回车换行 为新的一行的输出做准备 现在的问题是 如何确定每一行应输出的空格数和字符 的数目 以便分别通过循环来输出这两种字符 includemain inti j for i 1 i 5 i 一共输出5行 for j 1 j 6 i j printf 输出空格数

4、for j 1 j 2 i 1 j printf 输出 的数目printf n 换行 项目二学生成绩的分组汇总 项目要求一个班中有四个小组 求本学期期中考试中每个小组数学成绩的总分及平均分 项目分析在一个小组中对学生数学成绩的平均分与总分进行计算 然后就是重复进行4次 所以 将这一项目可分成二个任务 任务一 求一个小组学生成绩的总分及平均分 任务二 求四个小组学生成绩的总分及平均分 分析 如果本小组一共有十个同学 显然不可能定义十个变量x1 x2 x10 然后在程序中表示成sum x1 x2 x3 x10 求一个小组的学生总成绩的步骤就是 先输入第一个学生的成绩 然后将这个成绩加到总分中 接下

5、来 输入第二个学生的成绩 再将第二个学生的成绩加入到总分中 不断重复 直到小组中最后一个同学的成绩输入并加入到总分为止 重复执行就是循环 重复工作是计算机特别擅长的工作之一 任务1求一个小组学生成绩的总分及平均分 一 问题情景一个班进行了一次考试 现要输入第一小组学生的成绩 计算这一小组的总分与平均分 并按要求输出 二 具体实现 include stdio h main intscore i sum 0 floatavg i 1 printf 请输入本小组10个学生的成绩 while i 10 scanf d while i 10 scanf d 任务情景中的程序及流程图 include st

6、dio h main intscore i sum 0 floatavg i 1 printf 请输入本小组10个学生的成绩 while i 10 scanf d While实例练习 例2 本学期期末考试进行了三门课程的测试 成绩单下来后 8个室友兄弟要一比高低 这就要得到每个人三门课程的总分和平均分 用C语言实现之 分析 1 定义五个实型变量x y z s和avg 依次放每一名学生的三门课程成绩 这三门课程的总成绩和平均分 2 每次取出一名学生的三门课程成绩 依次给x y z 然后再一起放到s中 就可以得到该同学的三门课的总分和平均分 3 以上步骤重复执行8次 include stdio h

7、 main inti floatx y z sum avg i 1 while i 8 printf 请输入第 d个同学三门课的成绩 i scanf f f f 求一个小组学生成绩的总分及平均分的程序可改写为 include stdio h main intscore i sum 0 floatavg i 1 printf 请输入本小组10个学生的成绩 do scanf d 将例2用do while语句来改进实现 求8个室友兄弟每个人三门课程的总分和平均分 include stdio h main inti floatx y z sum avg i 1 do printf 请输入第 d个同学三

8、门课的成绩 i scanf f f f 求一个小组学生成绩的总分及平均分的程序可改写为 include stdio h main intscore i sum 0 floatavg printf 请输入本小组10个学生的成绩 for i 1 i 10 i scanf d for的进一步练习 用for语句来改进实现例2 求八位室友每个人三门课的总分及平均分 include stdio h main inti floatx y z sum avg for i 1 i 8 i printf 请输入第 d个同学三门课的成绩 i scanf f f f 任务2求每个小组学生成绩的总分及平均分 一 问题情

9、景一个班进行了一次考试 现要输入全班四个小组的学生成绩 计算每一小组的总分与平均分 并按要求输出 分析 在任务1中 所解决的问题是 一个小组学生成绩的总分及平均分 若现在一个班中有四个小组 现求每个小组的学生成绩的总分及平均分 也就是将任务1重复进行四次 显然写四段程序是不科学的 科学的方法是再嵌套一个循环 具体实现 include stdio h main intscore i j 1 sum floatavg while j 4 sum 0 i 1 printf 请输入第 d小组学生成绩 j while i 10 scanf d 下一个小组 程序运行结果 一个循环体内又包含另一个完整的循环

10、体 称为循环的嵌套 与if的嵌套相同 内嵌的循环中还可以嵌套循环 这就是多层循环 内层的优先级比外层的高 只有内层的执行完才能执行外层的 循环嵌套的要领对各种语言都是一样的 三种循环 while循环 do while循环 for循环 可以互相嵌套 本任务用do while循环嵌套do while循环的程序解决 include stdio h main intscore i sum floatavg intj 1 do sum 0 i 1 printf 请输入第 d小组学生成绩 j do scanf d 黄色的循环包含在玫瑰色的循环中 本任务用for循环嵌套for循环 include stdio

11、 h main intscore i sum floatavg intj 1 for j 4 j sum 0 printf 请输入第 d小组学生成绩 j for i 1 i 10 i scanf d 黄色的循环包含在玫瑰色的循环中 本任务while循环嵌套do while循环 include stdio h main intscore i sum floatavg intj 1 while j 4 sum 0 printf 请输入第 d小组学生成绩 j i 1 do scanf d 黄色的循环包含在玫瑰色的循环中 思考 用for循环嵌套while循环 do while循环嵌套for循环编程解决

12、任务2 项目三 其他问题 例如 百钱买百鸡 水仙花 求素数 例3 将1 100之间不能被3整除的数输出 分析 定义变量i其初值为1 验证1是否能被3整除 若不能整除 则输出i 然后将i累加到2 再次验证2是否被被3整除 若不能整除 则输出i 这样一直重复 直到i值 100 includemain inti i 1 while i 100 if i 3 0 printf 3d i i 程序如下 将 例3 用for语句来改进实现 将1 100之间不能被3整除的数输出 includemain inti for i 1 i 100 i if i 3 0 printf 3d i 将 例3 用do whi

13、le语句来改进实现 将1 100之间不能被3整除的数输出 includemain inti i 1 do if i 3 0 printf 3d i i while i 100 例4 编程实现百钱买百鸡 有一老大爷去集贸市场买鸡 他想用100元钱买100只鸡 而且要求所买的鸡有公鸡 母鸡 小鸡 已知公鸡2元一只 母鸡3元一只 小鸡0 5元一只 问老大爷要买多少只公鸡 母鸡 小鸡恰好花去100元钱 并且买到100只鸡 分析 x y z 100 x 3y 0 5z 100 y 1 5z 100 x 200 2 5z 假设公鸡买x只 母鸡买y只 小鸡买z只 则由题意可得 1 当z 2时 计算y与x的值

14、 2 当z 4时 计算y与x的值 3 当z 8时 计算y与x的值 4 一直计算到z 98时 计算y与x的值显然 如果x y的值都大于零 则输出x y z 所以用for循环的程序如左 includemain intx y z for z 2 z0 用双循环实现 例4 的百钱买百鸡 分析 假设公鸡买x只 母鸡买y只 小鸡买z只 则 1 y可以是1 2 3 33的一个值 2 x可以是1 2 3 50的一个值 3 然后由y及x 显然可解得z 100 x y 4 如果所花的钱刚好是100 则输出x y z 程序如下 includemain intx y z for x 1 x 50 x for y 1

15、y 33 y z 100 x y if 2 x 3 y 0 5 z 100 printf 公鸡数为 d 母鸡数为 d 小鸡数为 d n x y z 例5 输入二个正整数 求它们的最大公约数 分析 1 若输入二个正整数分别为a b 它的最大公约数为k k的值应小于等于a b中的一个相对小数 2 然后进行a k及b k的运算 若它们的余数为零 则k就是最大公约数 3 若a k及b k中至少有一个的余数不为零 则k k 1 然后再执行 2 includemain inta b k printf 请输入二个正整数 scanf d d 程序的运行结果为 请输入二个正整数56最大公约数为1 例6 判断素数

16、 例5 在数学课上 李老师要同学们对给定的任意正整数进行判断 看是否为素数 这个数学问题 用C语言该如何解决 分析 因为素数只能被1及本身整除 所以判断一个大于2的正整数x是否为素数 就让x按顺序除以i 2 3 x 1 若x能被它们中的任一个除尽 就可跳出循环 因为此数一定不是素数 所以判断x是不是素数 就可以用i的值来衡量 若i x 则x一定是素数 否则就不是素数 includemain inti x printf 请输入一个正整数 scanf d 例7 显示如下的下三角九九乘法表 12436948121651015202561218243036714212835424981624324048566491827364554637281 分析 该乘法表要列出1 1 2 1 2 2 3 1 3 2 3 3 9 9的值 乘数的范围是1 9 针对每一个乘数 被乘数的范围是1到它本身 因此可以用两重循环解决问题 按乘数组织外层循环 i表示从1 9 按被乘数组织内层循环 j表示从1 i 从而确定每一行输出的内容 includemain inti j for i 1 i 9 i for j 1 j

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号