學習筆記4 (for迴圈)

2021-08-30 21:54:23 字數 3366 閱讀 9158

2.for迴圈

for迴圈把上述3個行為(初始化、測試和更新)組合在一處。

程式示例1.1:

-- 使用for的計數迴圈

#include int main(viod)

關鍵字for後面的圓括號中有3個表示式,分別用兩個分號隔開。第1個表示式是初始化,只會在for迴圈開始時執行一次。第2個表示式是測試條件,在執行迴圈之前對表示式求值。如果表示式為假(本例中,count大於number時),迴圈結束。第3個表示式執行更新,在每次迴圈結束時求值。完整的for語句還包括後面的簡單語句或復合語句。for圓括號中的表示式也叫做控制表示式,它們都是完整表示式,所以每個表示式的***(如,遞增變數) 發生在對下乙個表示式求值之前。 圖1.2演示了for迴圈的結構。

程式示例1.2:

/* for_cube.c -- 使用for迴圈建立乙個立方表 */

#includeint main (void)

列印1~6及其對應的立力,該程式的輸出如下:

n n cubed

1   1

2   8

3   27

4   64

5   125

6   216

for 迴圈的第一行包含了迴圈所需的所有資訊:num的初值,num的終值和每次迴圈num的增量。

3.利用for 的靈活性

雖然for迴圈看上去和fortran的do 迴圈,pascal的for迴圈,basic的for…next迴圈類似,但是for迴圈比這些迴圈靈話。這些靈活性源於如何使用for迴圈中的3個表示式。以前面for迴圈為例,第1個表示式給計數器賦初值,第2個表示式表示計數器的範圍,第3個表示式遞增計數器。這樣使用for迴圈確實很像其他語言的迴圈。除此之外,for 迴圈還有其他9種用法。

(1.)可以使用遞減運算子來遞減計數器:

/* for_down.c  */

#include int main(void)

每次迴圈n遞增13,程式的輸出如下:215

2841

54(3.)可以用字元代替數字計數:

/* for char.c */

include int main(void);

該程式假定系統用ascii碼表示字元。由於篇幅有限,省略了大部分輸出:

the ascii value for a is 97.

the ascii value for b 13 98.

. . .

the ascii value for x is 120.

the ascii value for y is 121.

the ascii value for z is 122.

該程式能正常執行是因為字元在內部是以整數形式儲存的,因此該迴圈實際上仍是用整數來計數。

(4.)除了測試迭代次數外,還可以測試其他條件。在for_cube程式中,可以把:

for (num = 1; num <= 6; num++)

替換成:

for (num = 1; numnumnum <= 216; num++)

如果與控制迴圈次數相比,你更關心限制立方的大小,就可以使用這樣的測試條件。

(5.)可以讓遞增的量幾何增長,而不是算術增長。也就是說,每次都乘上而不是加上一乙個固定的量:

/* for_geo.c  */

#include int main(void)

該程式中,每次迴圈都把 debt 乘以1.1,即 debt 的值每次都增加10%,其輸出如下:

your debt is now $100.00.

your debt is now $110.00.

your debt is now $121.00.

your debt is now $133.10.

your debt is now $146.41.

(6.)第3個表示式可以使用任意合法的表示式。無論是什麼表示式,每次迭代都會更新該表示式的值。

/*for_wlld.c*/

include int main(vold)

該迴圈列印x的值和表示式++x * 5 + 50的值,程式的輸出如下:

1         55

2         60

3         65

4         70

5         75

注意,測試涉及y,而不是x。for迴圈中的3個表示式可以是不同的變數(注意,雖然該例可正常執行,但是程式設計風格不太好。如果不在更新部分加入代數計算,程式會更加清楚)。

(7.)可以省略乙個或多個表示式(但是不能省略分號),只要在迴圈中包含能結來迴圈的語句即可。

/*for_none.c /

include int main (void)

該程式的輸出如下:

n = 3; ans = 54

該迴圈保持n的值為3。變數ans開始的值為2,然後遞增到6和18,最終是54 (18比25小所以for迴圈進入下一次迭代,18乘以3得54)。順帶一提,省略第2個表示式被視為真,所以下面的迴圈會一直執行:

for( ; ; )

printf(「i want some action\n」);

(8.)第1個表示式不一定是給變數賦初值,也可以使用printf()。記住,在執行迴圈的其他部分之前,只對第1個表示式求值一次或執行一次。

/* for show.c */

include int main(void)

該程式列印第1行的句子一次, 在使用者輸入6之前不斷接受數字:

keep entering numbers!35

86that 's the one i want!

(9.)迴圈體中的行為可以改變迴圈頭中的表示式。例如,假設建立了下面的迴圈:

for(n = 1;n<10000;n = n + delta)

如果程式經過幾次迭代後發現delta太小或太大,迴圈中的1語句可以改變delta的大小。在互動式程式中,使用者可以在迴圈執行時才改變delta的值。這樣做也有危險的一面,例如,把delta設定為0就沒用了。

總而言之,可以自己決定如何使用for迴圈頭中的表示式,這使得在執行固定次數的迴圈外,還可以受更多的事情。接下來,我們將簡要討論些運算子,使for迴圈更加有用。

學習筆記4 迴圈結構

windows phone 7手機開發 net培訓 期待與您交流!1 while迴圈結構 例 int i 0 一般稱i為迴圈變數 while i 5 while迴圈的語法 while 迴圈條件 執行過程 1 先判斷迴圈條件,如果條件為true,則轉向2 如果條件為false,則轉向3 2 執行迴圈體...

PL SQL 學習筆記 (4)迴圈語句

1.while迴圈 示例 列印數字1 10 1 使用while迴圈列印數字1 10 2set serveroutput on34 declare5 定義迴圈變數 6 pnum number 1 7begin89 while pnum 10loop 10 迴圈體11 dbms output.put l...

c 學習筆記4,迴圈型別,迴圈控制語句

迴圈型別 while迴圈 include using namespace std int main return0 輸出 a 的值 10 a 的值 11 a 的值 12 a 的值 13 a 的值 14 a 的值 15 a 的值 16 a 的值 17 a 的值 18 a 的值 19for迴圈 incl...