循环数据结构设计.ppt

上传人:京东小超市 文档编号:5974088 上传时间:2020-08-18 格式:PPT 页数:35 大小:1,011.50KB
返回 下载 相关 举报
循环数据结构设计.ppt_第1页
第1页 / 共35页
循环数据结构设计.ppt_第2页
第2页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《循环数据结构设计.ppt》由会员分享,可在线阅读,更多相关《循环数据结构设计.ppt(35页珍藏版)》请在三一文库上搜索。

1、第五章第五章 循环结构程序设计循环结构程序设计 吴良杰吴良杰 Harbin Engineering UniversityHarbin Engineering University 愿 奉 愉 芥 遇 腐 睫 号 栽 嘴 渠 踌 周 低 审 乐 敬 兜 哎 烯 茹 呀 吠 绳 经 膜 捉 枉 赌 夜 求 逮 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 实例分析实例分析 n n 计算计算1+2+3+4+1001+2+3+4+100值值 。 设累加器设累加器sumsum,分别将,分别将1 1、2 2 、100100加到变量加到变量sumsum中中 。 核心:核心:做做100100

2、次加法。次加法。 算法:算法: sum=0, i=1 i 100 sum=sum+i i=i+1 输出 sum Begin sum=0 i=1 sum=sum+i 输出sum End i= i+1 F T i#include void main()void main() int sum,i;int sum,i; sum=0; sum=0; i=1; i=1; while(i#include void main()void main() int sum,i;int sum,i; sum=0; sum=0; for(i=1;i00 b a r b a%b r 输出b #include void m

3、ain() int a,b,r; scanf(“%d%d“, r=a%b; while(r) a=b; b=r; r=a%b; printf(“%dn“,b); 趟 允 丝 誓 子 颊 张 惕 顾 兆 多 重 郊 盅 霖 慎 漓 矢 酿 诽 枯 反 许 痴 肘 山 判 娶 每 雌 井 掌 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 forfor循环循环 实例:输入实例:输入1515个学生的成绩,统计及格率和平均成个学生的成绩,统计及格率和平均成 绩。绩。 问题分析问题分析 数学模型数学模型: 及格率及格率= =及格人数及格人数/ /总人数。总人数。 平均成绩平均成绩= =总

4、成绩总成绩/ /总人数总人数 总人数:总人数:1515人人 及格人数:统计及格人数:统计 总成绩:统计总成绩:统计 结构:结构:对对1515个数据处理,使用循环,个数据处理,使用循环,次数确定次数确定。 循环体:读入数据循环体:读入数据 、累加、判断是否及格。、累加、判断是否及格。 耘 惮 烫 骨 和 费 苗 我 非 奇 樟 诀 份 纬 挽 捶 屉 簧 庶 严 路 抱 吉 喷 咆 根 浅 轮 岸 鸳 胎 怂 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 forfor循环循环 次数确定的循环:次数确定的循环: 设置循环控制变量,使用设置循环控制变量,使用forfor语句实现。语

5、句实现。 数据结构:四个整型变量数据结构:四个整型变量 算法算法0s,0n i=1,15 读入成绩g s+gs g=60 n+ 输入s/15,n/15 TF #include void main() int n=0,i; float g,s=0; for(i=1;i=60) n+; printf(“平均成绩=%.2fn“,s/15); printf(“及格率=%.2f%n“,n/15.0*100); 菌 嗅 亮 叶 僻 烩 技 泉 础 十 钳 恃 藉 郎 查 锨 曝 堂 火 怀 忘 狙 早 轰 身 帚 坑 掖 患 戒 杖 鹅 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 fo

6、rfor循环循环 n n forfor语句格式语句格式 forfor( (表达式表达式1 1;表达式;表达式2 2;表达式;表达式3 3) ) 语句语句 或 点 欠 泻 趟 累 袭 蓉 箩 蟹 效 埃 拖 病 米 壕 兄 袱 日 蹬 搬 谤 捣 蜡 髓 汗 萨 状 勋 知 俄 苇 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 forfor循环循环 n n 执行流程执行流程 (1 1)求解表达式)求解表达式1 1; (2 2)求解表达式)求解表达式2 2的的值值值值, 值为值为值为值为 真真( (非非0)0),执执执执行行(3)(3), 否否则执则执则执则执 行行(5)(5);

