第5章循环结构
第5章 循环结构
令计算机的特点是运算速度快、能够自动执行编写的 程序,使其适合做重复性的工作。在解决许多实际 问题时常要用到循环控制。例如:求学生的总成绩; 统计车站某月的人流量;计算给定某范围内符合条 件的数的个数等等,也就是说循环结构使用的非常 普遍。因此熟练掌握循环结构是程序设计的基本要 求 令循环结构的特点是:在给定条件(称为循环条件) 成立时,反复执行某程序段(称为循环体),直到 条件不成立时终止。 下面重点介绍C语言的三种循环结构: 1 while循环结构 2do- while循环结构 3.for循环结构
❖ 计算机的特点是运算速度快、能够自动执行编写的 程序,使其适合做重复性的工作。在解决许多实际 问题时常要用到循环控制。例如:求学生的总成绩; 统计车站某月的人流量;计算给定某范围内符合条 件的数的个数等等,也就是说循环结构使用的非常 普遍。因此熟练掌握循环结构是程序设计的基本要 求。 ❖ 循环结构的特点是:在给定条件(称为循环条件) 成立时,反复执行某程序段(称为循环体),直到 条件不成立时终止。 ❖ 下面重点介绍C语言的三种循环结构: ❖ 1.while循环结构 ❖ 2.do-while循环结构 ❖ 3.for循环结构
51goto语句构成循环 令在介绍C语言的三种循环结构之前,先介绍一种采用非结构 化程序设计的方式来构成的循环,即使用无条件转移语句 goto语句。它的一般格式为 goto语句标号; 冷说明:goto语句把程序的控制流转移到在goto语句中指定的 标号之后的第一条语句。标号是跟有“:”的标识符,它必 须与引用它的goto语句在同一个函数中,但可以不在同一个 循环层中。标号的命名规则与变量名相同,即由字母、数字 和下划线组成,其第一个字符必须为字母或下划线,不能用 整数来作标号。例如: goto Isx;是正确的,而goto12;是错 误的
5.1 goto语句构成循环 ❖ 在介绍C语言的三种循环结构之前,先介绍一种采用非结构 化程序设计的方式来构成的循环,即使用无条件转移语句 goto语句。它的一般格式为: ❖ goto 语句标号; ❖ 说明:goto语句把程序的控制流转移到在goto语句中指定的 标号之后的第一条语句。标号是跟有“:”的标识符,它必 须与引用它的goto语句在同一个函数中,但可以不在同一个 循环层中。标号的命名规则与变量名相同,即由字母、数字 和下划线组成,其第一个字符必须为字母或下划线,不能用 整数来作标号。例如:goto lsx;是正确的,而goto 12;是错 误的
【例5-1】编程求10个学生的总成绩 【编程思路】 令分析:该题显然是在重复做累加求和的工 作,关键是怎样控制循环的停止。可以借助 前面学过的语句和goto语句一起来构成循环
❖ 【例5-1】编程求10个学生的总成绩。 ❖ 【编程思路】 ❖ 分析:该题显然是在重复做累加求和的工 作,关键是怎样控制循环的停止。可以借助 前面学过的if语句和goto语句一起来构成循环
. maino .s int count=1, total=0, grade, oo star: if(count<=10) printf( input the grade scanf(%d, &grade) total=total+grade count++ goto star printf( %din", total)
❖ main() ❖ { ❖ int count=1,total=0,grade; ❖ star:if(count<=10) ❖ { ❖ printf("input the grade:"); ❖ scanf("%d",&grade); ❖ total=total+grade; ❖ count++; ❖ goto star; ❖ } ❖ printf("%d\n",total); ❖ }
在编写程序时我们强调使用结构化程序设计, 般不提倡使用非结构化goto语句(除非它 能够极大地提高效率),因为如果滥用了这 种语句将使程序难以调试、维护和修改
❖ 在编写程序时我们强调使用结构化程序设计, 一般不提倡使用非结构化goto语句(除非它 能够极大地提高效率),因为如果滥用了这 种语句将使程序难以调试、维护和修改
52 while循环结构 它的一般格式为 冷Whie(表达式) 语句; 小说明:其中表达式是循环条件,语包为循环体。在 “真(非0)”,则执行循环体中的语句,否则趴 热箕,盜甄箕潘匆后对态达进行立计 出循环。注意其特点:先判断表达式,后执行语句。 其流程图如图5.1
5.2 while循环结构 ❖ 它的一般格式为: ❖ while( 表达式 ) ❖ 语句; ❖ 说明:其中表达式是循环条件,语句为循环体。在 执行while语句时,先对表达式进行计算,若其值为 “真(非0)”,则执行循环体中的语句,否则跳 过循环体执行该结构后面的语句。在进入循环体后, 每执行完一次循环体语句后再对表达式进行一次计 算和判断,当发现其值为“假(0)”时,立即退 出循环。注意其特点:先判断表达式,后执行语句。 其流程图如图5.1
开始 表达式真(非#0)「语 假〔0 束
令对【例5-1】采用 while循环结构改写为: 【源程序】 令man(0 . int count=1, total=0, grade, while(count<=10) printf( input the grade scanf(%d", &grade) total=total+grade count++ printf( %din", total)
❖ 对【例5-1】采用while循环结构改写为: ❖ 【源程序】 ❖ main() ❖ { ❖ int count=1,total=0,grade; ❖ while(count<=10) ❖ { ❖ printf("input the grade:"); ❖ scanf("%d",&grade); ❖ total=total+grade; ❖ count++; ❖ } ❖ printf("%d\n",total); ❖ }
冷注意: 1Whe语句中的表达式一般是关系表达式或 逻辑表达式,只要表达式的值为“真(非0)” 即可继续循环。 2循环体如果包括一个以上的语句,则必须 用“}括起来组成复合语句。 3在循环体内必须要有使循环结束的语句, 如果无此语句则循环便成了“无限循环
❖ 注意: ❖ 1.while语句中的表达式一般是关系表达式或 逻辑表达式,只要表达式的值为“真(非0)” 即可继续循环。 ❖ 2.循环体如果包括一个以上的语句,则必须 用“{}”括起来组成复合语句。 ❖ 3.在循环体内必须要有使循环结束的语句, 如果无此语句则循环便成了“无限循环