第04章循环结构程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【例4.3】 【例4.4】 【例4.5】
第04章循环结构程序设计
在使用while语句时,应注意以下几点: (1)while语句中的表达式一般是关系表达式或逻辑 表达式,只要表达式的值为真(非0)即可继续循环; (2)循环体如包括有一个以上的语句,则必须用{ } 括起来,组成复合语句; (3)应注意循环条件的选择以避免死循环; (4)允许while语句的循环体又是while语句,从而 形成双重循环。
【例4.2】Leabharlann 使用格式一和格式二的循环不同点在于,第一种 格式的循环,循环体内的语句可以不执行,而第二 种格式的循环,循环体内的语句至少要执行一次。 这里的循环体指语句标号和goto 语句标号及中间所 有语句组成的一个集合。其中语句标号是按标识符 规定书写的符号(它的命名规则与变量名的命名规 则相同,这在前面已经介绍过,语句标号放在某一 语句行的前面,标号后加冒号(:)。语句标号起 标识语句的作用,语句标号必须与goto语句同处于 一个函数中。C语言不限制程序中使用标号的次数, 但各标号不得重名。
第04章循环结构程序设计
在结构化程序设计中一般不主张使用 goto语句控制循环结构, 以免造成程序 流程的混乱,使理解和调试程序都产生 困难。一个使用goto语句较为合理的用 法是跳出单循环或从多层的嵌套中跳出 循环体。
第04章循环结构程序设计
4.3 while语句
While语句可以实现当型循环结构。其一般形式如下: while(表达式)语句 { …… }
第4章 循环结构程序设计
▪ 4.1 循环概述
▪ 4.2 用goto语句和if语句构成循环
▪ 4.3 while语句
▪ 4.4 do-while语句
▪ 4.5 for语句
▪ 4.6 循环的嵌套
▪ 4.7 几种循环的比较
▪ 4.8 break和continue语句
▪ 4.9
第04章循环结构程序设计
4.1 循环概述
进入循环中,由于x等于y,循环没有被执行。 由于条件表达式为假,因此不论循环体还是循环 控制变量的一目加都没有被执行,所以y仍然是 赋给它的值10,且在屏幕上显示值为10。
第04章循环结构程序设计
for语句最主要的特点是:特别适合已知循环次数的循 环语句,下面介绍一下for语句中循环次数的计算方法。 根据for循环的循环变量的变化情况。循环次数的计算 可以用公式进行计算: n=(int)((终值-初值+步长)/步长) 其中,初值指循环变量的初始值,终值指循环变量满足 条件的最终值,步长指循环变量每循环一次所变化的量。 例如:循环语句for(n=1;n<=100;n++)(设n为整 形变量)控制循环体反复执行的次数为 n=(int)((100-1+1)/1)=100
第04章循环结构程序设计
4.5.4 无循环体for循环
正像C语言句法所定义的那样,一条语句可以 是空语句。这就是说,for循环体(或其他循环形 式)都可以是空语句。这个事实可用来改善某些 算法的效率以及产生时间延迟循环。
第04章循环结构程序设计
在编程过程中经常需要给一个输入流保留空间。 例如,一个数据库可能要求查询一条信息,如 “show all balance less than 40000”。那么,数 据库需要查询每个字符,这些字符是无空格地逐 个被放置在这条信息中的。即,数据库输入处理 程序识别“show”而不是“show”为一条命令。
for循环还有另一种极有用的变体。在前面所提 到的for语句的三个部分可以是C语言中任何有效 的表达式。实际上,不必注意这些部分是用来干 什么的。有些main中的for循的每个部分是由调 用函数组成的,它们分别可以是提示用户的信息 或从键盘上输入一个数。
第04章循环结构程序设计
4.5.3 无限循环
【例4.7】 【例4.8】 【例4.9】
第04章循环结构程序设计
在使用for语句中要注意以下几点: (1)for语句中的各表达式都可省略,但分号间隔符
不能少; 如:for(;表达式;表达式)省去了表达式1; for(表达式;;表达式)省去了表达式2; for(表达式;表达式;)省去了表达式3; for(;;)省去了全部表达式。
又如:循环语句for(n=100;n<0;n=n-2)(设n为整 形变量)控制循环体反复执行的次数为
n=(int)((1-100-2)/(-2))=50
第04章循环结构程序设计
4.5.2 for循环的变量
最常用的一种变量是使用逗号运算符使得两个或两个以 上的变量共同实现对循环的控制。例如,下面例子使 用变量x和y共同来控制循环,这两个变量都是在for 语句的内部被初始化。
第04章循环结构程序设计
其执行过程如下:
先执行循环体语句一次,再判断表达式的 值,若为真(非0),则继续执行循环体语 句,直到表达式的值为假(0)时才退出循 环。do-while语句和while语句的区别在于 do-while是先执行后判断,因此,do-while 语句至少要执行一次循环体语句。而while 语句是先判断后执行,如果条件不满足,则 一次循环体语句也不执行。一般用while语 句所编写的程序也可以用do-while来编写。
在C语言中可以用以下四种方法来实现循环:
1. 用goto语句和if语句构成循环;
2. 用while语句;
3. 用do-while语句;
4. 用for语句。
其中while语句和 for语句可以实现当型循环结构。
do-while语句可以实现直到型循环结构,而用goto语
句和if语句既可以实现当型循环结构也可以实现直到型
第04章循环结构程序设计
4.5 for语句
for语句是C语言中所提供的功能最强、使用 最为灵活的一种循环语句。特别适用于循环次数 固定而循环条件不确定的情况。
第04章循环结构程序设计
4.5.1 for语句的一般形式
for语句的一般形式如下: for(表达式1;表达式2;表达式3)
{ …… } ▪ (1)表达式1通常是用来给循环变量赋初值,一般是赋值表达 式。也允许在for语句之外给循环变量赋初值,此时可省略该 表达式; ▪ (2)表达式2通常是循环条件,一般为关系表达式或逻辑表达 式,也可以是其它表达式; ▪ (3)表达式3通常可用来修改循环变量的值,一般是赋值表达 式。 三个表达式都是可选项,都可以省略。但特别提请注意的是, 表达式1和表达式2后的第0分4章循号环“结;构程”不序设能计 省略。
省略号代表的是循环体语句。当循环体是一条语句时, 可以不用大括号,但当循环体是两条或两条以上语句 时,一定要用大括号。
第04章循环结构程序设计
其传统的流程图和N-S流程图分别如图4-3(a)和(b) 所示。
第04章循环结构程序设计
执行过程如下:
先计算表达式的值,当值为真(非0) 时,执行循环体语句,执行完循环语句后, 再返回计算机表达式的值,直到表达式的 值为假(0)时,退出循环,执行while语 句的下一条语句。其语句可以为空语句、 简单语句或作为循环体部分的复合语句。
所谓循环即反复的意思,在C语言中指反复执行某些相 同的操作。循环分为当型循环和直到型循环。其传统的 流程图如图4-1(a)和(b)所示。
第04章循环结构程序设计
其相应的N-S流程图如图4-2(a)和(b)所示.
第04章循环结构程序设计
当型循环指当条件成立时反复执行语句,即先判断后 执行;而直到型循环指先执行语句然后判断条件是否 成立,当成立时再执行语句,即先执行后判断。
for语句的流程图见图4-6。
第04章循环结构程序设计
有一点需要指出:for循环的条件检验总是在 循环的头部进行的。这也就是说,当开始时条件 为不成立(0)时,不执行循环体,例如程序段: x=10; for(y=10;y!=x,++y) printf (" %d ", y); printf (" %d ",y);
循环结构。
第04章循环结构程序设计
4.2用goto语句和if语句构成循环
用goto语句和if语句构成循环有两种格式: 格式一: 语句标号:if(条件表达式)
{…… goto 语句标号; }
第04章循环结构程序设计
这种用goto语句和if语句构成循环的语句执行 过程为:先计算条件表达式的值,当条件表达式 成立(非0)时,执行大括号中的语句或语句组, 执行到goto 语句时使程序又回到语句标号所指 向的if语句,使得大括号中的语句反复执行,当 计算出的条件表达式的值不成立(为0)时,程 序跳出循环,执行大括号以下的语句。从它的执 行过程,我们可以看出,它是一种当型循环。
for语句的执行过程如下: ▪ (1)首先计算表达式1的值; ▪ (2)再计算表达式2的值,若值为真(非0)则
执行循环体语句一次,否则跳出循环; ▪ (3)循环体语句执行完后,再计算表达式3的值,
转(2)步去执行。在整个for循环过程中,表达 式1只计算一次,表达式2和表达式3则可能计算 多次。
第04章循环结构程序设计
for循环最有价值的一种用法是建立无限循环。 由于构成for循环的三个表达式都是没有被要求, 因此可以运用空的条件表达式而使得循环无休止 地进行下去,例如:
for(;;) printf(”this loop will run forever.\n”)
有一点必须强调:for循环中的语句可以是空语 句,但不能省略分号,即for语句必须有两个分号。
for(x=0,y=0;x+y<10;++x) {
y=getchar(); y=y-’0’;/*subtract the ASCII code for 0 from y*/ ┇ }
第04章循环结构程序设计
这里逗号分隔了两个初始化语句。每次x增加1, 重复循环,y值由键盘输入。x和y之和大于或等 于10时,才能中止循环。这就需要将y值初始化 为零,以便在第一次计算条件表达式的值时,它 的值已经被定义了。如果y没有被定义,也许碰 巧(或前面的程序用到过),它的值是10 或大 于10,这就使得条件为false,并退出循环。
第04章循环结构程序设计
4.4 do-while语句
do-while语句可以实现直到型循环结构。其一般形 式如下: do { …… } while(表达式)语句;
第04章循环结构程序设计
省略号代表的是循环体语句,表达式 是循环条件。
其传统的流程图和N-S流程图分别如图 4-1(b)和4-2(b)所示。循环是在循 环的尾部检验它的条件,而不是在头部。
【例4.6】
第04章循环结构程序设计
对于do-while语句还应注意以下几点: ▪ (1)在if语句,while语句中, 表达式后面都不
能加分号, 而在 do-while语句的表达式后面则 必须加分号; ▪ (2)do-while语句也可以组成多重循环,而且 也可以和while语句相互嵌套; ▪ (3)在do和while之间的循环体由多个语句组成 时,也必须用{ }括起来组成一个复合语句; ▪ (4)do-while和while语句相互替换时,要注意 修改循环控制条件。
第04章循环结构程序设计
用这种结构编写程序,例题4.1可以改写为:
main()
{ int i,sum=0;
i=1;
loop: sum=sum+i;
/*标号名为loop*/
i=i+1;
if (i<=100) goto loop;
printf("sum=%d",sum);
}
程序执行结果为:sum第=04章5循0环5结0构程序设计
【例4.1】
第04章循环结构程序设计
格式二: 语句标号:{……
if(条件表达式) goto 语句标号; }
第04章循环结构程序设计
这种用goto语句和if语句构成循环的语句执 行过程为:先执行大括号中的语句或语句组, 当执行到if语句,先计算条件表达式的值,当 条件表达式成立(非0)时,goto 语句使程 序又回goto 语句所指向的语句标号所指向的 语句,然后又执行大括号中的语句,使得大 括号中的语句反复执行,当计算出的条件表 达式的值为0时,程序跳出循环,执行大括号 以下的语句。虽然它执行循环体的条件是条 件表达式成立,从这一点看,它与一般的直 到型循环不同,但从它的执行过程,我们可 以看出,它也属于一种直到型循环。
相关文档
最新文档