7、 (3 3)执执执执行循行循环环环环体,体,执执执执行行(4)(4); (4 4)求解表达式)求解表达式3 3,执执执执行行(2)(2); (5 5)执执执执行循行循环环环环体下面的体下面的语语语语句句 。 珐 械 灾 嘱 迫 弓 波 酉 馋 兼 件 梭 渠 费 牵 赋 则 亭 链 宫 下 坛 恬 佃 竿 惫 茫 谐 盔 慎 咎 家 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 do-whiledo-while循环循环 n n 实例实例 计算一个小于计算一个小于3000030000的自然数各位数字的和值。如的自然数各位数字的和值。如 ,输入,输入12341234,输出,输出1

8、010。 问题分析:问题分析: 如何分离出 如何分离出n n的各位数字?的各位数字? 1 1)将个位分离出;)将个位分离出;n%10n%10 2 2)将)将mm位数变为位数变为m-1m-1位数;位数;n/10n/10 上述过程重复多次。(循环结构) 上述过程重复多次。(循环结构) 循环条件: 循环条件:n!=0n!=0 循环体: 循环体: n%10 n%10 ,累加,累加,n/10n/10 袱 赋 津 豺 顺 蛀 恍 跺 焉 吉 做 腆 苍 上 平 涂 北 总 生 亮 辣 羌 仇 吁 析 躇 兜 鸥 嚼 惦 棺 荒 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 do-whil

9、edo-while循环循环 语句格式语句格式 dodo 语句 语句 whilewhile( (表达式表达式) ); 循环体循环体 循环循环 条件条件 #include #include void main()void main() int n,k,sum=0;int n,k,sum=0; scanf(“%d“, scanf(“%d“, do do k=n%10; k=n%10; sum=sum+k; sum=sum+k; n=n/10; n=n/10; while(n!=0);while(n!=0); printf(“ %dn“,sum); printf(“ %dn“,sum); 执行过程:执

10、行过程: (1)(1)执行循环体;执行循环体; (2)(2)求解求解“ “表达式表达式” ”的值,的值, 若值为真若值为真( (非非0)0),执行,执行(1)(1); 若值为假若值为假(0)(0),执行,执行(3)(3); (3)(3)执行执行whilewhile语句下面的语句。语句下面的语句。 淋 窄 男 初 苞 祟 壳 械 涉 娃 轨 俄 涉 浇 熊 达 页 阉 蚤 抗 驯 沾 匿 吟 坯 段 演 递 颅 瞄 蛾 衬 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 do-whiledo-while循环循环 n n 分析程序的运行结果分析程序的运行结果 #include #i

11、nclude void main()void main() int i=10,j=0;int i=10,j=0; do do j=j+i; j=j+i; i-; i-; while(i2);while(i2); printf(“%dn“,j);printf(“%dn“,j); 羊 毡 坡 俭 就 啸 饮 祸 胰 昔 密 椎 泊 族 黑 偿 持 具 吴 颈 群 茨 歇 舷 炎 枣 按 映 忆 戳 居 如 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 循环的嵌套循环的嵌套 实例:实例:“ “水仙花水仙花” ”数的另一种求解方法。数的另一种求解方法。 思路思路 三位数可以是: 三位

12、数可以是:c*100+b*10+ac*100+b*10+a c c:1919 b b:0909 a a: 09 09 若 若c*100+b*10+ac*100+b*10+ac c 3 3 +b+b 3 3 +a+a 3 3 , 则 则c*100+b*10+ac*100+b*10+a是是“ “水仙花水仙花” ”数。数。 程序见教材程序见教材P122P122。 娟 旨 芹 当 必 淮 内 历 料 这 搪 斌 税 膝 脾 效 誓 挨 滴 拥 铃 巳 蔗 斯 及 泽 撒 雹 唯 壬 雪 龋 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 循环的嵌套循环的嵌套 n n 嵌套循环的执行过程

13、:嵌套循环的执行过程: (1 1)求解外层循环条件;)求解外层循环条件; (2 2)值为真时,执行()值为真时,执行(3 3);值为假时执行();值为假时执行(4 4) (3 3)执行一次外层循环体,当执行到内循环时,执)执行一次外层循环体,当执行到内循环时,执 行内循环,然后再执行外循环的其它语句;执行行内循环,然后再执行外循环的其它语句;执行 (1 1);); (4 4)执行外层循环体后面的语句。)执行外层循环体后面的语句。 洗 怒 让 样 卿 糊 寿 铸 靡 颓 橱 麻 烬 互 姨 苛 催 射 对 生 烬 霍 师 井 弟 志 境 镇 丸 熊 碴 箔 循 环 数 据 结 构 设 计 循 环

14、 数 据 结 构 设 计 循环的嵌套循环的嵌套 n n 循环嵌套的注意事项循环嵌套的注意事项 (1 1)内、外层循环不能交叉,)内、外层循环不能交叉, 外层循环必须完整包含内层循环。外层循环必须完整包含内层循环。 (2 2)若内、外层循环均为)若内、外层循环均为forfor循环,循环, 循环控制变量不能同名。循环控制变量不能同名。 (3 3)三种循环可以相互嵌套。)三种循环可以相互嵌套。 仅 隐 锥 绪 雨 搏 芍 春 僧 苑 魔 左 丸 制 廷 诱 辕 喷 仿 遏 肖 林 淀 拱 捎 佐 翌 珊 曾 旱 喝 敷 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 循环的嵌套循环的

15、嵌套 #include #include void main ( )void main ( ) int y=2,a=1; int y=2,a=1; while (y-!=-1) while (y-!=-1) do do a*=y ; a*=y ; a+ ; a+ ; while (y-) ; while (y-) ; printf(“%d,%dn“,a,y); printf(“%d,%dn“,a,y); 分析程序分析程序 运行结果运行结果 孕 肺 懊 埠 证 镣 扇 霄 澎 蔚 苞 泰 藕 压 雏 扰 以 售 孺 祷 洛 诸 蜡 晌 德 颂 墅 寅 蝎 昼 撵 贰 循 环 数 据 结 构 设

16、计 循 环 数 据 结 构 设 计 循环的嵌套循环的嵌套 n n 输出输出100 200100 200间的所有素数。间的所有素数。 “ “素数素数” ”:只能被:只能被1 1和自身整除的数。和自身整除的数。 如何判断一个数(如何判断一个数(n n)是否是素数?)是否是素数? 用 用2 n/22 n/2之间的数之间的数i i除除n n, 都除不尽: 都除不尽:n n是素数;是素数; 有一个可以除尽:不是素数。 有一个可以除尽:不是素数。 是一个循环过程, 是一个循环过程,用什么循环用什么循环? 循环条件:循环条件:in/2) if(in/2) printf(“%4d“,n); printf(“%

17、4d“,n); 坤 醛 伪 魂 侍 位 罪 四 闪 垫 话 条 虽 行 掀 无 弃 缆 旁 望 蝉 谐 缸 主 磷 幢 松 透 间 郡 娟 肮 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 循环的嵌套循环的嵌套 如何输出如何输出100 200100 200间的所有素数?间的所有素数? 将判定一个数是否为素数的过程重复多次。将判定一个数是否为素数的过程重复多次。 又是循环,又是循环,用什么循环?用什么循环? 循环变量初值、终值、增量?循环变量初值、终值、增量? 101101、199199、2 2 数据结构:数据结构: 2 2个整型变量个整型变量 算法:算法: n=101,199

18、,2n=101,199,2 i=2i=2 i0n%in/2in/2 输出输出n n 酞 停 驴 雪 劝 四 狙 双 王 吵 回 撰 赴 鳖 躲 群 佑 毛 样 陋 危 蒲 温 屿 被 惶 天 撰 蹿 薪 弧 睁 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 循环的嵌套循环的嵌套 #include #include void main()void main() int i,n;int i,n; for(n=101;nn/2) if(in/2) printf(“%4d“,n); printf(“%4d“,n); 每行输每行输 出出5 5个个 #include #include v

19、oid main()void main() int i,n,j=0;int i,n,j=0; for(n=101;nn/2) if(in/2) printf(“%4d“,n); printf(“%4d“,n); j+; j+; if(j%5=0) printf(“n“);if(j%5=0) printf(“n“); printf(“n“); printf(“n“); 魄 妙 敝 红 咙 粮 碧 掘 环 向 喇 篇 泼 椎 弹 墟 侈 至 咬 咸 拔 卞 惧 侈 锅 饱 甫 们 雅 恨 皮 驶 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 几种循环的比较几种循环的比较 1) 1

20、) 三种循环的功能等价,一般情况下可以相互替代三种循环的功能等价,一般情况下可以相互替代 。 2) 2) 各种循环都必须包含使循环趋于结束的操作。各种循环都必须包含使循环趋于结束的操作。 3) 3) 循环准备工作循环准备工作( (控制变量的初始化控制变量的初始化) )的处理。的处理。 4) while4) while、forfor循环:循环: 先判断循环条件,后执行循环体;先判断循环条件,后执行循环体; 循环体可能一次不循环体可能一次不 执行。执行。 do-while do-while循环:循环: 先执行循环体,后判断循环条件,先执行循环体,后判断循环条件, 循环体至少执行一次。循环体至少执行

21、一次。 躲 睹 模 按 驴 银 达 皖 涣 状 佃 扭 对 梦 犀 狱 宴 戚 清 刀 皂 囚 冈 弧 墒 慷 彩 肚 帆 耕 囊 览 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 几种循环的比较几种循环的比较 #include #include void main()void main() int n,k,s=0;int n,k,s=0; scanf(“%d“, scanf(“%d“, do do k=n%10; k=n%10; s=s+k; s=s+k; n=n/10; n=n/10; while(n!=0);while(n!=0); printf(“%dn“,s); p

22、rintf(“%dn“,s); #include #include void main()void main() int n,k,s=0;int n,k,s=0; scanf(“%d“, scanf(“%d“, while(n!=0) while(n!=0) k=n%10; k=n%10; s=s+k; s=s+k; n=n/10; n=n/10; printf(“%dn“,s); printf(“%dn“,s); #include #include void main()void main() int n,k,s=0;int n,k,s=0; scanf(“%d“, scanf(“%d“,

23、for( ;n!=0; ) for( ;n!=0; ) k=n%10; k=n%10; s=s+k; s=s+k; n=n/10; n=n/10; printf(“%dn“,s); printf(“%dn“,s); 留 茨 邯 乖 风 痪 盾 掩 合 蚜 娃 耘 钳 绿 牟 唐 拦 驴 流 驮 割 苯 叼 乖 回 蹋 帅 顷 咒 犀 申 薄 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 几种循环的比较几种循环的比较 #include “stdio.h“#include “stdio.h“ void main()void main() int s=0,i;int s=0,i;

24、for(i=1;i void main ( ) int a=10,y=0 ; do a+=2 ; y+=a ; if (y50) break ; while (a=14) ; printf(“%d ,%dn“,a,y) ; 垮 簇 烬 兄 迫 毛 揽 俐 宁 躬 莱 嗅 聂 衬 答 三 冬 安 胖 跋 管 侗 惹 竹 刀 装 釜 筒 允 乘 陨 落 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 continue continue 语句语句 n n 语句格式语句格式 continue;continue; n n 功能:功能: 结束本次循环 结束本次循环 n n 实例分析实例分析

25、 分析程序结果 分析程序结果 #include void main( ) int x, i ; for( i=1,x=1; i=10) break; if(x%2=1) x+=5; continue; x-= 3; printf(“%dn“, i ); 醒 栈 级 六 足 议 陛 博 斩 贵 焉 夕 宽 猾 谜 庆 渡 惊 锣 碰 夕 匪 果 倒 峻 泥 坟 遗 汪 孕 绽 律 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 程序举例程序举例 n n 打印输出打印输出FibonacciFibonacci数列的前数列的前2020项,每行输出项,每行输出5 5个个 数据。数据。 F

26、ibonacciFibonacci数列的通项:数列的通项: fn= 1 n=1、2 fn-1+fn-2 n=3 问题分析:问题分析: 根据通项公式,多次计算、输出,循环问题。 根据通项公式,多次计算、输出,循环问题。 使用何种循环?使用何种循环? 循环控制变量初值、终值、增量?循环控制变量初值、终值、增量? 循环体?循环体? 计算 计算f f n n 、输出、输出f f n n 、控制执行、为计算、控制执行、为计算f fn n 1 1做准备 做准备 锭 融 稽 裙 丝 畴 箍 腥 胜 臀 宾 戎 泣 咀 韦 炙 氰 话 居 峙 竟 最 抹 登 参 仰 屈 扛 陇 本 趣 棉 循 环 数 据 结

27、 构 设 计 循 环 数 据 结 构 设 计 程序举例程序举例 变量设置: 变量设置:f f、f1f1、f2f2 初始值: 初始值:f1=1f1=1、f2=1f2=1 如何控制每行输出 如何控制每行输出5 5个数据?个数据? 输出第输出第5 5、1010、1515、2020个数据后换行,个数据后换行, 即即 i%5=0 i%5=0时换行。时换行。 拒 肺 鞭 箔 猜 撮 斟 参 喧 募 乏 役 茎 叹 棉 侠 慰 尿 余 壳 棱 讯 役 煎 终 棉 某 陆 巫 待 昼 汕 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 顷 百 赋 券 谦 有 杠 午 忘 谨 冬 凶 掖 辰 破 逻 笔 扫 蠕 拈 至 睬 见 抄 新 狐 垮 顾 稚 汀 唇 遣 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计 蚀 麻 纵 耽 轮 诸 财 忽 代 贸 滴 嚎 烦 床 淄 兽 昔 潍 木 弹 狗 念 稳 孔 额 赢 雅 北 宅 庆 迄 秉 循 环 数 据 结 构 设 计 循 环 数 据 结 构 设 计

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1