?? 教學--第十章 循環(huán)語句.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0045)http://d2school.com/bcyl/bhcpp/newls/ls10.htm -->
<HTML><HEAD><TITLE>教學--第十章 循環(huán)語句</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>P {
MARGIN: 1px 2px; LINE-HEIGHT: 150%
}
.節(jié)標題 {
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.2180" name=GENERATOR></HEAD>
<BODY leftMargin=0 topMargin=3><!-- 標題 --><!--標題結(jié)束 --><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>第十章 循環(huán)語句</H2>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls10.htm#10.1">10.1 while
循環(huán)</A></P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls10.htm#10.2">10.2 do
... while 循環(huán)</A></P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls10.htm#10.3">10.3 for
循環(huán)</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls10.htm#10.3.1">10.3.1
循環(huán)條件三要素</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls10.htm#10.3.2">10.3.2
三要素在for循環(huán)結(jié)構(gòu)上體現(xiàn)</A></P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls10.htm#10.4">10.4
多層循環(huán)</A></P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls10.htm#10.5">10.5
小結(jié)及一點問題</A></P>
<P> </P>
<P> </P>
<P>循環(huán)就是反復。
<P>生活中,需要反復的事情很多。譬如你我的整個人生,就是一個反復,反復每一天的生活,直到死,幸好,我們每天的生活并不完全一個樣。
<P>
<H3><A name=10.1>10.1</A> while 循環(huán)</H3>
<P>
<P>語法形式:
<P>
<P>while(條件)
<P>{
<P> 需要循環(huán)執(zhí)行的語句;
<P>}
<P>
<P>while 是“當”的意思。
<P>
<P>請首先和if語句作一個比較:
<P>
<P>if(條件)
<P>{
<P> 條件成立時執(zhí)行的語句;
<P>}
<P>
<P>二者除了關(guān)鍵字不一樣以外,結(jié)構(gòu)完全一樣。但一定要注意,在條件成立時,if語句僅僅執(zhí)行一遍,而while語句則將反復執(zhí)行,直到條件不再成立。
<P>請看while循環(huán)的流程圖:
<P>
<P><IMG height=353 src="教學--第十章 循環(huán)語句.files/ls10.h2.gif" width=357
border=0>
<P>程序從“前面的語句”開始執(zhí)行,然后進行條件判斷,如果條件成立,則執(zhí)行一次“每次循環(huán)執(zhí)行的語句”,再后請?zhí)貏e注意紅色部分,這是我們碰上的,第一次會往后走流程:紅線就像汽車拐彎,掉頭到條件處(并不包括前面的語句),然后再進行下一次的條件判斷……直到某一次判斷時條件不成立了,程序“繼續(xù)后面的語句”。
<P>
<P>
<P>我們用while的語法套用生活中的實際例子,可以直觀地看出while的用法。
<P>假設(shè)有一個愛哭的小娃娃,有一天她要求父母給買一條小紅裙,可惜父母不同意,于是她就開始一個循環(huán):<BR>
<P>while ( 父母不給買小紅裙)
<P>{<BR> 我哭;<BR> }
<P>
<P>這段“代碼”的意思是:當“父母不給買小紅裙”,那么,小女孩就一遍一遍地哭。
<P>這就是我們和循環(huán)流程的第一個遭遇戰(zhàn)。所舉的例子看似直觀:“小孩一遍遍地哭,直到父母給買裙”,但真正要用程序的語言來正確地表達出來,需要很多方面要考慮到,必竟,程序是嚴謹?shù)摹? <P>首先,<B>一個合適的判斷是否繼續(xù)的條件相當重要。</B>小女孩要繼續(xù)哭,僅僅“父母不給買小紅裙”,這顯示不符合事實,想想我們小時候,再會哭,最終也有累的時候,所以,要想繼續(xù)哭,我們的條件有兩個:“父母不給買小紅裙”并且“我還沒有哭累”。
<P>
<P>while ( 父母不給買小紅裙 && 我還沒有哭累)
<P>{<BR> 我哭;<BR> }
<P>
<P>其次,大多數(shù)情況下,<B>條件需要被恰當?shù)馗淖儭?lt;/B>小女孩在不停地哭,那么她如何知道父母是否買了紅裙呢?所以,她不能只顧哭,還得在哭的間隙觀察大人是否同意買裙。至于是否哭累,我們假設(shè)小女孩有一個疲勞度,每哭一次疲勞度加1,當疲勞度到達200時,可憐的小女孩累了……
<P>
<P>while(父母不給買小紅裙 && 疲勞度 < 200)
<P>{
<P> 我哭;
<P> 我偷看爸媽是否同意買裙;
<P> 疲勞度++;
<P>}
<P>
<P><B>例一: 用 while 語句實現(xiàn)求從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式的循環(huán)。
<P>
<P>請同學們打開CB,然后新建一空白的控制臺程序,在main()函數(shù)體加入下面黑體部分代碼。然后按F9運行。查看運行結(jié)果以加深印象。
<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是每次要加的數(shù),它從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>//輸出累加結(jié)果:</B>
<P><B>cout << "1到100的累加和為:" << sum << endl;</B>
<P><B>getchar();</B>
<P>}
<P>sum
初始為0,然后在每一遍的循環(huán)里,它都加上i,而,i則每次都在被加后,增加1。最終,i遞增到101,超過100了,這個循環(huán)也就完成了任務。
<P>
<P>運行上面程序,輸出結(jié)果為:
<P>
<P><FONT color=#ffffff><SPAN
style="BACKGROUND-COLOR: #000000">1到100累加和為為:5050</SPAN></FONT>
<P>
<P><B>例二:用while循環(huán)實現(xiàn)簡單的統(tǒng)計功能</B>
<P>
<P>統(tǒng)計功能在各行業(yè)里都經(jīng)常用到,比如學校學生成績總分的統(tǒng)計,商店中每日銷售額的統(tǒng)計等。下面我們實現(xiàn)一個學生成績的統(tǒng)計。
<P>由于成績中包含有80.5這樣的需要小數(shù)的部分,所以我們使用實數(shù)類型。
<P>
<P>保存,然后關(guān)閉上面的工程,然后再新建一個控制臺工程。在主函數(shù)main內(nèi)加入以下黑體部分的代碼:
<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 用于存儲有幾個成績需要統(tǒng)計。</B>
<P><B> int i; //i 用于計數(shù)</B>
<P>
<P><B> //初始化:</B>
<P><B> sum = 0; </B>
<P><B> i = 1;</B>
<P>
<P><B> cout << "====成績統(tǒng)計程序====" << endl;<BR></B>
<P><B> //用戶需事先輸入成績總數(shù):</B>
<P><B> cout << "請輸入待統(tǒng)計的成績個數(shù):";</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>
//輸出統(tǒng)計結(jié)果:<BR> cout << "參加統(tǒng)計的成績數(shù)目:"
<< num << endl;<BR> cout
<< "總分為:" << sum <<
endl;<BR><BR> getchar();</B>
<P>}
<P>//---------------------------------------------------------------------------<BR>
<P>以下是運行結(jié)果,我輸入4個成績參加統(tǒng)計:
<P><IMG height=176 src="教學--第十章 循環(huán)語句.files/ls10.h1.gif" width=432
border=0>
<P>回車結(jié)束上面的程序。稍作休息。
<P>
<P>為了更直觀地了解循環(huán)流程,現(xiàn)在我們來跟蹤這段程序中的while循環(huán)。
<P>1、首先在循環(huán)開始處設(shè)置斷點(F5 功能):
<P><IMG height=72 src="教學--第十章 循環(huán)語句.files/ls10.h3.gif" width=401 border=0>
<P>
<P>2、按F9運行程序,在DOS窗口提示“請輸入待統(tǒng)計的成績個數(shù):”時,輸入4,并回車。
<P>
<P>3、程序?qū)⒃谝凰查g運行到第一步設(shè)置的斷點所在行。即 while(...)這一行。
<P> 此時請鼠標挪到 i 上,稍等片刻,出現(xiàn)提示 “i=1",同樣的方法可以觀察num的值。
<P><IMG height=71 src="教學--第十章 循環(huán)語句.files/ls10.h4.gif" width=402 border=0>
<P>
<P>可見第一遍循環(huán)時,i = 1,num = 4,條件:i <= num 顯然成立,循環(huán)得以繼續(xù)。
<P>
<P>4、按F8,程序往下運行一行,接著再按F8,程序要求輸入一個成績,請切換到DOS窗口,隨便輸入一個數(shù),并回車。
<P>回車后,程序運行到下圖中藍底的一行:
<P><IMG height=130 src="教學--第十章 循環(huán)語句.files/ls10.h7.gif" width=399
border=0>
<P>5、之后,連續(xù)按F8,你將發(fā)現(xiàn)程序“回頭”運行到 while(...)這一行。此時,i=2, i <= num
條件仍然成立,如果您想再跟蹤一遍循環(huán),請繼續(xù)按F8,如果想結(jié)束跟蹤,在斷點行上再按一次F5以取消斷點,然后按F9,程序恢復全速運行。
<P><IMG height=124 src="教學--第十章 循環(huán)語句.files/ls10.h6.gif" width=395
border=0>
<P>(程序往回走,回到while行)
<P>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -