循环结构程序设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 1. for 语句的一般格式 • for(表达式1;表达式2;表达式3) •{ • 循环体语句; •}
下一页 返回
5. 3 for 语句
• 【说明】 • (1) 表达式1 通常为赋值表达式, 用于确定循环结构中的循环控制变量
的初始值, 实现循环控制变量的初始化, 只执行一次, 有时可用逗号表 达式。 • (2) 表达式2 通常为关系表达式或逻辑表达式, 用于判断循环是否继续 进行的条件,决定是否退出循环, 一般执行多次。 • (3) 表达式3 通常为表达式语句, 用于描述循环控制变量的变化, 多数 情况下为自增/自减表达式(复合加/ 减语句), 实现对循环控制变量的修 改, 一般执行多次。 • (4) 循环体语句为当循环条件满足时应该执行的语句, 可以是简单语句 或复合语句。 • 若只有一条语句, 则可以省略{}。
• 3. do…while 语句的执行过程 • 首先执行循环体中的循环体语句, 计算表达式的值。如果表达式的值
为真(非0), 就继续执行循环体中的循环体语句, 直到表达式的值为假 (0), 循环结束。 • 4. do…while 语句和while 语句的区别 • do…while 语句总是要先执行一遍循环体, 再做表达式的判断, 因此循 环体中的语句肯定要执行一次。如果不知道重复的次数, 而且第1 次 必须执行时, 常采用do…while 语句。而while 语句是先判断表达式, 后执行循环体, 循环体语句可能一次都没被执行过。
上一页 下一页 返回
5. 1 while 语句
• 【例5 - 1】用while 循环求1 +2 +3 + … +99 +100 的累加和。 • 分析:可以引入两个整型变量i、sum, 先设一个变量sum作为累加器,
并将其清零, 然后利用while 循环语句实现100 次循环, 每循环一次, 向累加器加一个加数, 加数由循环控制变量i 产生, 变量i 依次取1、2、 3、…、100, 不断将i 加入sum, 因此循环控制变量i 的初值为1, 终值 为100。 • 程序的流程图如图5. 2 所示。
• for(;i <=100;i ++ )
• sum = sum + i;
上一页 下一页 返回
5. 3 for 语句
• (2) 省略表达式2。语句形式: • for(表达式1; ;表达式3) • 省略表达式2, 表示不用判断循环条件是否成立, 循环条件总是满足为
真(永真循环),循环体中如果没有break 语句则是死循环。例如: • int i,sum =0; • for(i=1; ;i ++ ) • { sum = sum + i; • if(i >100)break; /∗用break 语句强制退出for 语句∗/ •}
辑表达式; 表达式必须加圆括号“ ”。其结果值为逻辑真(1) 或逻辑 假(0), 用以描述控制循环的条件, 规定循环语句被执行终止的条件。 循环体语句是while 语句要被重复执行的部分。循环体可以是一条语 句, 也可以是多条语句构成的复合语句。 • 2. while 语句的流程图及N - S 图 • while 语句的流程图及N - S 图如图5. 1 所示。
“真” 或“假”, 用以描述循环进行下去的条件。循环体语句可以是 简单语句和复合语句, 如果只有一条语句,则可以不加大括号{ }。 • 2. do…while 语句的流程图及N - S 图 • do…while 语句的流程图及N - S 图如图5. 4 所示。
下一页 返回
5. 2 do…while 语句
上一页 下一页 返回
5. 3 for 语句
• 4. for 语句的特殊形式 • for 语句的一般形式中, 有三个表达式, 其中的任何表达式都可以省略,
但分号不可以省略, 下面以上例为例对for 语句的几种省略格式进一 步的说明。 • (1) 省略表达式1, 但其后面的分号不能省略。语句形式: • for(;表达式2;表达式3) • 省略表达式1, 一般在for 语句之前已经执行了表达式1。例如: • int i =1,sum =0;
上一页 下一页 返回
5. 3 for 语句
• (3) 省略表达式3。语句形式: • for(表达式1;表达式2;) • 省略表达式3, 这种形式可以在循环体内改变循环控制变量的值, 保证
循环能正常进行。例如: • int i,sum =0; • for(i =1;i <=100; ) /∗ i <=100 后的分号不能省略∗/ • { sum = sum + i; • i ++ ; /∗表达式3 移到了循环体中执行,用于改变循环控制变量的值∗/ •}
上一页 下一页 返回
5. 3 for 语句
• (6) 表达式1 和表达式3 既可以是简单表达式, 也可以是包含一个以上 的简单表达式语句, 中间用逗号分隔。例如:
• for(i =1,sum =0;i <=100;i ++ ,sum += i); • (7) 当循环体语句为空语句时, for 语句的结构为 • for(表达式1;表达式2;表达式3); • 例如: • for(i =10;i >=1;i…); • 表示当循环条件满足时执行空操作。一般用于延伸处理。
第5章 循环结构程序设计
• 5. 1 • 5. 2 • 5. 3 • 5. 4 • 5. 5 • 5. 6 • 5. 7
while 语句 do…while 语句 for 语句 循环的嵌套 break 语句和 continue 语句 几种循环语句的比较 循环结构程序设计举例
5. 1 while 语句
上一页 下一页 返回
5. 3 for 语句
• (5) 三个表达式都省略。语句形式: • for( ; ; ) • 三个表达式都省略, 但是“;” 不能省略, 表示不设初值, 不判断条件,
即认为表达式2 的值是非0 值, 循环控制变量不改变, 程序无限循环。 一般可以在循环体中的适当位置添加break 语句来终止循环。例如: • int i =1,sum =0; • for(; ;) • { sum = sum + i; • if (i <=100) • break; • i ++ ; •}
上一页 下一页 返回
5. 2 do…while 语句
• 【例5 - 3】从键盘输入一个整数, 将这个数的每一位逆序输出。 • 分析: • 要将输入的这个数逆序输出, 则必须从低位上的数字开始一位一位输
出, 利用整除10 取余的方法得到该整数的低位, 再利用整除10 得到的 商继续得到其他有效位上的数, 当整除10 得到的结果小于等于0 时, 循环结束。 • 程序的流程图如图5. 5 所示。
上一页 下一页 返回
5. 1 while 语句
上一页
返回
5. 2 do…while 语句
• do…while 语句是一种称为“直到型” 的循环结构, 用于首先执行一 次循环语句, 然后测试循环条件, 当条件为“真” 时继续循环的处理 过程。
• 1. do…while 语句一般格式 • do •{ • 循环体语句; • }while(表达式); • 其中, 表达式可以是关系表达式、逻辑表达式或其他表达式, 其结果为
上一页 下一页 返回
5. 2 do…while 语句
上一页
返回
5. 3 for 语句
• 在C 语言中, for 语句是最灵活、方便、使用得最广泛的一种循环控制 语句, 其功能是将某段程序代码反复执行若干次。for 语句既能用于 循环次数确定的情况, 还能用于只给出循环结束条件的情况, for 语句 可以完全代替while 语句。
• 前面章节介绍了顺序结构和选择结构, 但这两Biblioteka Baidu程序结构还不能满足 实际的应用需要,因为在解决许多实际问题对, 经常需要规律性地重复 执行某一种(或一组) 操作。在程序设计中, 可用循环结构来解决这类 问题。循环结构是程序设计中用得较多的一种控制结构, 它的特点是 在给定的条件为真时,计算机反复执行一个(或一组) 操作, 直到条件称 为假时结束。给定的条件为循环条件, 反复执行的一组语句称为循环 体, 循环结构由循环体和循环条件两部分组成。
上一页 下一页 返回
5. 3 for 语句
• (4) 省略表达式1 和表达式3。语句形式: • for( ;表达式2; ) • 省略表达式1 和表达式3, 只有表达式2, 即只有循环条件, 表达式1 在
for 语句前已执行, 表达式3 在循环体中执行。例如: • int i =1,sum =0; /∗表达式1 在for 语句前执行∗/ • for(;i <=100;) /∗ i <=100 前后的分号不能省略∗/ • { sum = sum + i; • i ++ ; /∗表达式3 移到了循环体中执行,用于改变循环控制变量的值∗/ •}
上一页 下一页 返回
5. 1 while 语句
• 3. while 语句的执行过程 • 在执行while 语句时, 先计算表达式的值, 若表达式的值为真(任何非0
的数都表示为真), 则执行循环体语句; 然后重新判断表达式的值, 若表 达式的值为真, 则继续执行循环体; 如此重复, 直到表达式的值为假(即 循环控制条件不成立) 时, 结束循环, 程序继续执行循环体语句之后的 下一条语句。 • while 语句循环前, 必须给循环体内的某些变量赋初值, 否则会造成不 确定值参加运算。 • 循环前, 必须给循环控制变量赋初值。在循环体内必须有改变循环控 制变量的语句, 使其值趋向于0, 否则会造成死循环。
• C 语言提供了实现重复操作的3 种循环语句, 分别是while 语句、 do…while 语句和for语句。熟悉、掌握和灵活运用它们是进行程序 设计的基本要求。
下一页 返回
5. 1 while 语句
• while 语句是一种称为“当型” 的循环结构。 • 1. while 语句的一般格式 • while(表达式) •{ • 循环体语句; •} • 其中, while 语句中的表达式是任何表达式, 常用的是关系表达式和逻
上一页 下一页 返回
5. 3 for 语句
• 2. for 语句的流程图及N - S 图 • for 语句的流程图及N - S 图如图5. 6 所示。 • 3. for 语句的执行过程 • for 语句的执行步骤如下: • (1) 计算表达式1 的值, 为循环控制变量赋初值。 • (2) 计算表达式2 的值, 如果表达式2 的值为真(非0), 则执行循环体语
• 【例5 - 4】用for 语句改写程序求1 +2 +3 + … +99 +100 的累加和。
上一页 下一页 返回
5. 3 for 语句
• 程序说明: • (1) 程序中, 必须先给变量sum 赋初值0, 既可以在for 语句之前为它赋
值, 也可以在for 语句的表达式1 中为它赋值。这里采用的是前一种方 法。 • (2) 循环中常见的问题是循环控制条件使用了不正确的表达式, 本例题 中的循环条件为i <=100, 如果写成i <100, 则循环次数只执行99 次。 最好的解决方法是将问题的最终结果值包含在循环条件中。
句; 否则,退出循环, 执行for 循环后的语句。 • (3) 如果执行了循环体语句, 则在每一次循环体执行结束时, 都要计算
表达式3 的值,调整循环控制变量。然后返回(2) 步重新计算表达式2 的值, 以此重复操作, 直到表达式2 的值为假(0) 时, 退出循环。
上一页 下一页 返回
5. 3 for 语句
上一页 下一页 返回
5. 3 for 语句
• (8) for 语句的功能可以用while 语句来实现。例如:
上一页 下一页 返回
5. 1 while 语句
上一页 下一页 返回
5. 1 while 语句
• 【例5 - 2】分别统计输入的字符串中数字和其他字符的个数。 • 分析: • 从键盘输入字符串是以回车键结束的, 所以程序循环的终止条件是当
获得的字符是回车符时程序结束, 否则就与'0' 到'9'的字符比较。如果 有相等的值, 则数字个数加1; 否则, 其他字符加1。 • 程序的N - S 图如图5. 3 所示。
下一页 返回
5. 3 for 语句
• 【说明】 • (1) 表达式1 通常为赋值表达式, 用于确定循环结构中的循环控制变量
的初始值, 实现循环控制变量的初始化, 只执行一次, 有时可用逗号表 达式。 • (2) 表达式2 通常为关系表达式或逻辑表达式, 用于判断循环是否继续 进行的条件,决定是否退出循环, 一般执行多次。 • (3) 表达式3 通常为表达式语句, 用于描述循环控制变量的变化, 多数 情况下为自增/自减表达式(复合加/ 减语句), 实现对循环控制变量的修 改, 一般执行多次。 • (4) 循环体语句为当循环条件满足时应该执行的语句, 可以是简单语句 或复合语句。 • 若只有一条语句, 则可以省略{}。
• 3. do…while 语句的执行过程 • 首先执行循环体中的循环体语句, 计算表达式的值。如果表达式的值
为真(非0), 就继续执行循环体中的循环体语句, 直到表达式的值为假 (0), 循环结束。 • 4. do…while 语句和while 语句的区别 • do…while 语句总是要先执行一遍循环体, 再做表达式的判断, 因此循 环体中的语句肯定要执行一次。如果不知道重复的次数, 而且第1 次 必须执行时, 常采用do…while 语句。而while 语句是先判断表达式, 后执行循环体, 循环体语句可能一次都没被执行过。
上一页 下一页 返回
5. 1 while 语句
• 【例5 - 1】用while 循环求1 +2 +3 + … +99 +100 的累加和。 • 分析:可以引入两个整型变量i、sum, 先设一个变量sum作为累加器,
并将其清零, 然后利用while 循环语句实现100 次循环, 每循环一次, 向累加器加一个加数, 加数由循环控制变量i 产生, 变量i 依次取1、2、 3、…、100, 不断将i 加入sum, 因此循环控制变量i 的初值为1, 终值 为100。 • 程序的流程图如图5. 2 所示。
• for(;i <=100;i ++ )
• sum = sum + i;
上一页 下一页 返回
5. 3 for 语句
• (2) 省略表达式2。语句形式: • for(表达式1; ;表达式3) • 省略表达式2, 表示不用判断循环条件是否成立, 循环条件总是满足为
真(永真循环),循环体中如果没有break 语句则是死循环。例如: • int i,sum =0; • for(i=1; ;i ++ ) • { sum = sum + i; • if(i >100)break; /∗用break 语句强制退出for 语句∗/ •}
辑表达式; 表达式必须加圆括号“ ”。其结果值为逻辑真(1) 或逻辑 假(0), 用以描述控制循环的条件, 规定循环语句被执行终止的条件。 循环体语句是while 语句要被重复执行的部分。循环体可以是一条语 句, 也可以是多条语句构成的复合语句。 • 2. while 语句的流程图及N - S 图 • while 语句的流程图及N - S 图如图5. 1 所示。
“真” 或“假”, 用以描述循环进行下去的条件。循环体语句可以是 简单语句和复合语句, 如果只有一条语句,则可以不加大括号{ }。 • 2. do…while 语句的流程图及N - S 图 • do…while 语句的流程图及N - S 图如图5. 4 所示。
下一页 返回
5. 2 do…while 语句
上一页 下一页 返回
5. 3 for 语句
• 4. for 语句的特殊形式 • for 语句的一般形式中, 有三个表达式, 其中的任何表达式都可以省略,
但分号不可以省略, 下面以上例为例对for 语句的几种省略格式进一 步的说明。 • (1) 省略表达式1, 但其后面的分号不能省略。语句形式: • for(;表达式2;表达式3) • 省略表达式1, 一般在for 语句之前已经执行了表达式1。例如: • int i =1,sum =0;
上一页 下一页 返回
5. 3 for 语句
• (3) 省略表达式3。语句形式: • for(表达式1;表达式2;) • 省略表达式3, 这种形式可以在循环体内改变循环控制变量的值, 保证
循环能正常进行。例如: • int i,sum =0; • for(i =1;i <=100; ) /∗ i <=100 后的分号不能省略∗/ • { sum = sum + i; • i ++ ; /∗表达式3 移到了循环体中执行,用于改变循环控制变量的值∗/ •}
上一页 下一页 返回
5. 3 for 语句
• (6) 表达式1 和表达式3 既可以是简单表达式, 也可以是包含一个以上 的简单表达式语句, 中间用逗号分隔。例如:
• for(i =1,sum =0;i <=100;i ++ ,sum += i); • (7) 当循环体语句为空语句时, for 语句的结构为 • for(表达式1;表达式2;表达式3); • 例如: • for(i =10;i >=1;i…); • 表示当循环条件满足时执行空操作。一般用于延伸处理。
第5章 循环结构程序设计
• 5. 1 • 5. 2 • 5. 3 • 5. 4 • 5. 5 • 5. 6 • 5. 7
while 语句 do…while 语句 for 语句 循环的嵌套 break 语句和 continue 语句 几种循环语句的比较 循环结构程序设计举例
5. 1 while 语句
上一页 下一页 返回
5. 3 for 语句
• (5) 三个表达式都省略。语句形式: • for( ; ; ) • 三个表达式都省略, 但是“;” 不能省略, 表示不设初值, 不判断条件,
即认为表达式2 的值是非0 值, 循环控制变量不改变, 程序无限循环。 一般可以在循环体中的适当位置添加break 语句来终止循环。例如: • int i =1,sum =0; • for(; ;) • { sum = sum + i; • if (i <=100) • break; • i ++ ; •}
上一页 下一页 返回
5. 2 do…while 语句
• 【例5 - 3】从键盘输入一个整数, 将这个数的每一位逆序输出。 • 分析: • 要将输入的这个数逆序输出, 则必须从低位上的数字开始一位一位输
出, 利用整除10 取余的方法得到该整数的低位, 再利用整除10 得到的 商继续得到其他有效位上的数, 当整除10 得到的结果小于等于0 时, 循环结束。 • 程序的流程图如图5. 5 所示。
上一页 下一页 返回
5. 1 while 语句
上一页
返回
5. 2 do…while 语句
• do…while 语句是一种称为“直到型” 的循环结构, 用于首先执行一 次循环语句, 然后测试循环条件, 当条件为“真” 时继续循环的处理 过程。
• 1. do…while 语句一般格式 • do •{ • 循环体语句; • }while(表达式); • 其中, 表达式可以是关系表达式、逻辑表达式或其他表达式, 其结果为
上一页 下一页 返回
5. 2 do…while 语句
上一页
返回
5. 3 for 语句
• 在C 语言中, for 语句是最灵活、方便、使用得最广泛的一种循环控制 语句, 其功能是将某段程序代码反复执行若干次。for 语句既能用于 循环次数确定的情况, 还能用于只给出循环结束条件的情况, for 语句 可以完全代替while 语句。
• 前面章节介绍了顺序结构和选择结构, 但这两Biblioteka Baidu程序结构还不能满足 实际的应用需要,因为在解决许多实际问题对, 经常需要规律性地重复 执行某一种(或一组) 操作。在程序设计中, 可用循环结构来解决这类 问题。循环结构是程序设计中用得较多的一种控制结构, 它的特点是 在给定的条件为真时,计算机反复执行一个(或一组) 操作, 直到条件称 为假时结束。给定的条件为循环条件, 反复执行的一组语句称为循环 体, 循环结构由循环体和循环条件两部分组成。
上一页 下一页 返回
5. 3 for 语句
• (4) 省略表达式1 和表达式3。语句形式: • for( ;表达式2; ) • 省略表达式1 和表达式3, 只有表达式2, 即只有循环条件, 表达式1 在
for 语句前已执行, 表达式3 在循环体中执行。例如: • int i =1,sum =0; /∗表达式1 在for 语句前执行∗/ • for(;i <=100;) /∗ i <=100 前后的分号不能省略∗/ • { sum = sum + i; • i ++ ; /∗表达式3 移到了循环体中执行,用于改变循环控制变量的值∗/ •}
上一页 下一页 返回
5. 1 while 语句
• 3. while 语句的执行过程 • 在执行while 语句时, 先计算表达式的值, 若表达式的值为真(任何非0
的数都表示为真), 则执行循环体语句; 然后重新判断表达式的值, 若表 达式的值为真, 则继续执行循环体; 如此重复, 直到表达式的值为假(即 循环控制条件不成立) 时, 结束循环, 程序继续执行循环体语句之后的 下一条语句。 • while 语句循环前, 必须给循环体内的某些变量赋初值, 否则会造成不 确定值参加运算。 • 循环前, 必须给循环控制变量赋初值。在循环体内必须有改变循环控 制变量的语句, 使其值趋向于0, 否则会造成死循环。
• C 语言提供了实现重复操作的3 种循环语句, 分别是while 语句、 do…while 语句和for语句。熟悉、掌握和灵活运用它们是进行程序 设计的基本要求。
下一页 返回
5. 1 while 语句
• while 语句是一种称为“当型” 的循环结构。 • 1. while 语句的一般格式 • while(表达式) •{ • 循环体语句; •} • 其中, while 语句中的表达式是任何表达式, 常用的是关系表达式和逻
上一页 下一页 返回
5. 3 for 语句
• 2. for 语句的流程图及N - S 图 • for 语句的流程图及N - S 图如图5. 6 所示。 • 3. for 语句的执行过程 • for 语句的执行步骤如下: • (1) 计算表达式1 的值, 为循环控制变量赋初值。 • (2) 计算表达式2 的值, 如果表达式2 的值为真(非0), 则执行循环体语
• 【例5 - 4】用for 语句改写程序求1 +2 +3 + … +99 +100 的累加和。
上一页 下一页 返回
5. 3 for 语句
• 程序说明: • (1) 程序中, 必须先给变量sum 赋初值0, 既可以在for 语句之前为它赋
值, 也可以在for 语句的表达式1 中为它赋值。这里采用的是前一种方 法。 • (2) 循环中常见的问题是循环控制条件使用了不正确的表达式, 本例题 中的循环条件为i <=100, 如果写成i <100, 则循环次数只执行99 次。 最好的解决方法是将问题的最终结果值包含在循环条件中。
句; 否则,退出循环, 执行for 循环后的语句。 • (3) 如果执行了循环体语句, 则在每一次循环体执行结束时, 都要计算
表达式3 的值,调整循环控制变量。然后返回(2) 步重新计算表达式2 的值, 以此重复操作, 直到表达式2 的值为假(0) 时, 退出循环。
上一页 下一页 返回
5. 3 for 语句
上一页 下一页 返回
5. 3 for 语句
• (8) for 语句的功能可以用while 语句来实现。例如:
上一页 下一页 返回
5. 1 while 语句
上一页 下一页 返回
5. 1 while 语句
• 【例5 - 2】分别统计输入的字符串中数字和其他字符的个数。 • 分析: • 从键盘输入字符串是以回车键结束的, 所以程序循环的终止条件是当
获得的字符是回车符时程序结束, 否则就与'0' 到'9'的字符比较。如果 有相等的值, 则数字个数加1; 否则, 其他字符加1。 • 程序的N - S 图如图5. 3 所示。