📄 第10章 循环语句.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0049)http://www.d2school.com/bcyl/bhcpp/newls/ls10.htm --><HTML><HEAD><TITLE>教学--第十章 循环语句</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>P {
MARGIN: 1px 2px; LINE-HEIGHT: 150%
}
.节标题 {
FONT-WEIGHT: bold; FONT-SIZE: 12pt
}
TD {
FONT-SIZE: 9pt
}
.tdtitle {
FONT-SIZE: 20pt
}
.celltopline {
BORDER-TOP: #000000 1px solid
}
.menucell {
FONT-SIZE: 10pt
}
#glowtext {
FONT-SIZE: 10pt; FILTER: glow(color=red,strength=1); WIDTH: 100%
}
A:link {
FONT: 10pt 宋体; COLOR: blue; TEXT-DECORATION: none
}
A:visited {
FONT: 10pt 宋体; COLOR: purple; TEXT-DECORATION: none
}
A:active {
FONT: 10pt 宋体; COLOR: red; TEXT-DECORATION: underline
}
A:hover {
COLOR: blue; TEXT-DECORATION: underline
}
</STYLE>
<META content="MSHTML 6.00.2900.2769" name=GENERATOR></HEAD>
<BODY leftMargin=0 topMargin=3><!-- 标题 --><!--标题结束 --><A name=页首></A>
<CENTER>
<TABLE height=154 cellSpacing=4 cellPadding=4 width=760 border=0>
<TBODY>
<TR>
<TD
style="FONT-SIZE: 10pt; MARGIN-LEFT: 12px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%; MARGIN-RIGHT: 12px; FONT-FAMILY: 宋体"
width="100%" height=148>
<H2>第十章 循环语句</H2>
<P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls10.htm#10.1">10.1
while 循环</A></P>
<P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls10.htm#10.2">10.2
do ... while 循环</A></P>
<P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls10.htm#10.3">10.3
for 循环</A></P>
<P> <A
href="http://www.d2school.com/bcyl/bhcpp/newls/ls10.htm#10.3.1">10.3.1
循环条件三要素</A></P>
<P> <A
href="http://www.d2school.com/bcyl/bhcpp/newls/ls10.htm#10.3.2">10.3.2
三要素在for循环结构上体现</A></P>
<P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls10.htm#10.4">10.4
多层循环</A></P>
<P><A href="http://www.d2school.com/bcyl/bhcpp/newls/ls10.htm#10.5">10.5
小结及一点问题</A></P>
<P> </P>
<P> </P>
<P>循环就是反复。
<P>生活中,需要反复的事情很多。譬如你我的整个人生,就是一个反复,反复每一天的生活,直到死,幸好,我们每天的生活并不完全一个样。
<P>
<H3><A name=10.1>10.1</A> while 循环</H3>
<P>
<P>语法形式:
<P>
<P>while(条件)
<P>{
<P> 需要循环执行的语句;
<P>}
<P>
<P>while 是“当”的意思。
<P>
<P>请首先和if语句作一个比较:
<P>
<P>if(条件)
<P>{
<P> 条件成立时执行的语句;
<P>}
<P>
<P>二者除了关键字不一样以外,结构完全一样。但一定要注意,在条件成立时,if语句仅仅执行一遍,而while语句则将反复执行,直到条件不再成立。
<P>请看while循环的流程图:
<P>
<P><IMG height=353 src="第10章 循环语句.files/ls10.h2.gif" width=357 border=0>
<P>程序从“前面的语句”开始执行,然后进行条件判断,如果条件成立,则执行一次“每次循环执行的语句”,再后请特别注意红色部分,这是我们碰上的,第一次会往后走流程:红线就像汽车拐弯,掉头到条件处(并不包括前面的语句),然后再进行下一次的条件判断……直到某一次判断时条件不成立了,程序“继续后面的语句”。
<P>
<P>
<P>我们用while的语法套用生活中的实际例子,可以直观地看出while的用法。
<P>假设有一个爱哭的小娃娃,有一天她要求父母给买一条小红裙,可惜父母不同意,于是她就开始一个循环:<BR>
<P>while ( 父母不给买小红裙)
<P>{<BR> 我哭;<BR> }
<P>
<P>这段“代码”的意思是:当“父母不给买小红裙”,那么,小女孩就一遍一遍地哭。
<P>这就是我们和循环流程的第一个遭遇战。所举的例子看似直观:“小孩一遍遍地哭,直到父母给买裙”,但真正要用程序的语言来正确地表达出来,需要很多方面要考虑到,必竟,程序是严谨的。
<P>首先,<B>一个合适的判断是否继续的条件相当重要。</B>小女孩要继续哭,仅仅“父母不给买小红裙”,这显示不符合事实,想想我们小时候,再会哭,最终也有累的时候,所以,要想继续哭,我们的条件有两个:“父母不给买小红裙”并且“我还没有哭累”。
<P>
<P>while ( 父母不给买小红裙 && 我还没有哭累)
<P>{<BR> 我哭;<BR> }
<P>
<P>其次,大多数情况下,<B>条件需要被恰当地改变。</B>小女孩在不停地哭,那么她如何知道父母是否买了红裙呢?所以,她不能只顾哭,还得在哭的间隙观察大人是否同意买裙。至于是否哭累,我们假设小女孩有一个疲劳度,每哭一次疲劳度加1,当疲劳度到达200时,可怜的小女孩累了……
<P>
<P>while(父母不给买小红裙 && 疲劳度 < 200)
<P>{
<P> 我哭;
<P> 我偷看爸妈是否同意买裙;
<P> 疲劳度++;
<P>}
<P>
<P><B>例一: 用 while 语句实现求从1到100的累加和。</B>
<P>
<P>求1+2的和,我们可以写 a = 1 + 2;求1加到100,我们当然可以这样写 a = 1 + 2 + 3 + ...
100.不过这样写显然太累人了,要从1写到100啊!所以聪明如高斯的你,当然也知道这样写:a = (1+100) *
50;这确实是个在任何时候都值得称赞的,又快又简的方法,只是今天我们想让计算机累一点,老老实实地从1加到100。首先用我们先学的while式的循环。
<P>
<P>请同学们打开CB,然后新建一空白的控制台程序,在main()函数体加入下面黑体部分代码。然后按F9运行。查看运行结果以加深印象。
<P>
<P>//---------------------------------------------------------------------------
<P><B>#include <iostream.h></B>
<P>#pragma hdrstop
<P>//---------------------------------------------------------------------------
<P>#pragma argsused
<P>int main(int argc, char* argv[])
<P>{
<P><B>int sum = 0; //变量sum将用于存储累加和,将它初始化为0,这很重要。</B>
<P><B>int i = 1; //i是每次要加的数,它从1开始。</B>
<P>
<P><B>while ( i<= 100)</B>
<P><B>{</B>
<P><B> sum += i;</B>
<P><B> i++;</B>
<P><B>}</B>
<P>
<P><B>//输出累加结果:</B>
<P><B>cout << "1到100的累加和为:" << sum << endl;</B>
<P><B>getchar();</B>
<P>}
<P>sum
初始为0,然后在每一遍的循环里,它都加上i,而,i则每次都在被加后,增加1。最终,i递增到101,超过100了,这个循环也就完成了任务。
<P>
<P>运行上面程序,输出结果为:
<P>
<P><FONT color=#ffffff><SPAN
style="BACKGROUND-COLOR: #000000">1到100累加和为为:5050</SPAN></FONT>
<P>
<P><B>例二:用while循环实现简单的统计功能</B>
<P>
<P>统计功能在各行业里都经常用到,比如学校学生成绩总分的统计,商店中每日销售额的统计等。下面我们实现一个学生成绩的统计。
<P>由于成绩中包含有80.5这样的需要小数的部分,所以我们使用实数类型。
<P>
<P>保存,然后关闭上面的工程,然后再新建一个控制台工程。在主函数main内加入以下黑体部分的代码:
<P>
<P>//---------------------------------------------------------------------------
<P><B>#include <iostream.h></B>
<P>#pragma hdrstop
<P>//---------------------------------------------------------------------------
<P>#pragma argsused
<P>int main(int argc, char* argv[])
<P>{
<P><B> float sum,score;</B>
<P><B> int num; //num 用于存储有几个成绩需要统计。</B>
<P><B> int i; //i 用于计数</B>
<P>
<P><B> //初始化:</B>
<P><B> sum = 0; </B>
<P><B> i = 1;</B>
<P>
<P><B> cout << "====成绩统计程序====" << endl;<BR></B>
<P><B> //用户需事先输入成绩总数:</B>
<P><B> cout << "请输入待统计的成绩个数:";</B>
<P><B> cin >> num;</B>
<P><B> cout << "总共需要输入"<< num <<
"个成绩(每个成绩后请加回车键):" << endl;</B>
<P>
<P><B> while ( i <= num)</B>
<P><B> {</B>
<P><B> cout << "请输入第" << i
<< "个成绩:";</B>
<P><B> cin >>
score;<BR> sum +=
score;<BR>
i++;<BR>
}<BR><BR>
//输出统计结果:<BR> cout << "参加统计的成绩数目:"
<< num << endl;<BR> cout
<< "总分为:" << sum <<
endl;<BR><BR> getchar();</B>
<P>}
<P>//---------------------------------------------------------------------------<BR>
<P>以下是运行结果,我输入4个成绩参加统计:
<P><IMG height=176 src="第10章 循环语句.files/ls10.h1.gif" width=432 border=0>
<P>回车结束上面的程序。稍作休息。
<P>
<P>为了更直观地了解循环流程,现在我们来跟踪这段程序中的while循环。
<P>1、首先在循环开始处设置断点(F5 功能):
<P><IMG height=72 src="第10章 循环语句.files/ls10.h3.gif" width=401 border=0>
<P>
<P>2、按F9运行程序,在DOS窗口提示“请输入待统计的成绩个数:”时,输入4,并回车。
<P>
<P>3、程序将在一瞬间运行到第一步设置的断点所在行。即 while(...)这一行。
<P> 此时请鼠标挪到 i 上,稍等片刻,出现提示 “i=1",同样的方法可以观察num的值。
<P><IMG height=71 src="第10章 循环语句.files/ls10.h4.gif" width=402 border=0>
<P>
<P>可见第一遍循环时,i = 1,num = 4,条件:i <= num 显然成立,循环得以继续。
<P>
<P>4、按F8,程序往下运行一行,接着再按F8,程序要求输入一个成绩,请切换到DOS窗口,随便输入一个数,并回车。
<P>回车后,程序运行到下图中蓝底的一行:
<P><IMG height=130 src="第10章 循环语句.files/ls10.h7.gif" width=399 border=0>
<P>5、之后,连续按F8,你将发现程序“回头”运行到 while(...)这一行。此时,i=2, i <= num
条件仍然成立,如果您想再跟踪一遍循环,请继续按F8,如果想结束跟踪,在断点行上再按一次F5以取消断点,然后按F9,程序恢复全速运行。
<P><IMG height=124 src="第10章 循环语句.files/ls10.h6.gif" width=395 border=0>
<P>(程序往回走,回到while行)
<P>
<H3><A name=10.2>10.2</A> do ... while 循环</H3>
<P>
<P>语法形式:
<P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -