官术网_书友最值得收藏!

  • 零基礎C#學習筆記
  • 明日科技編著
  • 1898字
  • 2021-03-12 20:01:00

4.4 while 和do…while 循環

學習和使用C# 的目的是使用它編寫出能夠解決現實生活問題的程序。生活中存在很多重復性的工作,有時甚至不知道這種工作需要重復的次數,那么如何用簡單的C# 語句解決這種復雜的、帶有重復性的問題呢? C# 提供了循環控制語句來解決這類問題。C# 中的循環控制語句主要有while、do…while 和for,本節將首先對while 和do…while 循環的使用進行講解。

4.4.1 while 循環

img

while 循環用來實現 “當型” 循環結構,它的語法格式如下。

img

表達式一般是一個關系表達式或一個邏輯表達式,表達式的值應該是一個邏輯值真或假(true 和false)。當表達式的值為真時,開始循環執行語句;而當表達式的值為假時,退出循環,執行循環外的下一條語句。循環每次都是執行完語句后回到表達式處重新開始判斷,重新計算表達式的值。

while 循環流程圖如圖4.20 所示。

img

圖4.20 while 循環流程圖

示例6.數學家高斯的故事

許多年前,在德國的一所鄉村小學里,有一個很懶的老師,他總是要求學生們不停地做整數加法計算,因為在學生們將一長串整數求和的過程中,他可以在旁邊名正言順地偷懶。有一天,他又用同樣的方法布置了一道從1 加到100 的求和題目。正當他打算偷懶時,有一個學生說自己算出了答案。老師自然是不信的,不看答案就讓學生再去算,可是學生還是站在老師面前不動。老師被激怒了,認為這個學生是在挑釁自己的威嚴,他不相信一個小學生能在幾秒鐘內就將從1 加到100 的求和題目計算出結果。于是搶過學生的答案,正打算教訓學生時,突然發現學生寫的答案是5050。老師愣住了,原來這個學生不是用一個數一個數地加起來的方式計算的,而是將100 個數分成1+100=101、2+99=101(一直到50+51=101)等50 對,然后使用101×50=5050 計算得出的。這個聰明的學生就是德國著名的數學家高斯。本示例將使用while 循環編寫程序,通過程序實現從1 到100 的累加,代碼如下。

img

學習筆記

題目要求計算1 到100 之間數字的累加結果,那么需要先定義一個變量iNum 作為循環條件的判定,iNum 的初始值是1,循環條件是iNum 必須小于或等于100。也就是只有在iNum 小于或等于100 時才進行累加操作,若iNum 大于100,則循環終止。

每次循環只能計算其中一次相加的結果,想要計算100 個數字的累加值,需要定義一個變量iSum 來暫存每次累加的結果,并作為下一次累加操作的基數。

iNum的初始值是1,要計算1到100之間數字的累加結果,需要iNum每次進入循環,進行累加后,iNum 的值增加1,為下一次進入循環進行累加做準備,也同時作為循環結束的判斷條件。

當iNum 大于100 時,循環結束,執行后面的輸出語句。

上面代碼的運行結果如下。

img

學習筆記

如果將示例6 代碼中while 語句后面的大括號去掉,即將代碼修改如下:

img
img

那么重新編譯并運行代碼不會出現任何結果。分析造成這種情況的原因是:當while 語句循環體中的語句大于一條時,需要把循環體放在大括號中,如果while 語句后面沒有大括號,則while 循環只會循環while 語句后的第一條語句。對于上面的代碼,則沒有對循環變量iNum 增加的過程,于是每次進入循環時,iNum 的值都是1,形成死循環,永遠不會執行后面的其他語句。

學習筆記

● 循環體如果是多條語句,則需要用大括號括起來,如果不用大括號,則循環體只包含while 語句后的第一條語句。

● 循環體內或表達式中必須有使循環結束的條件。例如,上述程序中的循環條件是iNum <= 100,iNum 的初始值為1,循環體中就用iNum++ 來使得iNum 趨向于100,以使循環結束。

4.4.2 do…while 循環

img

在有些情況下無論循環條件是否成立,循環體的內容都要被執行一次,這時可以使用do…while 循環。do…while 循環的特點是先執行循環體,再判斷循環條件,其語法格式如下。

img

do 為關鍵字,必須與while 配對使用。do 與while 之間的語句稱為循環體,該語句是用大括號括起來的復合語句。do…while 語句中的表達式與while 語句中的相同,也為關系表達式或邏輯表達式,但特別值得注意的是,do…while 語句后一定要有分號 “;”。do…while 循環流程圖如圖4.21 所示。

img

圖4.21 do…while 循環流程圖

從圖4.21 中可以看出,當程序運行到do…while 時,先執行一次循環體的內容,然后判斷循環條件。當循環條件為真時,重新返回執行循環體的內容,如此反復,直到循環條件為假,循環結束,程序執行do…while 循環后面的語句。

示例7.使用do…while 循環挑戰數學家高斯

使用do…while 循環編寫程序,實現從1 到100 的累加,代碼如下。

img

學習筆記

在上面代碼中將判斷條件iNum <= 100 放到了循環體后面,這樣,無論iNum 是否滿足條件,都將至少執行一次循環體。

學習筆記

本示例代碼的運行結果與示例6 代碼的運行結果一樣。

4.4.3 while 語句和do…while 語句的區別

img

while 語句和do…while 語句都用來控制代碼的循環,但while 語句適用于先進行條件判斷,再執行循環結構的場合;而do…while 語句則適用于先執行循環結構,再進行條件判斷的場合。具體來說,在使用while 語句時,如果條件不成立,則循環結構一次都不會執行;而在使用do…while 語句時,即使條件不成立,程序也至少會執行一次循環結構。

主站蜘蛛池模板: 灌南县| 郁南县| 永定县| 桦南县| 镇赉县| 新平| 新乡县| 周至县| 柳林县| 荆门市| 昔阳县| 安陆市| 北碚区| 定结县| 双江| 连山| 竹北市| 紫云| 玉龙| 哈密市| 若羌县| 镇沅| 北碚区| 台前县| 宝丰县| 昌邑市| 新绛县| 宁陕县| 廊坊市| 始兴县| 孟津县| 通榆县| 甘肃省| 丰县| 察哈| 洪雅县| 房产| 民丰县| 六枝特区| 吐鲁番市| 治县。|