




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章循环结构程序设计 本章内容1 循环结构概述2 goto语句及用goto语句构成的循环3 While语句的使用4 DoWhile语句的使用5 For语句的使用6 循环的嵌套7 Break语句和Continue语句的使用8 程序举例 概述 循环结构是程序中一种很重要的结构 其特点是 在给定条件成立时 反复执行某一程序段 直到条件不成立为止 给定的条件称为循环条件 反复执行的程序段称为循环体 语言提供多种循环语句 组成各种不同形式的循环结构 1 用goto语句和if语句构成循环 2 用while语句 3 用do while语句 4 用for语句 循环结构类型 无条件转移语句 goto语句一般格式 goto语句标号 语句标号是按标识符规定书写的符号 放在某一语句行的前面 标号后加冒号 语句标号起标识语句的作用 与goto语句配合使用 goto语句及用goto语句构成的循环 语言不限制程序中使用标号的次数 但各标号不得重名 goto语句的语义是改变程序流向 转去执行语句标号所标识的语句 如 label1 i gotolabel1 用goto语句与if语句实现循环 形式1 loop1 语句 if 表达式 gotoloop1 形式2 loop1 if 表达式 gotoloop2 语句 gotoloop1 loop2 注意 在结构化程序设计中一般不主张使用goto语句 以免造成程序流程的混乱 使理解和调试程序都产生困难 例1 编程序求 s 1 2 3 100 main ints 0 n 1 loop s s n n if n 100 gotoloop printf S d s main ints 0 n 1 loop1 if n 100 gotoloop2 s s n n gotoloop1 loop2 printf S d s include stdio h voidmain intn 0 printf inputastring n loop if getchar n n gotoloop printf d n 例2 统计从键盘输入一行字符的个数 while语句 执行过程是 计算表达式的值 当值为真 非0 时 执行循环体语句 如右上图 while语句的一般形式为 while 表达式 语句 其中表达式是循环条件 语句为循环体 若是多个语句则必须用 组成复合语句 例1 编程序求 s 1 2 3 100 voidmain ints 0 n 1 while n 100 s s n n printf S d s do while语句的一般形式为 do语句 while 表达式 其中 语句是循环体 表达式是循环条件 执行过程是 先执行循环体语句一次 再判别表达式的值 若为真 非0 则继续循环 否则终止循环 Do while语句 例1 编程序求 s 1 2 3 100 voidmain ints 0 n 1 do s s n n while n 100 printf s d s voidmain ints 0 n 1 while n 100 s s n n printf S d s 1 在if语句 while语句中 表达式后面都不能加分号 而在do while语句的表达式后面则必须加分号 2 do while语句也可以组成多重循环 而且也可以和while语句相互嵌套 3 当循环体由多个语句组成时 也必须用 括起来组成一个复合语句 4 如果循环至少要执行一次 while和do while语句可以相互替换 使用while和do while语句应注意以下几点 for语句 for语句是 语言所提供的功能更强 使用更广泛的一种循环语句 使用一般形式为 for 表达式1 表达式2 表达3 语句 表达式1通常用来给循环变量赋初值 一般是赋值表达式 也允许在for语句外给循环变量赋初值 此时可以省略该表达式 表达式2通常是循环条件 一般为关系或逻辑表达式 表达式3通常可用来修改循环变量的值 一般是赋值语句 1 首先计算表达式1的值 2 再计算表达式2的值 若值为真 非0 则执行循环体一次 否则跳出循环 3 然后再计算表达式3的值 转回第2步重复执行 for语句的执行过程 在整个for循环过程中 表达式1只计算一次 表达式2和表达式3则可能计算多次 循环体可能多次执行 也可能一次都不执行 main intn s 0 for n 1 n 100 n s s n printf s d n s 本例for语句中的表达式3为n 实际上也是一种赋值语句 相当于n n 1 以改变循环变量的值 例 用for语句计算s 1 2 3 99 100 1 for语句中的各表达式都可省略 但分号间隔符不能少 如 for 表达式2 表达式3 省去了表达式1 for 表达式1 表达式3 省去了表达式2 for 表达式1 表达式2 省去了表达式3 for 省去了全部表达式 2 在循环变量已赋初值时 可省去表达式1 3 省去表达式2或表达式3则相当于while语句 并且造成无限循环 这时应在循环体内设法结束循环 在使用for语句中要注意以下几点 main intn 1 s 0 for n 100 n s s n printf s d n s main intn 1 s 0 for n 100 s s n n printf s d n s 省略表达式1和3 省略表达式1 main intn 1 s 0 for s s n n printf s d n s 省略全部表达式 程序为死循环 main intn 1 s 0 for s s n n if n 100 break printf s d n s for 等效于while 1 4 for语句中的三个表达式都可以是逗号表达式 即每个表达式都可由多个表达式组成 main intn s for n 1 s 0 n 100 n s s n printf s d n s main intn s for n 1 s 0 n 100 s n n printf s d n s 这里为什么要加 include stdio h voidmain intn 0 printf inputastring n for getchar n n printf d n 例 统计从键盘输入一行字符的个数 getchar 是使用输入缓冲区的 按了回车之后才会真正输入 可以用getche 函数 这个函数不使用缓冲区 直接输入直接处理 需要的头文件是 conio h 本例中 省去了for语句的表达式1 表达式3也不是用来修改循环变量 而是用作输入字符的计数 这样就把本应在循环体中完成的计数放在表达式中完成了 因此循环体是空语句 注意的是 空语句后的分号不可少 如缺少此分号 则把后面的printf语句当成循环体来执行 反过来说 如循环体不为空语句时 决不能在表达式的括号后加分号 这样又会认为循环体是空语句而不能执行循环体 说明 循环的嵌套 for语句也可与while do while语句相互嵌套 构成多重循环 以下形式都合法的嵌套 4 while for 1 while while do do while while 3 for for 7 while do while 5 for while 6 do for while 8 for do while 例 打印如下形式的九九乘法表 voidmain intx y for x 1 x 9 x for y 1 y 9 y printf d d 2d x y x y printf n break语句和continue语句 break语句break语句只能用在switch语句或循环语句中 其作用是跳出switch语句或跳出本层循环 转去执行后面的程序 break语句的一般形式为 break break语句用于循环体中 一般与if语句联合使用 include stdio h voidmain chara b printf inputastring n b getchar while a getchar n if a b printf samecharacter n break b a 功能是 检查输入的一行中有无相邻两字符相同 分析下面程序的功能 main intn for n 7 n 100 n if n 7 0 continue printf d n main intn for n 7 n 100 n if n 7 0 printf d n continue语句只能用在循环体中 其一般格式是 continue 其语义是 结束本次循环 即不再执行循环体中continue语句之后的语句 转入下一次循环条件的判断与执行 注意 本语句只结束本层本次的循环 并不跳出循环 continue语句 程序举例 例6 6利用公式 4 1 1 3 1 5 1 7 求 直到最后一项小于1E 6 include math h voidmain intm i k printf Enterm n scanf d 输入m 当i k k sqrt m m i 0 i 2 Y N i i 1 当i k Y N 打印Yes break 打印No 程序流程图 算法 判断一个整数m是否是素数 include math h voidmain intn 0 i k m for m 101 mk n printf d m if n 10 0 printf n 例6 9打印输出100 200之间的素数 算法 字符的加密 解密 加密的思想是 将每个字母C加 或减 一序数k 即用它后的第k个字母代替 变换式公式 c c k例如序数k为5 这时 A F a f B G 当加序数后的字母超过 Z 或 z 则c c k 26例如 Youaregood Dtzfwjltti 解密为加密的逆过程将每个字母C减 或加 一序数k 即c c k 例如序数k为5 这时 Z U z u Y T 当加序数后的字母小于 A 或 a 则c c k 26 include stdio h main charc while c getchar n if c a 加密程序如下 include stdio h main charc while c getchar n if c a 解密程序如下 求最大公约数的算法思想 辗转相除法 1 对于已知两数m n 使得m n 2 M除以n得余数r 3 若r 0 则n为求得的最大公约数 算法结束 否
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保协议环境保护责任与措施
- 黔西南初二数学试卷
- 吉林辽源市东丰县卫生系统事业单位招聘考试真题2024
- 2024年济宁邹城市事业单位招聘真题
- 2024年安徽医科大学附属口腔医院招聘笔试真题
- 南通开学考试数学试卷
- 南通五年级期末数学试卷
- 平面向量高一数学试卷
- 期末1年级试卷数学试卷
- 黔东南专用数学试卷
- 项目的运营规划
- 电子烟设计技术讲解课件
- 成人急性淋巴白血病
- 输电线路缺陷课件
- 给公司老总培训财务知识
- 混凝土现浇楼板协议书(2篇)
- 初中数学教学经验分享
- 剑桥KET口语题库(含满分答案)
- DB13-T 5997-2024 公路桥梁混凝土结构裂缝处治施工技术规范
- 专题11初高衔接之计算补充练习新高一数学暑假衔接与新课重难点预习(人教A版2019)
- 高职高考英语词汇表
评论
0/150
提交评论