一、循环控制语句控制一个代码块多次执行,直到某个条件满足。重复做某件事的现象称为循环。重复执行的程序段称为循环体。有两种形式:当型循环和直到型循环。如图1。
图1:
while型循环和for循环属于当型循环;do_while型循环属于直到型循环。
1、当型循环:首先判断循环控制表达式是否为“真”,若为“真”,则反复执行循环体。若为“假”则结束循环。
2、直到型循环:首先执行循环体,然后才判断循环控制表达式,若为“假”,则反复执行循环体,直到循环控制表达式为“真”时结束循环。
二、while型循环的语法形式为:while (表达式) {循环体语句}
表达式是控制循环的条件,它可以是任何类型的表达式。
特点是:先判断,后执行。若表达式一开始就为“假”,则循环一次也不执行。
1、while语句的循环体中必须出现使循环趋于结束的语句,否则会出现“死循环”。这类使循环趋于结束的变量,称为“循环控制变量”或“循环变量”。(在控制台,要结束无限循环,按Ctrl+c。)
2、注意循环体中语句顺序也很重要。
三、do_while循环的语法形式:do {循环体语句} while (表达式)
表达式是任意表达式,是控制循环的条件。
特点:先执行,后判断,因此,循环体至少执行一次。循环体会重复执行,直到表达式为“假”才退出循环。
四、for循环语法形式:
for (表达式1;表达式2;表达式3)
{循环体语句;}
功能:首先计算表达式1的值,然后检测表达式2的值,若其值为“真”,则执行循环体语句,执行完毕后,再计算表达式3。然后再测试表达式2的值是否为“真”,若为“真”,继续执行循环体语句,……若为“假”,则终止循环。
说明:表达式1通常为循环变量赋初值的表达式;表达式2是控制循环的表达式;表达式3通常是心迹循环变量值的表达式。
五、break语句和continue语句:
1、break语句用于终止循环的执行;continue语句用来结束本次循环,而不是结束整个循环,并开始下一次循环。
2、continue语句只能出现在循环语句的循环体中;而break语句既可以出现在循环语句中,也可以出现在switch语句中。
3、若执行while或do_while语句中的continue语句,则跳过循环体中continue语句后面的语句,直接转去判别下次循环控制条件;若continue语句出现在for语句中,则执行continue语句就是跳过循环体中continue语句后面的语句,转而执行for语句的表达式3。
六、几种循环的比较:
1、三种循环可以相互替代。
2、在实际应用中,for语句多用于循环次数明确的问题,而无法确定循环次数的问题采用while语句或do_while语句比较自然。do_while语句更适合于第一次循环肯定执行的场合。
3、do_while语句和while语句只有一个表达式,用于控制循环是否进行。for语句有三个表达式,但可以部分省略或全部省略。
4、for语句的循环体还可以放入表达式3,如:for(i=2;i<10;printf("%d",i),i++);
七、若一个循环结构的循环体中包含了另一个循环语句,则构成了循环的嵌套,称为多重循环。
执行多重循环时,对外层循环变量的每一个值,内层循环的循环变量从初值变化到终值。对外层循环的每一次循环,内层循环要执行完整的循环语句。
八、循环语句中可能出现的缺陷:
1、一定要确保该循环是可以退出的,不要出现死循环。
当为一个变量赋的值超过了该变量所能允许的最大值范围时,就会发生溢出错误。(在大部分的编程语言中,当溢出发生时,程序执行都将会被终止。然而,在Java语言中,溢出不会导致程序终止。对浮点型和双精度类型的变量来说,它们可以表式无穷大的数值。对于整型数据类型的变量来说,如果给变量赋的值超过了数据类型允许的最大值,该数值将以负数的形式表现出来。)
2、避免在循环中使用实数类型的变量。如:
float count=0.0f;
while (count!=1.0f) {count=count+0.3333333f;}
这是一个死循环。
3、编写程序时要避免“off-by-one”错误,即循环体的循环次数比我们预计的要多一次或少一次。另:像count!=10这类表达式,用停止记数控制循环条件是很危险的,要尽量避免。
4、要点:确定循环体内包含一个语句使循环体最终结束。确定循环体的正确的循环次数。如果想执行循环体N次,那么就让初始化计数器counter为0,使用测试条件counter<N;或者让初始化计数器counter为1,使用测试条件counter<=N。
图1:
while型循环和for循环属于当型循环;do_while型循环属于直到型循环。
1、当型循环:首先判断循环控制表达式是否为“真”,若为“真”,则反复执行循环体。若为“假”则结束循环。
2、直到型循环:首先执行循环体,然后才判断循环控制表达式,若为“假”,则反复执行循环体,直到循环控制表达式为“真”时结束循环。
二、while型循环的语法形式为:while (表达式) {循环体语句}
表达式是控制循环的条件,它可以是任何类型的表达式。
特点是:先判断,后执行。若表达式一开始就为“假”,则循环一次也不执行。
1、while语句的循环体中必须出现使循环趋于结束的语句,否则会出现“死循环”。这类使循环趋于结束的变量,称为“循环控制变量”或“循环变量”。(在控制台,要结束无限循环,按Ctrl+c。)
2、注意循环体中语句顺序也很重要。
三、do_while循环的语法形式:do {循环体语句} while (表达式)
表达式是任意表达式,是控制循环的条件。
特点:先执行,后判断,因此,循环体至少执行一次。循环体会重复执行,直到表达式为“假”才退出循环。
四、for循环语法形式:
for (表达式1;表达式2;表达式3)
{循环体语句;}
功能:首先计算表达式1的值,然后检测表达式2的值,若其值为“真”,则执行循环体语句,执行完毕后,再计算表达式3。然后再测试表达式2的值是否为“真”,若为“真”,继续执行循环体语句,……若为“假”,则终止循环。
说明:表达式1通常为循环变量赋初值的表达式;表达式2是控制循环的表达式;表达式3通常是心迹循环变量值的表达式。
五、break语句和continue语句:
1、break语句用于终止循环的执行;continue语句用来结束本次循环,而不是结束整个循环,并开始下一次循环。
2、continue语句只能出现在循环语句的循环体中;而break语句既可以出现在循环语句中,也可以出现在switch语句中。
3、若执行while或do_while语句中的continue语句,则跳过循环体中continue语句后面的语句,直接转去判别下次循环控制条件;若continue语句出现在for语句中,则执行continue语句就是跳过循环体中continue语句后面的语句,转而执行for语句的表达式3。
六、几种循环的比较:
1、三种循环可以相互替代。
2、在实际应用中,for语句多用于循环次数明确的问题,而无法确定循环次数的问题采用while语句或do_while语句比较自然。do_while语句更适合于第一次循环肯定执行的场合。
3、do_while语句和while语句只有一个表达式,用于控制循环是否进行。for语句有三个表达式,但可以部分省略或全部省略。
4、for语句的循环体还可以放入表达式3,如:for(i=2;i<10;printf("%d",i),i++);
七、若一个循环结构的循环体中包含了另一个循环语句,则构成了循环的嵌套,称为多重循环。
执行多重循环时,对外层循环变量的每一个值,内层循环的循环变量从初值变化到终值。对外层循环的每一次循环,内层循环要执行完整的循环语句。
八、循环语句中可能出现的缺陷:
1、一定要确保该循环是可以退出的,不要出现死循环。
当为一个变量赋的值超过了该变量所能允许的最大值范围时,就会发生溢出错误。(在大部分的编程语言中,当溢出发生时,程序执行都将会被终止。然而,在Java语言中,溢出不会导致程序终止。对浮点型和双精度类型的变量来说,它们可以表式无穷大的数值。对于整型数据类型的变量来说,如果给变量赋的值超过了数据类型允许的最大值,该数值将以负数的形式表现出来。)
2、避免在循环中使用实数类型的变量。如:
float count=0.0f;
while (count!=1.0f) {count=count+0.3333333f;}
这是一个死循环。
3、编写程序时要避免“off-by-one”错误,即循环体的循环次数比我们预计的要多一次或少一次。另:像count!=10这类表达式,用停止记数控制循环条件是很危险的,要尽量避免。
4、要点:确定循环体内包含一个语句使循环体最终结束。确定循环体的正确的循环次数。如果想执行循环体N次,那么就让初始化计数器counter为0,使用测试条件counter<N;或者让初始化计数器counter为1,使用测试条件counter<=N。
发表评论
-
SQL:目录
2013-05-04 22:42 505第一章:关系型数据库管理系统概述 http://131 ... -
SQL:第六课
2013-04-26 17:37 622一、Sybase.PowerDesigner.15.0 二、 ... -
SQL:第五课
2013-04-26 17:34 558第六章: 第七章: 第八章: -
SQL:第四课
2013-04-20 18:56 828第五章: 练习1: USE ... -
SQL:第三课
2013-04-20 11:27 640第四章:DML语句 练习: CREATE DATABA ... -
SQL:第二课
2013-04-17 22:11 711第二章: 第三章: 第二章作业:简易大学教学管理数据库 ... -
SQL:第一课
2013-04-16 22:09 733... -
C语言:目录
2013-04-15 23:11 589第一章:软件开发概述 http://131947319 ... -
C语言:第九课
2013-04-15 22:54 611一、C语言的数据类型包括基本类型(整形,字符型,浮点型),指针 ... -
C语言:第八课
2013-04-15 22:36 700一、在C语言程序设计时 ... -
C语言:第七课
2013-04-15 21:47 544一、数组:按一定顺序排列,具有某种相同性质的同类型变量的集合。 ... -
C语言:第五课
2013-04-02 22:41 832一、所有程序在执行时,程序中的语句按其先后顺序执行。这种按照语 ... -
C语言:关于数据类型的自动转换
2013-04-02 19:11 1307在C语言中,当使用多个 ... -
C语言:第四课
2013-04-01 21:28 762一、浮点类型的除法 ... -
C语言:关于溢出
2013-03-31 14:19 1702对于变量的值超出其定 ... -
C语言:第三课
2013-03-30 21:03 8571、计算机在通电状态下 ... -
C语言:第二课
2013-03-28 22:05 9961、C程序是以函数为基 ... -
C语言:第一课
2013-03-27 21:52 7381、软件是为了完成某些特定功能而编制的一到多个程序文件的集合。 ...
相关推荐
c语言第十六节课c语言第十六节课
深圳大学 信息工程学院 C语言学习教程 第六章 循环结构的学习 很详细,很好用
[TakeLionOS汇编与C语言自学笔记-第六课] 版权所有 2021年 江志剑 按照《21天学通C语言》(第七版),有如下一个例子P17。 将整个程序的代码,包括行号显示出来: //1、files:hellolistit.c hellolistitno.s ...
1975年,随着UNIX第六版的推出和OOP技术的出现,C语言的突出优点引起普遍关注。 1989年ANSI C标准被采用,定义为C89。 1995年,出现了C的修订版,出现了初步的C++,C89成了C++的子集。 1999年又推出了C99,目前C语言...
[TakeLionOS汇编与C语言自学笔记-第五课] 版权所有 2021年 江志剑 按照《21天学通C语言》(第七版),有如下二个例子。 一个例子输出一段话,另一个例子计算年份: //1、files:hello1.c hello1no.s hello1.exe #...
第6章 玩转数组7 第7章 吃透指针 10 第8章 聚合数据类型 第9章 字符串的应用 第10章 时间的应用 第11章 文件的输入输出 第12章 线程与并发 第13章 编译、链接和库 第14章 GUI 编程实践 第15章 综合案例:...
1、介绍static对全局变量与局部变量起到的作用; 2、介绍C语言中数组的概念、定义和调用方法;
6 第六讲 循环控制 7 第七讲 循环控制 8 第八讲 数 组 9 第九讲 数 组 10 第十讲 函 数 11 第十一讲 函 数 12 第十二讲 函 数 13 第十三讲 函数、编译预处理 14 第十四讲 指 针 15 第十五讲...
[TakeLionOS汇编与C语言自学笔记-第三课] 版权所有 2021年 江志剑 按照《21天学通C语言》(第七版),有如下二个修改版的例子。其中一个改为输出黑桃符号,其中一个改为输出红心符号,是练习题6修改一下的: //1、...
这是一套C研发工程师级别的教程,亦或是C语言初学者进阶性的教程.其阐述了许多C语言中本质的问题,更涵盖 C语言工程师在面试、学习、开发过程中...6.第六课_转.flv 7.第七课_转.flv 8.第八课_转.flv 9.第九课_转.flv
[TakeLionOS汇编与C语言自学笔记-第四课] 版权所有 2021年 江志剑 按照《21天学通C语言》(第七版),有如下二个例子。其中一个改为输出黑桃符号,是练习题3修改一下的: //1、files:helloxy.c helloxy.i ...
本文给大家分享了C语言初学者入门讲座 第六讲 分支结构(1)。
王敬华C语言程序设计教程2,3,4,5,6,7,8,9,11,12章课本源代码。不全呦。
第6课,用定时器中断闪灯,定时器中断的学习 第7课,精确定时1秒钟闪灯 第8课,定时器中断跑马灯 第9课,自动变速的跑马灯试验 第10课,4个按键4级变速的跑马灯试验,多任务的工作方式 第11课,一个按键控制的10级...
按照《21天学通C语言》(第七版),有如下二个例子。其中一个改为输出红心符号,是练习题6修改一下的: //1、files:hello.c hello.i hello.s hellono.s hello.exe #include int main(void) { printf("Hello, ...
1、通过作业的讲解嵌套循环与函数开发的关系; 2、通过作业学习一些代码优化的方法;
1、使用冒泡排序来进行结构体数组项目的开发; 2、介绍选择排序的原理并在结构体数组项目中进行开发;
《高级语言程序设计》是由东北大学计算中心基础教研室承担,面向全校所有非电本科专业...6 第六章 数组 7 第七章 函数 8 第八章 指针 9 第九章 结构体、共用体与枚举类型 10 第十章 预编译和宏定义 11 第十一章 文件
传智播客C语言基础课-伊成第四期课程ppt,01