




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1循環(huán)2C語(yǔ)言的重復(fù)語(yǔ)句用于設(shè)置循環(huán)。循環(huán)是重復(fù)執(zhí)行其他語(yǔ)句的一種語(yǔ)句,循環(huán)中重復(fù)執(zhí)行的語(yǔ)句就是循環(huán)體 C語(yǔ)句中,每個(gè)循環(huán)都有一個(gè)控制表達(dá)式。每次執(zhí)行循環(huán)體時(shí)都要對(duì)控制表達(dá)式進(jìn)行計(jì)算。 如果表達(dá)式為真,也就是不為零,那么繼續(xù)執(zhí)行循環(huán)。3C 提供三種循環(huán)語(yǔ)句: while語(yǔ)句:用于判定控制表達(dá)式在循環(huán)體執(zhí)行之前的循環(huán)。 do語(yǔ)句:用于判定控制表達(dá)式在循環(huán)體執(zhí)行之后的循環(huán)。 for語(yǔ)句:對(duì)于自增或自減計(jì)數(shù)變量的循環(huán)十分方便。 4使用while語(yǔ)句是最簡(jiǎn)單、最基本的設(shè)置循環(huán)方法。 While語(yǔ)句格式如下:while ( 表達(dá)式表達(dá)式) 語(yǔ)句語(yǔ)句表達(dá)式即為控制表達(dá)式;語(yǔ)句則是循環(huán)體。 5while語(yǔ)句
2、示例:while (i n) /* 控制表達(dá)式控制表達(dá)式 */ i = i * 2; /* 循環(huán)體循環(huán)體 */執(zhí)行while語(yǔ)句時(shí),首先計(jì)算控制表達(dá)式的值。如果值不為零(真),那么執(zhí)行循環(huán)體,接著再次判定表達(dá)式。這個(gè)過(guò)程持續(xù)進(jìn)行直到最終控制表達(dá)式的值變?yōu)榱恪?while語(yǔ)句示例:計(jì)算大于或等于數(shù)n的最小的2次冪:i = 1;while (i n) i = i * 2;設(shè)n為10時(shí),下面跟蹤顯示了while語(yǔ)句執(zhí)行情況:i = 1;i現(xiàn)在值為1.i n成立嗎?是,繼續(xù)。i = i * 2;i現(xiàn)在為2.i n成立嗎?是,繼續(xù)。i = i * 2;i現(xiàn)在為4。i n成立嗎?是,繼續(xù)。i = i *
3、2;i現(xiàn)在為8。i n成立嗎?是,繼續(xù)。i = i * 2;i現(xiàn)在為16。i 0) printf(T minus %d and countingn, i); i-;即使沒(méi)有嚴(yán)格要求的時(shí)候,一些程序員始終使用大括號(hào)括住循環(huán)體:while (i 0) printf(T minus %d and countingn, i); i-;整個(gè)過(guò)程持續(xù)到顯示信息為整個(gè)過(guò)程持續(xù)到顯示信息為“T minus 1 and counting”。9關(guān)于while語(yǔ)句的一些討論: 在while循環(huán)終止時(shí),控制表達(dá)式的值為假。因此,當(dāng)通過(guò)表達(dá)式i 0控制循環(huán)終止時(shí),i必須是小于或等于0的。 可能根本不執(zhí)行while循環(huán)體
4、。因?yàn)榭刂票磉_(dá)式是在循環(huán)體執(zhí)行之前進(jìn)行判定。 while語(yǔ)句常常可以有多重寫(xiě)法。更加簡(jiǎn)明的遞減計(jì)數(shù)循環(huán)如下:while (i 0) printf(T minus %d and countingn, i-);10如果控制表達(dá)式的值始終是非零值的話,while語(yǔ)句將無(wú)法終止。C語(yǔ)句程序員有時(shí)故意用非零常量作為控制表達(dá)式來(lái)構(gòu)造無(wú)限循環(huán):while (1) 除非循環(huán)體含有跳出循環(huán)控制的語(yǔ)句(break, goto, return)或調(diào)用了導(dǎo)致程序終止的函數(shù),否則上述這種形式的while語(yǔ)句將永遠(yuǎn)執(zhí)行下去。11程序square.c用一個(gè)while語(yǔ)句顯示平方值表格。用戶指定平方值表格的行數(shù):This p
5、rogram prints a table of squares.Enter number of entries in table: 5 1 1 2 4 3 9 4 16 5 2512square.c /* Prints a table of squares using a while statement */ #include int main(void) int i, n; printf(This program prints a table of squares.n); printf(Enter number of entries in table: ); scanf(%d, &
6、n); i = 1; while (i = n) printf(%10d%10dn, i, i * i); i+; return 0;13程序sum.c 對(duì)用戶輸入的整數(shù)數(shù)列求和:This program sums a series of integers.Enter integers (0 to terminate): 8 23 71 5 0The sum is: 107程序需要使用循環(huán),循環(huán)采用scanf函數(shù)讀取用戶輸入數(shù),然后再把這個(gè)數(shù)加到運(yùn)算的總和中。14sum.c /* Sums a series of numbers */ #include int main(void) int n
7、, sum = 0; printf(This program sums a series of integers.n); printf(Enter integers (0 to terminate): ); scanf(%d, &n); while (n != 0) sum += n; scanf(%d, &n); printf(The sum is: %dn, sum); return 0;運(yùn)行結(jié)果:運(yùn)行結(jié)果:505050501001nn1001nn(1)循環(huán)體如果包含一個(gè)以上的語(yǔ)句,應(yīng)該用花括弧括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn).(2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句。 運(yùn)行結(jié)
8、果:運(yùn)行結(jié)果:5050505017do語(yǔ)句的一般格式如下:do 語(yǔ)句語(yǔ)句 while ( 表達(dá)式表達(dá)式 ) ;執(zhí)行do語(yǔ)句時(shí),先執(zhí)行循環(huán)體,再計(jì)算控制表達(dá)式的值。如果表達(dá)式的值非零,那么再次執(zhí)行循環(huán)體,然后再次計(jì)算表達(dá)式的值。18使用do語(yǔ)句重寫(xiě)前面的“倒數(shù)計(jì)數(shù)”程序:i = 10;do printf(T minus %d and countingn, i); -i; while (i 0);do語(yǔ)句和while語(yǔ)句沒(méi)有本質(zhì)的區(qū)別。唯一的不同在于do語(yǔ)句的循環(huán)體至少會(huì)被執(zhí)行一次。19最好對(duì)所有的do語(yǔ)句都使用大括號(hào)包括循環(huán)體,因?yàn)闆](méi)有大括號(hào)的do語(yǔ)句很容易被誤認(rèn)為是while語(yǔ)句:do pri
9、ntf(T minus %d and countingn, i-);while (i 0);粗心的讀者可能會(huì)把單詞while誤認(rèn)為是while語(yǔ)句的開(kāi)始。while(i=100)while(i=100)運(yùn)行結(jié)果:運(yùn)行結(jié)果:505050501001nn運(yùn)行結(jié)果:運(yùn)行結(jié)果:505050501001nn22程序numdigits.c 計(jì)算用戶輸入的整數(shù)的位數(shù):Enter a nonnegative integer: 60The number has 2 digit(s).方法是將將用戶輸入的整數(shù)反復(fù)除以10,直到結(jié)果變?yōu)?,除的次數(shù)就是用戶輸入整數(shù)的位數(shù)。do語(yǔ)句比while語(yǔ)句更適合,因?yàn)槊總€(gè)整數(shù)
10、,即便是0都至少有一位數(shù)字。23numdigits.c /* Calculates the number of digits in an integer */ #include int main(void) int digits = 0, n; printf(Enter a nonnegative integer: ); scanf(%d, &n); do n /= 10; digits+; while (n 0); printf(The number has %d digit(s).n, digits); return 0;24for語(yǔ)句適合應(yīng)用在使用“計(jì)數(shù)”變量的循環(huán)中,然而它也靈
11、活用于許多其他類(lèi)型的循環(huán)中。for語(yǔ)句的一般格式如下:for ( 表達(dá)式1; 表達(dá)式2; 表達(dá)式3 ) 語(yǔ)句表達(dá)式1、表達(dá)式2和表達(dá)式3全都是表達(dá)式。示例:for (i = 10; i 0; i-) printf(T minus %d and countingn, i);25for語(yǔ)句的執(zhí)行流程for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句;26for語(yǔ)句和while語(yǔ)句關(guān)系緊密。 除了極少數(shù)情況,for循環(huán)總可以等價(jià)替換為while循環(huán):表達(dá)式表達(dá)式1;while ( 表達(dá)式表達(dá)式2 ) 語(yǔ)句語(yǔ)句 表達(dá)式表達(dá)式3;表達(dá)式1是在循環(huán)開(kāi)始執(zhí)行前,只執(zhí)行一次的初始化步驟。27表達(dá)式2控制用于控制循環(huán)
12、的終止(循環(huán)持續(xù)執(zhí)行,只要表達(dá)式2的值非零)。表達(dá)式3是在每次循環(huán)的最后被執(zhí)行的一個(gè)操作。按照這種模式,上面的for循環(huán)可以改寫(xiě)為如下的while循環(huán):i = 10;while (i 0) printf(T minus %d and countingn, i); i-;28研究等價(jià)的while語(yǔ)句有助于更好地理解for語(yǔ)句。例如,假設(shè)把先前for循環(huán)示例中的i-替換為-i:for (i = 10; i 0; -i) printf(T minus %d and countingn, i);等價(jià)的while循環(huán)顯示上述的替換對(duì)循環(huán)沒(méi)有任何影響:i = 10;while (i 0) printf(T
13、 minus %d and countingn, i); -i;29由于for語(yǔ)句中的第一和第三表達(dá)式都是以語(yǔ)句的方式執(zhí)行的,所以它們的值互不相關(guān)它們有用僅僅是因?yàn)橛懈弊饔谩?所以,這兩個(gè)表達(dá)式常常是賦值表達(dá)式或自增/自減表達(dá)式。30for語(yǔ)句對(duì)于“向上加”(變量自增)或“向下減”(變量自減)的循環(huán)來(lái)說(shuō)是最好的選擇。對(duì)于向上加或向下減共有n次的情況,for語(yǔ)句經(jīng)常會(huì)采用下列形式中的一種。從從0向上加到向上加到n1:for (i = 0; i n; i+) 從從1向上加到向上加到n:for (i = 1; i = 0; i-) 從從n向下減到向下減到1:for (i = n; i 0; i-)
14、31常見(jiàn)語(yǔ)句錯(cuò)誤: 在控制表達(dá)式中用 (反之亦然)?!跋蛏霞印笔褂没蚧?運(yùn)算符。 在控制表達(dá)式中使用=代替, , 或=。 編寫(xiě)的控制表達(dá)式用i=n代替i 0; -i) printf(T minus %d and countingn, i);如果省略第三個(gè)表達(dá)式,那么循環(huán)體需確保第二個(gè)表達(dá)式的值最終會(huì)變?yōu)榧伲篺or (i = 10; i 0;) printf(T minus %d and countingn, i-);33當(dāng)?shù)谝缓偷谌磉_(dá)式都省略時(shí),for循環(huán)與while循環(huán)沒(méi)有任何區(qū)別:for (; i 0;) printf(T minus %d and countingn, i-);等價(jià)于w
15、hile (i 0) printf(T minus %d and countingn, i-);while語(yǔ)句的形式更清楚,因此更可取。34如果省略第二個(gè)表達(dá)式,那么它默認(rèn)為真,因此for語(yǔ)句不會(huì)終止(除非以某種其他形式停止)。 例如:某些程序員用下列的for語(yǔ)句建立無(wú)限循環(huán):for (;) 35C99中,for語(yǔ)句的第一個(gè)表達(dá)式能被替換為一個(gè)聲明(定義)。 這個(gè)特性允許程序員在for循環(huán)中定義變量:for (int i = 0; i n; i+) 這樣,變量i不需要在for循環(huán)前定義。 36在for語(yǔ)句中定義的變量不能在循環(huán)體外訪問(wèn),即在循環(huán)外不可見(jiàn)):for (int i = 0; i n
16、; i+) printf(%d, i); /* legal; i is visible inside loop */ printf(%d, i); /* WRONG */37讓for語(yǔ)句定義自己的循環(huán)控制變量通常是個(gè)好的做法,方便且讓程序易于理解。 當(dāng)然,如果程序需要在循環(huán)結(jié)束后訪問(wèn)這樣的變量,那么就需要采用for語(yǔ)句常規(guī)的方式。for語(yǔ)句可以定義多個(gè)相同類(lèi)型的變量:for (int i = 0, j = 0; i n; i+ +) 38有時(shí),for語(yǔ)句可能需要多個(gè)初始表達(dá)式,或在每次循環(huán)時(shí)一次對(duì)幾個(gè)變量進(jìn)行自增(減)操作??梢栽趂or語(yǔ)句的第一和第三表達(dá)式中使用逗號(hào)表達(dá)式實(shí)現(xiàn)這些想法。逗號(hào)表
17、達(dá)式具有如下形式:表達(dá)式1, 表達(dá)式2這里表達(dá)式1和表達(dá)式2可以是任意兩個(gè)表達(dá)式。 39逗號(hào)表達(dá)式的計(jì)算分兩步實(shí)現(xiàn): 第一,計(jì)算表達(dá)式1并丟棄計(jì)算結(jié)果。 第二,計(jì)算表達(dá)式2并將計(jì)算結(jié)果作為整個(gè)逗號(hào)表達(dá)式的結(jié)果。計(jì)算表達(dá)式1始終是有意義的。當(dāng)計(jì)算逗號(hào)表達(dá)式+i, i + j, i先自增,然后計(jì)算i + j 假設(shè),變量i和j的值分別為1和5,那么上面逗號(hào)表達(dá)式的值為7,而i的值將自增為2。40逗號(hào)運(yùn)算符是左結(jié)合性的,所以編譯器把下列表達(dá)式:i = 1, j = 2, k = i + j解釋為:(i = 1), (j = 2), (k = (i + j)即左邊的操作先于右邊的執(zhí)行,這樣表達(dá)式i =
18、1, j = 2, 和k = i + j 將從左到右執(zhí)行。41逗號(hào)運(yùn)算符允許將兩個(gè)或多個(gè)表達(dá)式黏貼成一個(gè)表達(dá)式。在后面章節(jié)中我們會(huì)看到某些定義將從逗號(hào)運(yùn)算符中受益。for語(yǔ)句是唯一除上述之外還可以發(fā)現(xiàn)逗號(hào)運(yùn)算符的地方。 例如:for (sum = 0, i = 1; i = N; i+) sum += i;利用附加的逗號(hào)運(yùn)算符,for語(yǔ)句可以初始化兩個(gè)及以上的變量。42程序square.c(Section 6.1)可以通過(guò)將while循環(huán)轉(zhuǎn)化為for循環(huán)的方式進(jìn)行改進(jìn):43square2.c /* Prints a table of squares using a for statement
19、*/ #include int main(void) int i, n; printf(This program prints a table of squares.n); printf(Enter number of entries in table: ); scanf(%d, &n); for (i = 1; i = n; i+) printf(%10d%10dn, i, i * i); return 0;44C語(yǔ)言對(duì)控制循環(huán)行為的三個(gè)表達(dá)式?jīng)]有加任何限制。 雖然這些表達(dá)式通常對(duì)同一個(gè)變量進(jìn)行初始化、判定和更新,但是不要求它們之間以任何方式進(jìn)行相互關(guān)聯(lián)。程序square3.c 等價(jià)
20、于square2.c,但是包含一個(gè)for語(yǔ)句,它初始化一個(gè)變量(square), 判定另一個(gè)變量(i), 并對(duì)第三個(gè)變量(odd)進(jìn)行自增操作。 for語(yǔ)句這種極大的靈活性有時(shí)是十分有用的,但是原始的程序無(wú)疑更加清晰。45square3.c /* Prints a table of squares using an odd method */ #include int main(void) int i, n, odd, square; printf(This program prints a table of squares.n); printf(Enter number of entries
21、 in table: ); scanf(%d, &n); i = 1; odd = 3; for (square = 1; i = n; odd += 2) printf(%10d%10dn, i, square); +i; square += odd; return 0;46通常循環(huán)的退出點(diǎn)是在while或for循環(huán)體之前,或do循環(huán)體之后。使用break語(yǔ)句可以在循環(huán)體中間設(shè)置退出點(diǎn),甚至設(shè)置多個(gè)退出點(diǎn)。47break語(yǔ)句能夠把程序控制從switch語(yǔ)句中轉(zhuǎn)移出來(lái),而且還可以用于跳出while、do或for循環(huán)??梢跃帉?xiě)一個(gè)循環(huán)用于測(cè)試一個(gè)數(shù)是否是素?cái)?shù),只要發(fā)現(xiàn)一個(gè)約數(shù)就用brea
22、k語(yǔ)句終止循環(huán):for (d = 2; d n; d+) if (n % d = 0) break;48在循環(huán)終止后,可以用if語(yǔ)句來(lái)確定是提前終止(即n不是素?cái)?shù))還是正常終止(n是素?cái)?shù)):if (d n) printf(%d is divisible by %dn, n, d);else printf(%d is primen, n);49break語(yǔ)句特別適合退出點(diǎn)在循環(huán)體中間,而不是循環(huán)體之前或之后的循環(huán)。 例如,用于讀入用戶輸入并且在遇到特殊輸入值時(shí)終止的循環(huán):for (;) printf(Enter a number (enter 0 to stop): ); scanf(%d, &
23、amp;n); if (n = 0) break; printf(%d cubed is %dn, n, n * n * n);50break語(yǔ)句把程序控制從最內(nèi)層封閉的while、do、for或switch語(yǔ)句中轉(zhuǎn)移出來(lái)。 當(dāng)這些語(yǔ)句出現(xiàn)嵌套時(shí),break語(yǔ)句只能跳出一層嵌套:while () switch () break; break語(yǔ)句從語(yǔ)句從switch語(yǔ)句中轉(zhuǎn)移出程序控制,但沒(méi)有從語(yǔ)句中轉(zhuǎn)移出程序控制,但沒(méi)有從while循環(huán)中轉(zhuǎn)移出來(lái)。循環(huán)中轉(zhuǎn)移出來(lái)。51continue語(yǔ)句與break語(yǔ)句類(lèi)似: break語(yǔ)句把程序控制轉(zhuǎn)出循環(huán)體。 continue語(yǔ)句把程序控制轉(zhuǎn)移到循環(huán)體結(jié)束
24、之前的一點(diǎn)。 break語(yǔ)句使程序控制跳出循環(huán),continue語(yǔ)句把程序控制留在循環(huán)體內(nèi)。break語(yǔ)句和continue語(yǔ)句的另一個(gè)區(qū)別:break語(yǔ)句可以在用于switch語(yǔ)句和循環(huán)中,而continue語(yǔ)句則只能用在循環(huán)中。52使用使用continue語(yǔ)句語(yǔ)句的循環(huán)示例:的循環(huán)示例:n = 0;sum = 0;while (n 10) scanf(%d, &i); if (i = 0) continue; sum += i; n+; /* continue jumps to here */53不用continue語(yǔ)句的相同循環(huán)示例:n = 0;sum = 0;while (n
25、10) scanf(%d, &i); if (i != 0) sum += i; n+; 1001nn當(dāng)n能被3整除時(shí),執(zhí)行continue語(yǔ)句,結(jié)束本次循環(huán)(即跳過(guò)printf函數(shù)語(yǔ)句),只有n不能被3整除時(shí)才執(zhí)行printf函數(shù)。1001nn當(dāng)n能被3整除時(shí),執(zhí)行continue語(yǔ)句,結(jié)束本次循環(huán)(即跳過(guò)printf函數(shù)語(yǔ)句),只有n不能被3整除時(shí)才執(zhí)行printf函數(shù)。56goto語(yǔ)句語(yǔ)句能跳轉(zhuǎn)到函數(shù)中任何有標(biāo)號(hào)的語(yǔ)句處。能跳轉(zhuǎn)到函數(shù)中任何有標(biāo)號(hào)的語(yǔ)句處。標(biāo)號(hào)是放置在語(yǔ)句開(kāi)始處的標(biāo)識(shí)符:標(biāo)識(shí)符:語(yǔ)句一條語(yǔ)句可以有多個(gè)標(biāo)號(hào)。 goto語(yǔ)句語(yǔ)句格式如下:格式如下:goto 標(biāo)識(shí)符;執(zhí)
26、行語(yǔ)句語(yǔ)句 goto L,把程序控制轉(zhuǎn)移到標(biāo)號(hào)L后的語(yǔ)句上, 轉(zhuǎn)移目標(biāo)語(yǔ)句必須與goto語(yǔ)句在同一個(gè)函數(shù)中。57如果C語(yǔ)言沒(méi)有break語(yǔ)句,goto語(yǔ)句可以用于退出循環(huán):for (d = 2; d n; d+) if (n % d = 0) goto done;done: if (d n) printf(%d is divisible by %dn, n, d);else printf(%d is primen, n);58goto語(yǔ)句語(yǔ)句在日常的在日常的C語(yǔ)言編程中很少用到。語(yǔ)言編程中很少用到。break、continue和return 等語(yǔ)句本質(zhì)上都是受限制的goto語(yǔ)句語(yǔ)句,它們和,它
27、們和exit函數(shù)一起足夠應(yīng)付函數(shù)一起足夠應(yīng)付其他編程語(yǔ)言中大多數(shù)其他編程語(yǔ)言中大多數(shù)goto語(yǔ)句語(yǔ)句的情況。的情況。盡管如此,goto語(yǔ)句偶爾還是很有用的。59考慮從包含switch語(yǔ)句的循環(huán)中退出的問(wèn)題。 break語(yǔ)句不會(huì)產(chǎn)生期望的效果:它可以跳出switch語(yǔ)句,但是無(wú)法跳出循環(huán)。 goto語(yǔ)句語(yǔ)句可以解決這個(gè)問(wèn)題:可以解決這個(gè)問(wèn)題:while () switch () goto loop_done; /* break wont work here */ loop_done: goto語(yǔ)句在需要從嵌套的多層循環(huán)中轉(zhuǎn)出時(shí)還是很語(yǔ)句在需要從嵌套的多層循環(huán)中轉(zhuǎn)出時(shí)還是很有用。有用。 1001n
28、n這里用的是“當(dāng)型”循環(huán)結(jié)構(gòu),當(dāng)滿足“i=100” 時(shí)執(zhí)行花括弧內(nèi)的循環(huán)體。 運(yùn)行結(jié)果:運(yùn)行結(jié)果:5050505061許多簡(jiǎn)單的交互式程序都是基于菜單的,它們向用戶顯示可供選擇的命令列表。一旦用戶選擇了某條命令,程序就執(zhí)行相應(yīng)的操作,然后提示用戶輸入下一條命令。這個(gè)過(guò)程一直會(huì)持續(xù)到用戶選擇“退出”或“停止”命令。這類(lèi)程序的核心顯然是循環(huán)。for (;) 提示用戶輸入命令; 讀入命令; 執(zhí)行命令;62執(zhí)行這個(gè)命令將需要switch語(yǔ)句(或級(jí)聯(lián)式if語(yǔ)句)for (;) 提示用戶輸入命令; 讀入命令; switch (command) case 命令1: 執(zhí)行操作1; break; case 命令
29、2: 執(zhí)行操作2; break; . . . case 命令n: 執(zhí)行操作n; break; default: 顯示錯(cuò)誤信息; break; 63程序checking.c用這種循環(huán)來(lái)維護(hù)賬本的余額程序?qū)橛脩籼峁┻x擇菜單:刷新帳戶余額,往帳戶上存錢(qián),從帳戶上取錢(qián),顯示當(dāng)前余額,退出程序。64* ACME checkbook-balancing program *Commands: 0=clear, 1=credit, 2=debit, 3=balance, 4=exit Enter command: 1Enter amount of credit: 1042.56Enter command:
30、2Enter amount of debit: 133.79Enter command: 1Enter amount of credit: 1754.32Enter command: 2Enter amount of debit: 1400Enter command: 2Enter amount of debit: 68Enter command: 2Enter amount of debit: 50Enter command: 3Current balance: $1145.09Enter command: 465checking.c /* Balances a checkbook */ #
31、include int main(void) int cmd; float balance = 0.0f, credit, debit; printf(* ACME checkbook-balancing program *n); printf(Commands: 0=clear, 1=credit, 2=debit, ); printf(3=balance, 4=exitnn); for (;) printf(Enter command: ); scanf(%d, &cmd); switch (cmd) case 0: balance = 0.0f; break;66 case 1:
32、 printf(Enter amount of credit: ); scanf(%f, &credit); balance += credit; break; case 2: printf(Enter amount of debit: ); scanf(%f, &debit); balance -= debit; break; case 3: printf(Current balance: $%.2fn, balance); break; case 4: return 0; default: printf(Commands: 0=clear, 1=credit, 2=debi
33、t, ); printf(3=balance, 4=exitnn); break; 67語(yǔ)句可以為空,即除了末尾的分號(hào)外什么符號(hào)也沒(méi)有。 下面一行代碼包含三條語(yǔ)句:i = 0; ; j = 1;空語(yǔ)句主要有一個(gè)好處:編寫(xiě)空循環(huán)體的循環(huán)。 68考慮下面尋找素?cái)?shù)的循環(huán):for (d = 2; d n; d+) if (n % d = 0) break;如果把條件n % d = 0移到循環(huán)控制表達(dá)式中,那么循環(huán)體將會(huì)為空:for (d = 2; d 0); /* WRONG */ printf(T minus %d and countingn, i); -i;while圓括號(hào)后多余的分號(hào)(空語(yǔ)句)造
34、成無(wú)限循環(huán)。 70例3:i = 11;while (-i 0); /* WRONG */ printf(T minus %d and countingn, i);循環(huán)體在循環(huán)終止后只執(zhí)行一次;顯示信息如下:循環(huán)體在循環(huán)終止后只執(zhí)行一次;顯示信息如下:T minus 0 and counting例4:for (i = 10; i 0; i-); /* WRONG */ printf(T minus %d and countingn, i);同樣,循環(huán)體只執(zhí)行一次,并顯示相同的信息。 一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu) 稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套 循環(huán),這就是多層循環(huán)。 三種循環(huán)(
35、while循環(huán)、do-while循環(huán)和for循 環(huán))可以互相嵌套。 下面幾種都是合法的形式:(1) while( ) (2) do (3) for(;) while( ) do for(;) while( ); while( ); (4) while( ) (5) for(;) (6) do do while( ) for(;) while( ) while( ) 循環(huán)嵌套中,每層循環(huán)的進(jìn)行都有相應(yīng)的控制機(jī)制(比如循環(huán)變量)。但是在某一層x中,可能會(huì)使用甚至改變另一層使用甚至改變另一層y的控制機(jī)制(比如在x層中引用甚至修改y層的循環(huán)變量的值),這是造成多層循環(huán)難以理解的重要原因。例:int m
36、ain()int i,k,s=0;for(i=1;i=10;i+)for(k=1;k=i;k+)s+=k;printf(%d,s);此程序的作用是什么?打印的結(jié)果是?例:int main()int i,k,s=0;for(i=1;i=10;i+)for(k=1;k=i;k+)if(k%2=0) i+;s+=k;printf(%d,s);此程序的作用是什么?打印的結(jié)果是?例:使用循環(huán),在屏幕上打印如下圖案: * * * * * *效果:分析:1. 將圖形放入笛卡爾坐標(biāo)系(即建模) * * * * * * * * * * * *坐標(biāo)平移2. 得到數(shù)學(xué)模型: 0123456-1-2-3-4-5-6打印空格打印空格打印空格打印空格打印星號(hào)3. 用數(shù)學(xué)不等式來(lái)描述打印星號(hào)區(qū)域:(1)寫(xiě)出四條邊線的方程(也可先不平移坐標(biāo),寫(xiě)出原方程后再平移):(x-3)+(y+3)=3, -(x-3)+(y+3)=3,-(x-3)-
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45572-2025航空航天用帶肋十字槽
- 材料力學(xué)與智能材料性能評(píng)估重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)
- 材料疲勞斷裂機(jī)理誤差分析重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)
- 火災(zāi)風(fēng)險(xiǎn)應(yīng)急預(yù)案演練記錄(3篇)
- 行政法學(xué)的現(xiàn)實(shí)意義探討試題及答案
- 風(fēng)險(xiǎn)管理在項(xiàng)目中的應(yīng)用試題及答案
- 戰(zhàn)略管理中的團(tuán)隊(duì)合作試題及答案
- 行政法學(xué)學(xué)術(shù)研究試題與答案分享
- 2025年軟件水平考試試題及答案的更新
- 2025年編程與科技的融合發(fā)展趨勢(shì)試題及答案
- 2025湖北省安全員-B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 2025年中國(guó)科技成果轉(zhuǎn)化服務(wù)行業(yè)市場(chǎng)集中度、企業(yè)競(jìng)爭(zhēng)格局分析報(bào)告-智研咨詢發(fā)布
- 第16課《有為有不為》公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 體育賽事經(jīng)濟(jì)影響評(píng)估模型-深度研究
- 2025年上海奉賢區(qū)社區(qū)工作者及事業(yè)單位招聘177人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 小學(xué)一年級(jí)奧數(shù)經(jīng)典100試題(五篇)
- 2025年中國(guó)消防救援學(xué)院第二批面向應(yīng)屆畢業(yè)生招聘28人歷年管理單位筆試遴選500模擬題附帶答案詳解
- T-CIRA 46-2023 核電廠液態(tài)流出物中鍶89和鍶90分析 液體閃爍法
- 介入手術(shù)室感染控制管理
- 1學(xué)會(huì)尊重-尊重自己(說(shuō)課稿 )-2023-2024學(xué)年道德與法治六年級(jí)下冊(cè)統(tǒng)編版
- 會(huì)計(jì)案例分析-終結(jié)性考核-國(guó)開(kāi)(SC)-參考資料
評(píng)論
0/150
提交評(píng)論