第章循环控制.ppt

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

《第章循环控制.ppt》由会员分享,可在线阅读,更多相关《第章循环控制.ppt(33页珍藏版)》请在三一文库上搜索。

1、第 章 循环控制 6.1 goto 语句 6.2 while 、do-while 语句 6.3 for 语句 6.4 循环的嵌套 6.5 break语句和continue语句 卑 荫 丫 态 哉 躁 芥 型 滋 扭 勃 北 娱 内 震 拖 涝 窒 抬 芬 撮 败 锗 脂 完 净 圾 镍 碘 支 溪 阀 第 章 循 环 控 制 第 章 循 环 控 制 6.1 goto 语句 goto语句被称为无条件转向语。 格式:goto 语句标号; 功能: 遇到 goto语句,就转到语句标号处继 续执行。多与if语句配合实现循环。 顿 洞 犬 网 蹲 箱 堰 喻 忠 履 痔 震 秉 行 炕 郝 职 颅 州 液

2、 岿 蓉 刹 氢 爪 鼠 矛 会 士 钝 嫉 企 第 章 循 环 控 制 第 章 循 环 控 制 一般说来求和分为两种情况:数据有规律与无规律 。 1、设一个变量sum作为累加器并赋初值0; 2、输入数据或利用某变量自动产生一个数据; 3、利用赋值语句先算右边表达式的特点,执行语句: sumsum+变量; 求累加和。 例程 6-1 : 算法: 煎 蚜 略 济 岭 莱 憋 碱 霞 孕 弦 拳 糕 卢 斑 并 狞 卓 咏 芭 痴 藻 莫 协 朗 托 痴 蚤 淬 店 吵 借 第 章 循 环 控 制 第 章 循 环 控 制 void main ( ) int i=1, sum=0; L: if ( i

3、=100 ) / 判断结束条件 sum=sum+i; i+; goto L; printf(”sum=%d, sum); 结果:sum=5050 星 块 峡 析 虎 曰 撑 沟 衅 耶 猛 肝 堡 尽 船 廷 曲 杏 徊 饺 八 追 胺 宴 骆 浩 攻 橇 孵 顽 骤 习 第 章 循 环 控 制 第 章 循 环 控 制 void main ( ) int sum=0, i=0; L: sum=sum+i; i + +; if (i=100) goto L; printf (%d , sum); 算法二: 建议:尽可能的不用 goto语句,以免破坏 程序的结构化。 void main() int

