资源预览内容
第1页 / 共168页
第2页 / 共168页
第3页 / 共168页
第4页 / 共168页
第5页 / 共168页
第6页 / 共168页
第7页 / 共168页
第8页 / 共168页
第9页 / 共168页
第10页 / 共168页
亲,该文档总共168页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C语言程序设计教程 第2版 中 第6章 循环结构程序设计 本章要点 while语句 do while语句 for语句 break语句和continue语句在循环体中的作用 循环结构的嵌套 本章难点 循环结构的嵌套 能够熟练地使用循环语句进行程序设计 main int i 1 long int sum 1 while i 10 sum sum i i printf 10 ld n sum sum 1 2 3 4 5 6 7 8 9 10 sum 请看下面的程序 循环结构的特点是 程序的流程是在给定条件时 反复执行某个 程序段 语言中可以用以下语句来实现循环 用goto语句和 if 语句构成循环 用while语句 用do while语句 用for语句 6 1 while语句 一般形式 while 表达式 语句 执行过程 先计算表达式的值 若表达式的值为真 非0 时执行循环体中的语句 然后重复上面步骤 若 表达式的值为假 0 则 结束循环 6 1 1 while结构的形式 例 计算10 并输出结果的程序用 while语句写出 main int i 1 long int sum 1 while i 10 sum sum i i printf 10 ld n sum main int i 1 long int sum 1 loop if i 10 sum sum i i goto loop printf 10 ld n sum 循环结构的术语 1 循环条件 是循环结构中的测试表达式 如 while i 10 2 循环体 是在每个循环周期均要执行一次的语 句 语句可以是任何语句 简单语句 复合语句 空语句均可以 如 上例while语句中用花括号括起来的复合语句 3 循环控制变量 是在循环条件中控制条件是真 是假的变量 如 上例while语句中使用的变量 i 循环条件中的表达式一般是逻辑表达式 和关系表达式 也可以是算数表达式 非0为 真 0为假 一般表达式中应含有循环控制 变量 while 3 和while 0 虽然从程序设计的 角度上说是不合理的 但是合法的 while 3 语句 表示无限循环 while 0 语句 表示不进入循环体 要写出一个正确的循环结构 对控制变 量要做三方面工作 控制变量赋初值 把 控制变量写入正确的循环条件 控制变量 的更新 调整 6 1 2 while循环的含义 3 循环体包括一个以上语句 则必须用 long int sum 1 while i 10 sum sum i i 4 应该注意条件的选择以避免死循环 int a 5 n 0 while a 5 printf d n 5 允许while语句的循环体也是while语句 从而形 成双重循环 6 2 do while语句 一般形式 do 语句 while 表达式 分号不能少 执行过程 执行循环体中的语句 计算表达式 测试循环 条件 为真 非0 则重复 上面步骤 为假 0 结束 循 环 6 2 1 结构形式 例 将上面计算10 并输出结果的程序用 do while语句写出 main int i 1 long int sum 1 while i 10 sum sum i i printf 10 ld n sum main int i 1 long int sum 1 do sum sum i i while i 10 printf 10 ld n sum 我们将while和do while循环做一下比较 main int i long sum 1 scanf d while i 10 sum sum i i printf ld n sum main int i long sum 1 scanf d do sum sum i i while i 10 printf ld n sum 输入 9 输出 90 输入 11 输出 1 输入 9 输出 90 输入 11 输出 11 比较上面两个程序 虽然结构是相同的 在 输入值为有效值时结果相同 但当输入无效值时 输出结果是不同的 为什么 而do while语句不管开始的时候测试循环条 件是真是假 循环体都要执行一次 因为循环 体是先于测试条件执行的 while语句进入循环体之前 测试循环条件 表达式必须为真 否则while循环不进入循环体 即循环体可能一次也不执行 while与do while的主要区别 6 2 2 do while循环的含义 do while型循环是先执行后判断的循环 在任何 情况至少执行循环体一次 do while型循环应注意以下几点 1 在if 语句 while语句中 表达式都不能加分号 而在do while语句的表达式后面则必须加分号 2 do while语句可以组成多重循环 而且也可以和 while语句相互嵌套 3 在do和while之间的循环体由多个语句组成时 也 必须加 括起来组成一个复合语句 4 do while和while语句相互替换时 要注意修改循 环控制条件 6 3 for型循环环 一般形式 for 表达式1 表达式2 表达式3 语句 表达式1 一组初始化表达式 表达式2 循环控制条件 表达式3 在执行完循环体语句之后执行的表达式 我们前面已经说明 要正确表达循环结构应 注意三方面的问题 控制变量的初始化 循环的 条件和控制变量的更新 for语句在书写形式上正好体现了这种紧密 的逻辑关系 不能省略不能省略 6 3 1 for循环表现形式 执行过程 求出表达式1的值 若表达式1是逗号表达式 则依次计算 对 表达式2 进行判断 为假退出循环 否则转 执行循环体中语句 执行 表达式3 若 表达式3是逗号表达式 则依次计算 转向 例 将上面计算10 的程序用 for语句写出 main int i long sum for i 1 sum 1 i 10 i sum sum i printf 10 ld n sum main int i long sum for i 1 sum 1 i 10 sum sum i i printf 10 ld n sum 空语句 说明 表达式1 用于进入循环体之前给某些变量赋初值 若省略 可在for语句前给变量赋初值 main int i 1 long sum 1 for i 10 i sum sum i printf 10 ld n sum for 循环的三个表达式起着不同的作用 根据需要可以省略 表达式2 决定循环的条件 若省略 则为无限 循环 如 for i 0 i 语句 for 语句 无限循环 死循环 表达式3 用于循环一次后对某些变量进行修改 若省略 可在循环体内对变量进行修改 main int i long sum 1 for i 1 i 10 sum sum i i printf 10 ld n sum for 语句最为灵活 它完全可以代替的while语句 如 i 1 while i 10 sum sum i i 等效于 for i 1 i 10 i sum sum i for语句功能很强 其中表达式1和表达式3可以是 逗号表达式 但为增强程序的可读性 一般不要把 与循环无关的东西放到for语句中 如 sum 1 for i 1 i 10 i sum sum i for 循环变量赋初值 循环条件 循环变量增值 语句 for语句最简单 常用的形式如下 例 从键盘上输入若干学生的成绩 当输入负数 时结束输入 统计并输出最高成绩和最低成绩 空语句 include main float x xmax xmin scanf f xmax x xmin x for x 0 if x xmax xmax x if x xmin xmin x scanf f printf nxmax f nxmin f n xmax xmin 6 3 2 三种循环语句的总结 三种循环语句共同的特点是 当循环控制条件非 零时 执行循环体语句 否则终止循环 语句可以是任何语句 简单语句 复合语句 空 语句均可以 while和for语句先判断循环控制条件 do while语 句后判断循环控制条件 所以 while和for语句的循 环体可能一次也不执行 而do while语句的循环体至 少也要执行一次 在循环体内或循环条件中必须有使循环趋于结束 的语句 否则会出现死循环等异常情况 三种循环可以处理同一问题 一般情况可以互 相代替 但在实际应用中 我们要根据具体情况 来选用不同的循环语句 选用的一般原则如下 如果循环次数在执行循环体之前就已确定 一般 用for语句 如果循环次数是根据循环体的执行情况 确定的 一般用while语句或者do while语句 循环次数确定例 int i long sum 1 for i 1 i 10 i sum sum i 循环次数不确定例 char c do c getchar printf c c while c q c Q 当循环体至少执行一次时 用do while语句 反之 如果循环体可能一次也不执行时 用 while语句 循环体至少执行一次 只有当用户键入q或Q 才结束循环 char c do c getchar printf c c while c q c Q 循环体可能一次不执行 只有不是q或Q的字符才 被打印 char c c getchar while c q c Q printf c c c getchar 6 4 循环的嵌套 例 在屏幕上打印一个8行7列的星号矩阵 include main int i for i 0 i 7 i printf 打印第1行星号 printf n for i 0 i 7 i printf 打印第2行星号 printf n for i 0 i 7 i printf 打印第8行星号 什么叫循环嵌套 一个循环的循环体中套有另一个循环 叫循环嵌套 这种嵌套过程可以一直重复 下去 一个循环外面包围一层循环称为二重循环 一个循环外面包围二层循环称为三重循环 一个循环外面包围多层循环称为多重循环 1 while 2 while 3 for while do while while 4 do 5 do 6 for for do for while while while while do while for可以互相嵌套自由组合 例 将上例 打印8行7列的星号矩形 用二 重循环实现 include main int i k for i 0 i 8 i for k 0 k 7 k printf printf n 6 5 其他控制语句 6 5 1 break 语句 一般形式 break 功能 结束当前的一层循环 解释 break 语句一般用在循环体的条件语 句中 其作用是当某个条件成立时用 break语句退出循环 不再继续执行 其余的几次循环 例 打印半径为1 10的圆的面积 如果面积超过 100 则不再打印 include define PI 3 14159 main int r float area for r 1 r100 0 break printf area f n area printf now r d n r 注意 在嵌套循环中使用break语句 它只影 响包含它的最内层循环 即程序仅跳出包围 该break的那层循环 例 编写程序 输出三角乘法表 main int i j for i 1 i 9 i for j 1 ji break printf 3d i j printf n 运行结果 1 2 4 3 6 9 4 8 12 16 5 10 15 20 25 6 12 18 24 30 36 7 14 21 28 35 42 49 8 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81 一般形式 continue 功能 结束循环体 进入下一个循环周期 解释 一旦执行了continue语句 程序就跳 过循环体中位于该语句后的所有语句 提前结束本次循环周期并开始下一个
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号