《C语言程序设计循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计循环结构程序设计.ppt(42页珍藏版)》请在三一文库上搜索。
1、第5章 循环结构程序设计 C C 语言程序设计语言程序设计 北京航空航天大学北京航空航天大学 交通科学与工程学院交通科学与工程学院 徐国艳徐国艳 川 潮 杏 吼 懒 戒 朽 予 凤 指 慎 淖 蘑 虑 咐 史 书 沦 护 隘 练 镀 澳 爵 徐 酷 敲 敛 茄 熟 柴 扫 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 2 l l 循环的基本概念循环的基本概念 l l 不同形式的循环控制不同形式的循环控制 l l 多重循环问题多重循环问题 霜 玻 附 冒 许 衅 为 骗 首 绕 正 杉 胶 拌 镜 持 千 迢 伎 诵
2、椒 议 钮 镣 钟 迪 狗 碘 妈 所 讳 县 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 3 什么是循环? 为什么要使用循环? 5.1 5.1 循环的基本概念循环的基本概念 l循环是有规律的重复操作。将复杂问题分解 为简单的操作过程,程序只对简单过程描述 ,这些过程的多次重复就可完成对问题的求 解。重复的频繁性决定了循环在程序设计中 必不可少! 一、循环问题一、循环问题 问题1: 问题2:求学生平均成绩求学生平均成绩 分数相加后除以课程数分数相加后除以课程数 做做9999次加法次加法 问题3:找出数集找出数集x
3、x中能同时被中能同时被3 3和和7 7整除的数整除的数 找数找数 问题分解 循环控制 透 厢 哭 欣 营 斥 打 位 言 蓄 藏 铰 眨 轮 涉 冠 粱 奔 烘 臣 晚 钱 端 秦 叭 冲 喳 漠 允 蚊 阜 睡 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 4 5.1 5.1 循环的基本概念循环的基本概念 l while循环(5.2节) l do while循环(5.3节) l for循环(5.4节) l if-goto 循环(一般不用) 难点: C提供四种循环控制语句: 油 癸 阉 豹 卵 彻 妆 吠 硫 频 上
4、 宋 熙 宽 揍 澄 此 衡 哥 卧 傀 号 夜 舵 够 粤 宋 哪 舞 缠 炒 靛 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 5 5.15.1循环的基本概念(续)循环的基本概念(续) 二、循环结构二、循环结构 循环结构有两种形式:循环结构有两种形式: l当型循环结构 l直到型循环结构 循环体 N 条件 Y 当型循环直到型循环 条件 N Y 循环体 先判断后循环先判断后循环 先循环后判断 先循环后判断 入口 出口 循环体中是一 个过程,该过 程的复杂程度 取决于问题及 对问题的分解 邻 涤 孕 横 场 艳 附 刃
5、 洼 氢 墟 宪 蒸 允 孙 卤 矣 指 蹿 绣 岸 贯 蜀 短 嫡 肥 缮 这 醒 牵 穷 肮 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 6 5.1 5.1 循环的基本概念(续)循环的基本概念(续) 循环体 N 条件 Y l当型循环 条件 循环 次数 Y 循环体 ? Y Y 执行执行 1 1 Y Y 执行 3 Y Y 执行 2 N N 结束 循环体 Y ? 循环体 Y ? ? N 3次 在循环入口处判断在循环入口处判断 当条件为真时执行循环当条件为真时执行循环 泡 相 矫 凯 旭 酥 矛 蜘 趟 辑 胜 派 裙
6、 临 瓣 挡 过 丁 参 搓 顶 汝 温 糕 判 辑 朋 认 陈 博 噪 搐 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 7 5.15.1循环的基本概念(完)循环的基本概念(完) l直到型循环 在循环出口处判断,当条 件为真时继续执行循环, 直到条件为假时为止。 条件 N Y 循环体 条件 循环 次数 执行执行 1 1 Y Y 执行 3 Y Y 执行 2 N N 结束 3次 Y 条件 循环体 Y 条件 循环体 Y 条件 循环体 Y Y 执行 4 条件 循环体 N 4次 绦 叫 蛀 胺 揭 仲 篱 烁 辩 惭 谩 事
7、 巨 凿 溃 颐 兆 哺 扳 妥 莽 小 浴 晨 薯 北 拓 沏 妖 稻 步 薪 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 8 5.2 while5.2 while循环控制循环控制 l l 语句一般格式语句一般格式 while while (表达式表达式) 语句组语句组 l l 一般为一般为关系关系表达式表达式 或或逻辑逻辑表达式,也表达式,也 可以是可以是C C语言其他类语言其他类 型的合法表达式型的合法表达式 l l 用来控制循环体是用来控制循环体是 否被执行否被执行 l l 称为称为内嵌语句内嵌语句,可,可
8、 以是基本语句、控以是基本语句、控 制语句,也可以是制语句,也可以是 复合语句复合语句 l l 是循环重复执行的是循环重复执行的 部分部分 寿 署 躺 沽 拔 鼻 份 侣 曝 壁 纵 闪 奥 昆 魄 疟 盒 浇 椒 确 氢 蹈 漂 某 砰 吞 捍 箭 准 辛 辈 馅 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 9 l l 语句一般格式语句一般格式 while while (表达式表达式) 语句组语句组 l l 功能:功能:计算计算“ “表达式表达式” ”的值,为非的值,为非0 0(逻辑(逻辑 真)时,重复执行内嵌语
9、句,每执行一次真)时,重复执行内嵌语句,每执行一次 ,就判断一次表达式的值,直到表达式的,就判断一次表达式的值,直到表达式的 值为值为0 0 时结束循环,转去执行时结束循环,转去执行whilewhile后面的后面的 语句。语句。 烛 碘 集 袄 朱 凹 拍 向 殉 碾 师 驭 仿 饯 篮 钙 杂 会 绊 幽 纹 乃 发 沦 您 念 漱 挣 蜘 柠 悬 这 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 10 当表达式为真 语句 N-SN-S结构图结构图 N N Y Y 流程图流程图 表达式非0? 语句 循环控制条件循环
10、控制条件 循环体循环体 l l 语句一般格式语句一般格式 while while (表达式表达式) 语句组语句组 芹 傀 倡 遥 辑 焙 扑 冶 藻 乃 闻 枉 瞧 枉 鉴 脐 蚂 艺 伤 徘 澄 挠 诌 叫 咐 勃 峦 粘 犹 苦 岿 棠 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 11 例如:例如: 【例【例5.15.1】编写程序,求】编写程序,求100100个自然数的和个自然数的和 即:即: s=1+2+3+ s=1+2+3+ +100 +100 思路:寻找加数与求和的规律 加数i i从1变到100,每循环一
11、次,使i增1, 直到i的值超过100。i i的初值初值设为1。 求和设变量 sum sum 存放和,循环求 sum=sum+isum=sum+i,直至i超过100。 欠 乡 蔷 攀 藩 净 页 著 捕 听 犹 肌 疫 时 拆 卑 萎 皱 邑 怎 馅 勇 崔 姐 奶 券 瑰 默 噪 峪 拭 苛 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 12 算法和程序:算法和程序: #include “stdio.h“ void main( ) int i,sum; i=1; sum=0; while (i void main(
12、) int i, j; for ( i=1; i2n2) f f n n = = 思路:思路: l l 设变量设变量f1f1、f2f2和和f3f3,并为,并为f1f1和和f2f2赋初值赋初值1 1,令,令 f3=f1+f2f3=f1+f2得到第得到第3 3项;项; l l 将将f1f2f1f2, f2f3 f2f3,再求,再求f3=f1+f2f3=f1+f2得到第得到第4 4项;项; l l 依此类推求第依此类推求第5 5项、第项、第6 6项项 这是一种这是一种递推算法递推算法 应采用循环实现应采用循环实现 吐 赦 喻 宁 筑 崔 椎 愚 智 垂 嫉 斜 桌 银 澡 蘸 惦 春 迭 穿 等 扶
13、 悠 竿 属 虐 邻 惭 铺 逃 藏 炒 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 35 算法和程序算法和程序 #include “ stdio.h“ #define N N 20 void main( ) int i,f1,f2,f3; f1=f2=1; printf(“n%8d%8d“,f1,f2); for (i=3; i=mj=m) printf(“YESn“); else printf(“NOn“); 输入一个数m for (j=2; j=m T F 输出“YES“ 输出“NO“ 唱 需 庄 综 烙 亡
14、 彤 俞 溉 枣 考 富 入 慕 坎 椭 纹 谆 秘 伸 诣 岭 汹 缘 棵 龟 贞 央 佑 挡 梳 憾 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 38 举例举例 【例【例5.75.7】编程序求】编程序求2 21000010000以内的完全数。以内的完全数。 完全数:完全数:一个数的因子(除了这个数本身)之和 等于该数本身。 思路:思路: 设定设定i i从从2 2变到变到1000010000,对每个,对每个i i找到其因子和找到其因子和s s; 判定判定 i=s i=s?若相等,则?若相等,则i i为完全数,否则
15、不是。为完全数,否则不是。 例如:例如:6 6的因子是1、2、3,因子和 1+2+36 6 因此因此 6 6 是完全数是完全数 l l 使用使用穷举算法穷举算法 l l 用用双层循环双层循环实现实现 媳 犊 敦 奋 溪 盂 仪 隆 蛹 裕 蛀 牲 瞥 窥 率 蛋 么 踪 伦 察 顿 钻 拥 瘴 箔 济 戏 猴 挪 晰 贩 仿 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 39 算法和程序:算法和程序: #include “stdio.h“ void main( ) int i,j,s; forfor (i=2; i=
16、10000; i+) s=0; forfor (j=1; ji; j+) if (i%j=0) s+=j; if (i=s) printf(“%6dn“,s); for(i=2;i=10000; i+) s = 0 for (j=1; ji; j+) i%j=0 T F s=s+j i=s T F i是完全数 咒 递 里 平 斧 衣 组 沉 忽 泳 店 抗 瞻 春 蝎 萨 儡 冶 辰 撤 恰 颠 况 忆 辞 碳 掘 贡 襟 谈 袒 毛 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 40 举例举例 【例【例5.95.9
17、】编程序,输出以下图形。】编程序,输出以下图形。 * * * * 一共有一共有4 4 行,每行由空格和星号组成:空格数行,每行由空格和星号组成:空格数 按行增加,星号按行减少按行增加,星号按行减少 变量变量 i i 控制输出行数,控制输出行数, 从从1 1变化到变化到4 4 变量变量 j j 控制输出每行的空格和星号:控制输出每行的空格和星号: j j 从从1 1变化到变化到 i i,每次输出一个空格,每次输出一个空格 j j 从从1 1变化到变化到 8-28-2* *i i1 1,每次输出一个星号,每次输出一个星号 使用使用双重循环双重循环实现实现 思路:思路: 镊 樟 挣 胡 艳 同 射
18、遥 寂 肚 谰 钦 棱 汛 阮 募 牛 短 盅 洗 电 骡 氮 炮 班 绽 掸 坛 脚 辗 拨 尽 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 41 算法和程序:算法和程序: #include “stdio.h“ void main( ) int i,j; for (i=1; i=4; i+)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
19、=4; i+) for (j=1; j=i; j+) 输出一个空格 for (j=1; j=8-(2*i-1); j+) 输出一个星号 换行 延伸思考:延伸思考: l l 如何输出如何输出1010行行图形?图形? l l 输出图形向右输出图形向右平移平移2020个字符个字符 位置,应如何修改程序?位置,应如何修改程序? 凳 勤 魄 搽 腮 哼 音 两 斗 各 颖 短 禁 底 朴 订 渴 漆 镊 必 莎 筒 肖 剿 州 岔 焉 迭 涵 悔 煌 抚 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 * 42 作业作业 l l P 140P 140页页 6 6、8 8、1111、17.17. 习 喝 芥 细 粉 讳 笼 苫 舌 萨 吕 裹 钾 琅 缮 集 辙 枯 削 炊 翼 啥 登 募 摸 字 鸦 撬 占 虫 计 辱 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计 C 语 言 程 序 设 计 循 环 结 构 程 序 设 计
链接地址:https://www.31doc.com/p-5983700.html