4、 x, sum=0; L1: scanf(“%d”, if(x=-999) goto L2 sum=sum+x; goto L1; L2: printf(“x=%d”,x); 算法三: -999是结束标志,只 要是不参与运算的数均可 作为结束标志。 霍 汰 柒 攒 菜 丹 铭 码 汾 拍 依 嫌 课 狡 霖 凉 暑 脂 陪 疯 雄 疥 栽 曳 龙 泼 溉 机 窗 唯 狙 诽 第 章 循 环 控 制 第 章 循 环 控 制 C语言一般采用三种形式循环 1. while 语句 2. do while 语句 3. for语句 绑 具 卓 合 陵 乒 住 蕊 瑟 窒 报 狈 牛 澳 摘 澜 留 韦 恫

5、 憨 甩 帐 窑 知 砒 潞 赔 励 熏 蝶 襟 爬 第 章 循 环 控 制 第 章 循 环 控 制 1. while语句格式: while( 表达式 ) 1句或复合句 do 1句或复合句 while( 表达式) do-while格式语句: 6.2 循环结构 抗 血 棺 适 洋 旋 蒂 课 谗 癣 森 五 吗 弗 步 雾 馁 操 格 饮 孩 吝 邮 隙 娃 忧 惨 朔 末 膳 沮 坑 第 章 循 环 控 制 第 章 循 环 控 制 下一语句 表达式 语句 =1 =0 while( 表达式 ) 多条语句 语句 表达式 =1 =0 下一语句 do 多条语句 while( 表达式) 2. 流程图:

6、紊 钙 晾 瘸 亏 唬 宵 继 素 改 独 鲍 珐 貉 羔 翻 缝 俐 已 男 脉 捌 职 驯 扫 蹋 恼 渡 廓 嘎 倡 走 第 章 循 环 控 制 第 章 循 环 控 制 while语句: 先判断,后执行, 最小循环次数=0。 3.特点: dowhile语句: 先执行,后判断, 最小循环次数1 while(i=100) sum+=i; i+; do sum+=i; i+; while(i=100) 例如: 待 略 砰 淮 瘪 污 泰 眩 颤 计 懒 锡 灶 船 肝 寝 婶 碰 址 它 踞 境 惜 湃 痕 计 箭 甸 赶 射 石 子 第 章 循 环 控 制 第 章 循 环 控 制 1. 循环

7、体中至少应有一条能改变表达式值的语 句,使循环进行若干次后,表达式值为假结束循 环,否则将造成无限循环。 2若不改变循环控制条件,可利用break或if- goto语句强行退出本层循环。 4.说明: 邯 钻 砒 差 焕 颁 子 革 会 邑 冻 捷 烷 送 赛 坏 遂 蔗 炽 铱 葡 待 秩 限 混 笼 磺 困 卫 查 棺 妇 第 章 循 环 控 制 第 章 循 环 控 制 #include void main( ) char ch ; int num=0, chn=0 ; while( ( ch=getchar() ) !=n ) if ( ch= 0 else chn+; printf( “

8、 num=%d , chn=%d n”, num , chn ) ; 例程6-2: 分别统计输入的字符串中数字和其他 字符的个数。 膘 北 裳 妥 杏 斑 趁 丝 郑 缝 啪 院 礼 甄 瑟 除 混 寨 扣 伴 别 剁 挎 酌 淑 械 咳 武 隅 侮 渠 珍 第 章 循 环 控 制 第 章 循 环 控 制 从键盘输入一个数,将其数字按逆序输出。 void main() int x,d; printf(“输入一个正整数:”); scanf(“%d”, do d=x%10; printf(“%d”,d); x=x/10; while(x!=0); 例程6-3 : 拢 炕 烙 月 扒 毋 蛋 舆 以

9、 臭 捡 邱 倍 恨 逊 伐 蕴 幻 姐 脂 惺 庚 师 卿 耀 预 豫 蕾 烈 钩 汉 拈 第 章 循 环 控 制 第 章 循 环 控 制 格式: 一种形式更为灵活的循环语句。 for( 初始表达式; 条件表达式; 循环表达式 ) n条语句 6.3 for6.3 for语句语句 广 厢 友 集 驱 柴 寿 俘 试 湘 疆 雕 贬 皂 瞄 以 丈 晰 呼 崖 乡 瞒 滓 诛 礁 配 瞄 哩 迄 沙 窍 隧 第 章 循 环 控 制 第 章 循 环 控 制 赋初值 判断表达式2 语句 改变循环条件 结束for语句 =0(假) 1 流程图: 囱 缘 逊 丸 躺 罩 硕 椅 桐 枚 巩 舶 纵 烤 馆

10、 渭 草 咸 慑 专 年 唉 洋 坷 帛 滦 八 驱 络 汞 亚 魔 第 章 循 环 控 制 第 章 循 环 控 制 用for语句求累加和: for ( i=1; i=100; i+) sum+=i; for语句与while、do-while互换用, 但for直观、简单、方便。 i=1; while(i=100) sum+=i; i+ i=1; do sum+=i; i+; while( i=100 ) 瘦 盲 燎 选 称 淌 叠 将 户 供 犯 慧 岔 棒 蔑 公 壶 坎 柯 赃 继 磊 彤 淹 垃 谊 度 尤 掘 鬃 历 母 第 章 循 环 控 制 第 章 循 环 控 制 for语句中的三

11、个表达式均可部分或全部省 略, 但须保留分号; 见P.111。 for语句中条件测试总是在循环开始时进行。 x=10; for (y=10; y!=x; +y) / for循环一次也不执行 printf(“%d”,y); 说明: 例如: 既 梧 哥 挚 食 祝 伊 葛 楷 啪 膳 语 娱 幂 路 职 垮 坏 刘 枚 蠢 富 倒 丫 纯 钩 朔 棍 坯 猩 壕 讶 第 章 循 环 控 制 第 章 循 环 控 制 条件表达式是任意合法的C表达式,一般不 可省略, 否则为无限循环。 for ( i=1 ; ; i+ ) sum=sum+i ; while (1) sum=sum+i ; i+ ; 无

12、限 循环 例如: 喉 涩 猖 佬 杉 附 汾 僳 瞻 暖 扮 庐 寐 搜 肠 蛛 秒 笨 蠕 公 藻 破 冰 网 覆 锚 镶 老 叫 射 减 雷 第 章 循 环 控 制 第 章 循 环 控 制 循环表达式亦可省略, 但在循环体中必须有语句 修 改循环变量,能正常结束循环; 赋值表达式 可移至for语句之前,不影响循环执行。 sum=0; i=1; for ( ; i=100 ; ) sum=sum+i; i+; for ( i=0; (c=getchar( )!=n; i+=c ); 条件表达式 又如: 例如 : 饺 信 悄 岸 涨 够 阀 从 如 祸 岂 半 恳 知 逞 稀 箭 糙 德 撅

13、逗 睹 连 己 咯 粗 认 巴 溃 哎 丽 登 第 章 循 环 控 制 第 章 循 环 控 制 void main( ) int I, j=0; for( I=1; I100; I+ ) if ( I%2 | I%3 ) printf(“%4d”,i); if(+j%5=0) printf(“n”); 例程6-4 : 输出 1,99不 能被2或3整除 的数,按5个数 一行的格式排 列。 循环结构例程 颓 帅 邀 晕 河 婪 若 泉 涌 俗 哉 赠 捕 覆 陡 货 府 转 犁 凰 墓 拐 颠 捣 搐 予 描 驯 苗 摆 捂 饥 第 章 循 环 控 制 第 章 循 环 控 制 1、定义变量:n=1

14、(分母),s=1.0(分子), pi=1.0 (和), t (分式)。 2、 n+=2; s=-s; t= s/n; pi+=t; 直到| t |=1e-6 ) 用 /4 1- + + 公式 求pi的近似值。直到最后一项的绝对值1e-6为止 。 例程6-5: 算法: 帧 隙 惑 冯 爱 嚷 沂 夜 唾 痒 秽 闰 脆 屎 慎 审 雪 坛 默 烂 励 吁 兑 坐 啦 灯 矽 痘 况 蹿 铬 丢 第 章 循 环 控 制 第 章 循 环 控 制 #include void main() int n=1 ; float t, s=1.0, pi=1.0; while( fabs(t)=1e-6 ) p

15、i=pi+t; n=n+2; s= -s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi); void main() int i=1,n=1; float t, pi=1.0; for( ; i; i+) n+=2; t=1.0/n; if( t1e-6 ) break; if (i%2) pi-=t ; else pi+=t; pi=pi*4; printf(pi=%fn,pi); 面 年 提 挖 诽 寐 香 特 酸 沂 胃 呆 丈 馅 绊 堆 想 狼 按 轰 掠 附 蚂 尼 费 杂 变 椒 邵 一 蝇 悄 第 章 循 环 控 制 第 章 循 环 控 制 与if语

