第5章循环结构程序设计 教学目的: 掌握for、break与continue语句,循环结构程序设 计; 了解whilei语句、do-while语句等。 2024/10/28 1
2024/10/28 1 第5章 循环结构程序设计 教学目的: 掌握for、break与continue语句,循环结构程序设 计; 了解while语句、do-while语句等
教学内容: 5.1循环语句概述 5.2*for语句和while语句 5.3直到型循环do-while语句 5.4*break语句与continue语句 5.5*循环结构程序设计 本章要点 本章作业与上机实践 2024/10/28 2
2024/10/28 2 教学内容: 5.1 循环语句概述 5.2* for语句和while语句 5.3 直到型循环do-while语句 5.4* break语句与continue语句 5.5* 循环结构程序设计 本章要点 本章作业与上机实践
5.1 循环语句概述 C语言提供了3条循环语句: (1)for语句 从功能上说, while可完全被for语 (2)当型循环语句while 句代替。 (3)直到型循环语句do-while 2024/10/28 3
2024/10/28 3 5.1 循环语句概述 C语言提供了3条循环语句: (1)for语句 (2)当型循环语句while (3)直到型循环语句do-while 从功能上说, while可完全被for语 句代替
说明:关于goto语句 结构化程序设计方法,主张限制使用goto语句。 因为滥用g0to语句,将会导致程序结构无规律、可读 性差。 [返回] 2024/10/28 4
2024/10/28 4 说明:关于goto语句 结构化程序设计方法,主张限制使用goto语句。 因为滥用goto语句,将会导致程序结构无规律、可读 性差。 [返回]
5.2*for语句和while语句 在3条循环语句中,o语句最为灵活,不仅可用 于循环次数己经确定的情况,也可用于循环次数虽不 确定、但给出了循环继续条件的情况。 T案例5.21求1~100的累计和。 2024/10/28 5
2024/10/28 5 5.2* for语句和while语句 在3条循环语句中,for语句最为灵活,不仅可用 于循环次数已经确定的情况,也可用于循环次数虽不 确定、但给出了循环继续条件的情况。 [案例5.2] 求1~100的累计和
#include“stdio.h” #include“conio.h” void main() {int i,sum-0; for(i=1;i<=100;it+) sum +=i; /*累加*) printf("sum=%d n",sum) getchO); 2024/10/28 6
2024/10/28 6 #include “stdio.h” #include “conio.h” void main( ) { int i, sum=0; for( i = 1; i <= 100; i++) { sum += i;} /*累加*/ printf("sum=%d\n",sum); getch(); }
1.for语句的一般格式 for([循环变量赋初值];[循环条件];[循环变量增值]) {循环体;} 表达式可以部分 或全部缺省,但其间 的分号不能省略。 仅有1条语句, 可缺省大括号 2024/10/28 7
2024/10/28 7 1.for语句的一般格式 for([循环变量赋初值];[循环条件];[循环变量增值]) { 循环体;} 表达式可以部分 或全部缺省,但其间 的分号不能省略。 仅有1条语句, 可缺省大括号
2.for语句的执行流程 计算循环变量赋初值表达式 循环条件表达式=0? N 循环体语句组 计算循环变量增值表达式 2024/10/28 8
2024/10/28 8 计算循环变量赋初值表达式 计算循环变量增值表达式 循环体语句组 循环条件表达式=0? Y N 2.for语句的执行流程
(1)求解“循环变量赋初值”表达式。 (2)求解“循环条件”表达式: 非0,执行(3) 循环条件表达式= 0,转至(4) (3)执行循环体语句组,并求解“循环变量增值” 表达式,然后转向(2)。 (4)执行for语句的下一条语句。 2024/10/28 9
2024/10/28 9 (1)求解“循环变量赋初值”表达式。 (2)求解“循环条件”表达式: 循环条件表达式= (3)执行循环体语句组,并求解“循环变量增值” 表达式,然后转向(2)。 (4)执行for语句的下一条语句。 非0,执行(3) 0,转至(4)
[案例5.3]求n的阶乘nl(nl=1*2*.*n)。 #include“stdio.h” #include“conio.h void main( int i,n; long fact=1; /*初始化累乘器fact为1*/ printf("Input n:") scanf%d”,&n); for(i=1;i<=n;i++)/*实现累乘*/ fact *=i;} printf("%d =%ld n",n,fact); getchO); 2024/10/28 10
2024/10/28 10 [案例5.3] 求n的阶乘n!(n!=1*2*.*n)。 #include “stdio.h” #include “conio.h” void main() { int i, n; long fact=1; /*初始化累乘器fact为1*/ printf(“Input n: ”); scanf(“%d”, &n); for(i=1; i<=n; i++) /*实现累乘*/ { fact *= i; } printf("%d ! = %ld\n", n, fact); getch(); }