1 / 19

第 3 章 迭代计算

第 3 章 迭代计算. --- 循环结构. 主要内容. while 循环控制 do-while 循环控制 for 循环控制 循环结构中的跳转语句 循环的嵌套 循环结构程序设计举例. 3 .1 while 循环控制. 语句一般格式 while ( 表达式 ) 语句 ;. 一般为 关系 表达式或 逻辑 表达式,也可以是 C 语言其他类型的合法表达式 用来控制循环体是否执行. 称为 内嵌语句 ,可以是基本语句、控制语句,也可以是复合语句 是循环重复执行的部分. 功能:. 流程图. N-S 结构图. 表达式非0?. N.

Download Presentation

第 3 章 迭代计算

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第3章 迭代计算 ---循环结构

  2. 主要内容 • while循环控制 • do-while循环控制 • for循环控制 • 循环结构中的跳转语句 • 循环的嵌套 • 循环结构程序设计举例

  3. 3.1 while循环控制 • 语句一般格式 while (表达式)语句 ; • 一般为关系表达式或逻辑表达式,也可以是C语言其他类型的合法表达式 • 用来控制循环体是否执行 • 称为内嵌语句,可以是基本语句、控制语句,也可以是复合语句 • 是循环重复执行的部分

  4. 功能: 流程图 N-S结构图 表达式非0? N Y 语句 当表达式为真 语句 • 计算表达式的值,为非0(逻辑真)时,重复执行内嵌语句,每执行一次,就判断一次表达式的值,直到表达式的值为0 时结束循环,转去执行while后面的语句。 循环控制条件 循环体

  5. 【例】编写程序,求100个自然数的和 即:s=1+2+3+ … +100 思路:寻找加数与求和的规律 加数i——从1变到100,每循环一次,使i增1,直到i的值超过100。i的初值设为1。 求和——设变量sum 存放和,循环求sum=sum+i,直至i超过100。

  6. 算法和程序: i=1,sum=0 当i <= 100 sum=sum+i i++ 输出sum #include <stdio.h> void main( ) { int i,sum; while (i<=100) sum=sum+i; i++; printf("sum=%d\n",sum); } i=1; sum=0; { } i: 循环控制变量 sum: 累加器 程序输出结果: sum=5050

  7. 注意: • 如果while的 (表达式) 值为0,则循环体一次也不执行(例如当i的初值=101) 。 • 在循环体中必须有使循环趋向结束的操作,否则循环将无限进行(死循环)。 • 在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。 思考程序段的输出? …… while (i<=100) { i++; sum=sum+i; }

  8. 注意(续): • 为了保证循环正常运行,应该特别注意: • 循环控制条件的描述 • 控制条件的初始状态(初始值) • 循环体内部对控制条件的影响

  9. 3.2 do-while语句 • 语句一般格式 do 语句 while (表达式); • 功能: • 先执行内嵌语句(循环体),之后计算表达式的值,不为0(逻辑真)时,再执行循环体并判断条件,直到表达式的值为 0 结束循环,转去执行while下面的语句。

  10. do-while循环的算法 流程图 循环体 N Y 表达式非0? { int i=1,sum=0; do { sum=sum+i; i++; } while (i<=100); } 用do-while语句 求100个自然数的和

  11. 说明: • while和do-while都能实现循环控制,while结构程序通常都可以转换成do-while结构 • 区别: • do- while 语句先执行循环体再判断条件,循环体至少执行一次; • while 语句先判断条件再执行循环体,循环体有可能一次也不执行 • do—while循环体中一定要有能使表达式值趋于0的操作(如i++),否则会出现死循环。

  12. 比较下面2个程序的输出结果 #include <stdio.h> void main() { int a=0; while (a<0) a++; printf("%d",a); } #include <stdio.h> void main() { int a=0; do { a++; } while (a<0) ; printf("%d",a); }

  13. do-while语句的简单应用 定义m、n、r m<n T F m和n交换 r=m%n m=n n=r 当r != 0时 输出最大公约数m 【例】用辗转相除法求m和n的最大公约数

  14. 算法和程序: #include <stdio.h> void main( ) { int m,n,r; scanf("%d, %d",&m,&n); if (m<n) { r=m; m=n; n=r; } do { r=m%n; m=n; n=r; }while(r!=0); printf("%d\n",m); }

  15. 3.3 for语句 • 语句一般格式 for (表达式1;表达式2;表达式3) 语句; 循环控制条件 循环体 循环初始条件 • 功能: • 计算表达式1的值,再判断表达式2,如果其值为非0(逻辑真),则执行内嵌语句(循环体),并计算表达式3;之后再去判断表达式2,一直到其值为0时结束循环,执行后续语句。

  16. for语句的算法 流程图 N-S结构图 计算表达式1 for (表达式1;表达式2;表达式3) 语句 表达式2 为真? N Y 语句 计算表达式3 例如: { int i,sum; sum=0; for ( i=1; i<=100; i++) sum=sum+i; printf("sum=%d\n",sum); } 可部分或全部省略,但“;”不可省略

  17. 省略for语句的表达式 ⑴ 表达式1、2、3全省略,即: for ( ; ; ) 就等同于:while (1),会无限循环(死循环) ⑵ 省略表达式1和表达式3,即: • for(;表达式2;) • 就等同于:while(表达式2 ) ⑶ 省略表达式2,即: • for(表达式1; ;表达式3) • 就等同于:表达式1; while(1){…表达式3;} 注意:在省略某个表达式时,应在适当位置进行循环控制的必要操作,以保证循环的正确执行

  18. 例如: ⑴ i=1; for ( ; i<=100; i++) sum+=i; ⑵ for (i=1; ; i++) { … if(i>100)… …} ⑶ for (i=1; i<=100; ) {…i++; … } ⑷ i=1; for ( ; ; ) { … if(i>100) … i++; … }

  19. 说明: • 所有用 while语句实现的循环都可以用for语句实现。 • for(表达式1;表达式2 ;表达式3) 语句; 等价于: 表达式1; while (表达式2) {语句; 表达式3; }

More Related