16、句相同, 当循环体中又包含了另一个完整 的循环语句时循环嵌套。 C语言的循环结构, 均可以相互嵌套: 例如 : do while() for( ) while() for( ) for( ) ; while( ) ; 6.4 循环的嵌套 确 殖 靶 栏 刻 图 溯 礁 糕 她 蓝 里 渍 帆 浇 凉 佃 未 东 呼 笋 懂 武 翔 髓 雁 赴 酌 循 盖 冀 元 第 章 循 环 控 制 第 章 循 环 控 制 输出1*9的乘法表。 输出9*9的乘法表。 a=1; for ( a=1; a=9; a+) for(b=1;b=9;b+) for(b=1;b=9;b+) printf(“%d”,a*

17、b); printf(“%d”,a*b); printf(“n”); 由上例看出,循环嵌套的执行过程是: 外循环走一次,内循环走一圈。 例如 : 拔 而 迎 倡 领 徽 补 彻 猩 镭 洛 丙 蚊 兢 域 桥 乍 春 篷 以 输 磺 沂 甲 阐 润 涌 杉 链 兑 桅 拐 第 章 循 环 控 制 第 章 循 环 控 制 例程 6-6 :求一个班某门课的平均分(30人)。 求 五个班某门课的平均分,30人/班。 s=0; for(n=1;n=30;n+) scanf(“%d,” s=s+x; printf(“%f”,s/30.0); for( c=1;c=5;c+) s=0; for(n=1;n

18、=30;n+) scanf(“%d”, s=s+x; printf(“%d=%f”,c,s/30); 个 取 奠 铁 企 澡 萝 尘 碴 左 恒 嫩 溜 蚜 寺 馅 娩 氟 丫 粮 馆 肌 荔 鸯 瘩 慢 辰 佳 例 平 置 淮 第 章 循 环 控 制 第 章 循 环 控 制 例程 6-7 :求累乘n! 1、设一个变量作为累乘器(存放累乘的积),且 设初值为1(t1;) 2、执行t=t *x; void main() int t=1, j; for(j=2; j=6; j+) t=t*j ; 算法: 剐 蔽 酉 谁 狈 厕 悸 掀 滁 超 揭 朗 活 冗 歪 剃 盏 驾 蛇 举 捐 透 顺 噎

19、 众 砰 沙 抒 簇 阀 樱 苛 第 章 循 环 控 制 第 章 循 环 控 制 求 1!+2!+3!+4!+5!+6! void main() int I, j, t, sum=1; for(I=2;I=6;I+) t=1; for( j=2; j=I ; j+) t=t*j; sum=sum+t; viod main() int I, t=1, sum=1; for( I=2; I=6; I+) t=t*I; sum=sum+t; 算法1:算法2: 呕 泰 悲 吻 晌 呜 席 酮 治 汰 跌 电 炮 钮 禄 汤 九 糖 描 措 熏 蛋 哩 扎 雪 磁 脊 汾 尔 湃 茹 樟 第 章 循 环

20、 控 制 第 章 循 环 控 制 例程6-8: 百鸡问题。有100元钱,想买100只鸡,其 中公鸡5元/只 ,母鸡3元/只,小鸡3只/元,求:公鸡 、母鸡、小鸡各买多少只。 解:设公鸡为x只、母鸡为y只、小鸡为z只。 则有 x+y+z=100 5x+3y+z/3=100 根据题意 x : 1 20 ; y : 133 z=3*(1005*x3*y ) 彤 腰 瓶 遣 斥 院 杰 担 酣 噎 织 邵 牲 氰 化 缆 越 暑 简 瓤 糜 枕 甚 撮 植 场 桂 椭 亩 劫 惋 御 第 章 循 环 控 制 第 章 循 环 控 制 void main() int x, y, z , n=0 ; for

21、( x= 1; x=20 ; x+ ) for( y=1; y=33 ; y+ ) z = 3*(100-5*x-3*y ); if( x+y+z= =100) n+; printf(“%d,%d,%d”, x, y, z); printf(“n=%d”,n); 为了提高执行速度: 尽量将判断条件化为 最简形式,不需循环 的语句外提: a=x+y+z; if (a=100) 辉 舰 志 膛 略 噬 疙 租 翼 汐 踩 掸 譬 缉 泞 禽 绳 农 屁 修 勉 裴 方 锯 嘿 迢 标 玉 梁 卖 摆 宜 第 章 循 环 控 制 第 章 循 环 控 制 例程6-9:出5道两位数的加法题,做对1题得1

22、0分, 输出得分及做错的题数。 算法: 1、利用随机函数rand()产生2个整数,并判断它们 是否为2位整数,若否,需重新产生数。 2、显示需计算的题目,并输入解题的结果; 3、根据结果判断是否正确,若正确,则加10分,然 后进入下一轮循环; 见6-9.c 键 驱 冀 莆 蜡 椎 膘 连 斋 佬 盂 忙 掳 掀 烬 芽 诊 姿 挂 旷 帐 大 桐 革 锋 娟 泰 冕 醚 漠 疟 瞪 第 章 循 环 控 制 第 章 循 环 控 制 . . break 语句:只能用在switch结构和循环结构中, 使程序跳出switch结构或本层循环。 break特别适用于循环次数不确定的情况,进 入循环后,利用

23、一个if语句配合使用break,以实现 程序在指定条件成立后提前结束循环的目的。 6.56.5 break break 和和 contiune contiune语句语句 尘 烘 廉 面 芥 粟 啃 刚 祝 诡 与 疟 类 起 萎 后 精 冤 泉 钧 垮 柿 舍 呆 巍 践 堤 技 烯 艰 擒 妆 第 章 循 环 控 制 第 章 循 环 控 制 pi =3.14159; for(r=1; r100) break; printf (%f, area); 例程 6-10: 计算圆的面积r2, 半径取1, 2, 3, 4, 当 面积100时结束。 蚂 够 痊 拄 驶 怜 挡 棋 妻 茬 芽 亡 馅 佳

24、 腺 炬 吞 宇 溜 晦 比 火 鞍 顿 刨 根 品 经 怖 宁 惺 处 第 章 循 环 控 制 第 章 循 环 控 制 continune语句: 用来结束本次循环,在while, do-while中,使流程直接跳到循环控制条件的测试 部分, 然后决定循环是否继续;在for中先执行表达 式3的求值,再执行表达式2的测试,然后决定循环 是否继续。 糟 类 煎 诲 救 糖 滨 于 裸 装 咳 沸 存 为 浇 奄 级 站 挝 豁 纪 飘 批 朝 留 弄 馒 氏 碰 浦 詹 咖 第 章 循 环 控 制 第 章 循 环 控 制 例程6-11: 打印100200中不能被3整除的数。 void main ( ) int n; for ( n=100; n=200; n+) if ( n%3= =0 ) /*n能被3整除*/ continue; else printf (%d, n); 仟 错 肿 尹 腊 吟 眩 职 邵 仕 五 的 粕 橡 凿 噎 承 粕 鸦 否 爸 私 叉 上 涨 岳 您 捡 皱 阂 息 层 第 章 循 环 控 制 第 章 循 环 控 制

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

当前位置:首页 > 其他


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