视频讲解
学习和使用C#语言的目的是使用它编写出能够解决现实生活中问题的程序。生活中存在着很多重复性的工作,有时甚至不知道这种工作需要重复的次数,那么如何用简单的C#语句解决这种复杂的、带有重复性的问题呢?C#中提供了循环控制语句来解决这类问题。C#中的循环语句主要有while,do…while和for,本节将首先对while和do…while循环的使用进行讲解。
while语句用来实现“当型”循环结构,它的语法格式如下:
图6.1 while循环流程图
表达式一般是一个关系表达式或一个逻辑表达式,其表达式的值应该是一个逻辑值真或假(true和false),当表达式的值为真时,开始循环执行语句;而当表达式的值为假时,退出循环,执行循环外的下一条语句。循环每次都是执行完语句后回到表达式处重新开始判断,重新计算表达式的值。
while循环的流程图如图6.1所示。
【例6.01】 200多年以前,在德国的一所乡村小学里,有一个很懒的老师,他总是要求学生们不停地做整数加法计算,在学生们将一长串整数求和的过程中,他就可以在旁边名正言顺地偷懒了。有一天,他又用同样的方法布置了一道从1加到100的求和问题。正当他打算偷懒时,就有一个学生说自己算出了答案。老师自然是不信的,不看答案就让学生再去算,可是学生还是站在老师面前不动。老师被激怒了,认为这个学生是在挑衅自己的威严,他是不会相信一个小学生能在几秒钟内就将从1到100这100个数的求和问题计算出结果。于是抢过学生的答案,正打算教训学生时,突然发现学生写的答案是5050。老师愣住了,原来这个学生不是一个数一个数的加起来的,而是将100个数分成1+100=101、2+99=101一直到50+51=101等50对,然后使用101*50=5050计算得出的,这个聪明的学生就是德国著名的数学家高斯。本实例将使用while循环挑战高斯,通过程序实现1到100的累加,代码如下: (实例位置:资源包\源码\06\6.01)
程序运行结果如下:
(1)循环体如果是多条语句,需要用大括号括起来,如果不用大括号,则循环体只包含while语句后的第一条语句。
(2)循环体内或表达式中必须有使循环结束的条件,例如,例6.01中的循环条件是iNum <=100,iNum的初始值为1,循环体中就用iNum++来使得iNum趋向于100,使循环结束。
有些情况下无论循环条件是否成立,循环体的内容都要被执行一次,这时可以使用do…while循环。do…while循环的特点是先执行循环体,再判断循环条件,其语法格式如下:
图6.2 do…while循环流程图
do为关键字,必须与while配对使用。do与while之间的语句称为循环体,该语句是用大括号{}括起来的复合语句。循环语句中的表达式与while语句中的相同,也为关系表达式或逻辑表达式,但特别值得注意的是:do…while语句后一定要有分号“;”。do…while循环的流程图如图6.2所示。
从图6.2中可以看出,当程序运行到do…while时,先执行一次循环体的内容,然后判断循环条件,当循环条件为“真”的时候,重新返回执行循环体的内容,如此反复,直到循环条件为“假”,循环结束,程序执行do…while循环后面的语句。
【例6.02】 使用do…while循环编写程序实现1到100的累加,代码如下:( 实例位置:资源包\源码\06\6.02)
程序运行结果与例6.01的运行结果一样。
while语句和do…while语句都用来控制代码的循环,但while语句适用于先条件判断,再执行循环结构的场合;而do…while语句则适合于先执行循环结构,再进行条件判断的场合。具体来说,使用while语句时,如果条件不成立,则循环结构一次都不会执行,而如果使用do…while语句时,即使条件不成立,程序也至少会执行一次循环结构。
请分析下边两段代码分别执行几次循环?