第3章 程序設(shè)計(jì)語句 (加動畫16:9)_第1頁
第3章 程序設(shè)計(jì)語句 (加動畫16:9)_第2頁
第3章 程序設(shè)計(jì)語句 (加動畫16:9)_第3頁
第3章 程序設(shè)計(jì)語句 (加動畫16:9)_第4頁
第3章 程序設(shè)計(jì)語句 (加動畫16:9)_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第3章程序設(shè)計(jì)語句

3.3循環(huán)結(jié)構(gòu)3.4break、continue和goto語句3.5程序案例本章小結(jié)學(xué)生自我完善練習(xí)目錄3.1程序的語句與結(jié)構(gòu)3.2選擇結(jié)構(gòu)3.1程序的語句與結(jié)構(gòu)語句是完成一定任務(wù)的命令,語句書寫格式是以分號(;)作為結(jié)束符。和其他高級語言一樣,C語言的語句用來向計(jì)算機(jī)系統(tǒng)發(fā)出操作指令。C語言的語句可分為5種類型,下面分別作以介紹。1.表達(dá)式語句由一個表達(dá)式加一個分號構(gòu)成。表達(dá)式語句一般形式如下:表達(dá)式;執(zhí)行表達(dá)式語句就是計(jì)算表達(dá)式的值。例如:賦值表達(dá)式+分號=賦值語句注意沒有分號不能稱為語句。3.1.1程序的語句3.1程序的語句與結(jié)構(gòu)2.函數(shù)調(diào)用語句由一個函數(shù)調(diào)用加上一個分號構(gòu)成函數(shù)調(diào)用語句,其作用是調(diào)用函數(shù)體并把實(shí)際參數(shù)賦給函數(shù)定義中的形式參數(shù),然后執(zhí)行被調(diào)用函數(shù)體中的語句,求取函數(shù)值。其一般形式為:例如:printf(“Hello,BoysandGirls!”); /*調(diào)用庫函數(shù),輸出字符串*/函數(shù)名(實(shí)際參數(shù));3.1.1程序的語句3.1程序的語句與結(jié)構(gòu)3.控制語句控制語句完成一定的控制功能,以實(shí)現(xiàn)程序的結(jié)構(gòu)化。C語言有9種控制語句,可分為以下3類:(1)條件判斷語句(2)循環(huán)語句if()…else…

(二選一的分支語句)switch (多選一的分支語句)while()… (當(dāng)型循環(huán)語句)do…while() (直到循環(huán)語句)for()… (結(jié)構(gòu)化的當(dāng)型循環(huán))3.1.1程序的語句3.1程序的語句與結(jié)構(gòu)3.控制語句(3)流程轉(zhuǎn)向語句4.復(fù)合語句復(fù)合語句是把一組語句用一對花括號“{}”括起來,又稱為分程序。形式上是幾條語句,但在語法上相當(dāng)于是一條語句。5.空語句只有一個分號的語句,即“;”,空語句是什么也不執(zhí)行的語句。在有的循環(huán)中,循環(huán)體什么都不做,就用空語句來表示。break(跳出語句,終止執(zhí)行switch或循環(huán))continue(提前結(jié)束本次循環(huán)語句)goto(無條件轉(zhuǎn)向語句)return(函數(shù)返回語句)3.1.1程序的語句3.1程序的語句與結(jié)構(gòu)即一個C程序可以由若干個源程序文件組成,每個源程序可以由若干個函數(shù)組成。C語言程序結(jié)構(gòu)如圖3-1所示。圖3-1C語言程序結(jié)構(gòu)3.1.2程序的結(jié)構(gòu)3.1程序的語句與結(jié)構(gòu)【案例3-1】從鍵盤輸入兩個整數(shù),求這兩個整數(shù)的差。單擊打開源程序程序運(yùn)行結(jié)果3.1.2程序的結(jié)構(gòu)3.1程序的語句與結(jié)構(gòu)在C語言中,程序結(jié)構(gòu)一般分為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。任何復(fù)雜的程序都是由這三種基本結(jié)構(gòu)組成。(1)順序結(jié)構(gòu):從流程上是從前向后順序執(zhí)行。(2)選擇結(jié)構(gòu):根據(jù)判斷條件的結(jié)果有選擇地執(zhí)行。(3)循環(huán)結(jié)構(gòu):有條件地重復(fù)執(zhí)行某一過程。3.1.2程序的結(jié)構(gòu)圖3-2C語言程序函數(shù)內(nèi)語句結(jié)構(gòu)3.1程序的語句與結(jié)構(gòu)1.確定該程序所用的各個變量及其數(shù)據(jù)類型。2.確定算法。該步驟是最重要的,本章學(xué)習(xí)的各種結(jié)構(gòu)就是實(shí)現(xiàn)編寫程序算法的基礎(chǔ)。3.開始編寫程序(主函數(shù)中結(jié)構(gòu))。(1)定義各變量。(2)輸出提示信息。(3)輸入各變量的初始值。(4)編寫實(shí)現(xiàn)功能的算法語句。(5)輸出結(jié)果變量的值。4.調(diào)試運(yùn)行程序。某一函數(shù)內(nèi)的語句結(jié)構(gòu)通常如圖3-2所示。3.1.3如何設(shè)計(jì)C語言程序3.1程序的語句與結(jié)構(gòu)所謂順序結(jié)構(gòu),就是指按照語句在程序中的先后次序一條一條地順次執(zhí)行。順序結(jié)構(gòu)是最簡單、最基本的結(jié)構(gòu)。其特點(diǎn)是程序運(yùn)行時按語句書寫的次序依次執(zhí)行。【案例3-2】從鍵盤輸入兩個整數(shù),交換這兩個整數(shù)并輸出。單擊打開源程序程序運(yùn)行結(jié)果3.1.4順序結(jié)構(gòu)3.2選擇結(jié)構(gòu)在C語言中,使用if語句和switch語句來進(jìn)行實(shí)現(xiàn)。

常用的if定義格式有單分支if語句、雙分支if語句和復(fù)合if語句三種。1.單分支if語句單分支if語句定義格式如下:if(表達(dá)式)

語句3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)其含義是:如果表達(dá)式的值為真,則執(zhí)行其后的語句,否則不執(zhí)行該語句。其過程如圖3-6所示。圖3-6單分支if語句的流程示意圖3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)【案例3-3】輸入兩個整數(shù),判斷兩數(shù)大小,并在第一個數(shù)中存放這兩個數(shù)的較大值,輸出這兩個數(shù)。單擊打開源程序程序運(yùn)行結(jié)果程序運(yùn)行時,輸入37<回車>,則運(yùn)行結(jié)果如下左圖所示。若輸入73<回車>,則運(yùn)行結(jié)果如下右圖所示。3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)說明:(1)if語句自動結(jié)合跟在其后面的一個語句,當(dāng)滿足條件需要執(zhí)行多個語句時,應(yīng)用一對大括號{}將需要執(zhí)行的多個語句括起,形成一個復(fù)合語句。(2)if語句中表達(dá)式形式很靈活,可以是常量、變量、任何類型表達(dá)式、函數(shù)、指針等。只要表達(dá)式的值為非零值,條件就為真,反之條件為假。3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)2.雙分支if語句雙分支if語句定義格式如下:其含義是:如果表達(dá)式的值為真(非0),則執(zhí)行其后的語句1,否則執(zhí)行語句2。其過程如圖3-7所示。if(表達(dá)式)語句1else語句2圖3-7雙分支if語句的流程示意圖3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)說明:(1)if后面圓括號中的表達(dá)式,可以是任意合法的C語言表達(dá)式(如邏輯表達(dá)式、關(guān)系表達(dá)式、算術(shù)表達(dá)式、賦值表達(dá)式等),也可以是任意類型的數(shù)據(jù)(如整型、實(shí)型、字符型等)。(2)無論是否有else子句,if子句中如果只有一條語句,則此語句后的分號不能省略。若if子句中有多條語句,則應(yīng)將這些語句用花括號括起,形成一條復(fù)合語句。3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)【案例3-4】從鍵盤輸入一個學(xué)生成績(浮點(diǎn)數(shù),值在0-100之間),若該值大于等于60,則輸出該學(xué)生成績?yōu)榧案瘢駝t輸出該學(xué)生成績不及格。單擊打開源程序程序運(yùn)行結(jié)果程序運(yùn)行時,輸入分?jǐn)?shù)88<回車>,則運(yùn)行結(jié)果如下左圖所示。若輸入分?jǐn)?shù)37<回車>,則運(yùn)行結(jié)果如下右圖所示。3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)3.if語句的嵌套if和else子句中可以是任意合法的C語句,也可以是if語句,通常稱此為嵌套的if

語句。內(nèi)嵌的if語句既可以嵌套在if子句中,也可以嵌套在else子句中。(1)在if子句中嵌套具有else子句的if語句。語句形式如下:if(表達(dá)式1)

if(表達(dá)式2)語句1

else語句2else

語句3當(dāng)表達(dá)式1的值為非0時,執(zhí)行內(nèi)嵌的if-else語句;當(dāng)表達(dá)式1的值為0時,執(zhí)行語句3。3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)(2)在if子句中嵌套不含else子句的if語句。語句形式如下:if(表達(dá)式1){if(表達(dá)式2)語句1}else

語句2注意:此if子句中的一對花括號不可缺少,表示第二個if是第一個if的執(zhí)行語句。3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)(3)在else子句中嵌套具有else子句的if語句。嵌套的if語句帶有else,語句形式如下:

if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2else語句3此時第二個if語句作為第一個if表達(dá)式1不成立時的執(zhí)行語句。當(dāng)表達(dá)式2成立時執(zhí)行語句2,不成立時執(zhí)行語句3。3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)(4)在else子句中嵌套不含else子句的if語句。嵌套的if語句不帶else,語句形式如下:if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2此時第二個if語句作為第一個if表達(dá)式1不成立時的執(zhí)行語句。當(dāng)表達(dá)式2成立時執(zhí)行語句2,不成立時什么都不執(zhí)行。3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)4.復(fù)合if語句復(fù)合if語句的形式如下:虛線方框提示該部分可以看作是上一級else的一條語句。執(zhí)行過程:從上向下逐行對if后的表達(dá)式進(jìn)行檢測。當(dāng)某一個表達(dá)式的值為非零時,就執(zhí)行與此有關(guān)子句中的語句,階梯形中的其余部分被越過去。如果所有表達(dá)式的值都為零,則執(zhí)行最后的else子句。此時,如果程序中最內(nèi)層的if語句沒有else子句,即沒有最后的那個else子句,那么將不進(jìn)行任何操作。3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)復(fù)合if語句的流程圖如圖3-8所示。圖3-8復(fù)合if語句的流程圖3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)【案例3-5】設(shè)計(jì)一個程序,用復(fù)合if語句實(shí)現(xiàn)由鍵盤輸入一個成績,輸出該成績的等級。其中90~100分為優(yōu)秀,80~89分為良好,70~79分為中等,60~69分為及格,60分以下為不及格。如果成績不在0~100之間則輸出錯誤信息。單擊打開源程序程序運(yùn)行結(jié)果3.2.1條件語句——if語句3.2選擇結(jié)構(gòu)用if語句只能進(jìn)行兩路選擇,在實(shí)現(xiàn)多路選擇時須使用多個if語句,因此用if語句解決多路問題非常不方便,這時可利用switch語句實(shí)現(xiàn)多條件多分支程序設(shè)計(jì)。1.switch語句形式3.2.2開關(guān)語句——switch語句3.2選擇結(jié)構(gòu)2.switch語句的執(zhí)行過程

程序執(zhí)行至switch語句首先對括號內(nèi)的表達(dá)式進(jìn)行計(jì)算,然后按順序找出某個與常量值相匹配的case,以此作為入口,執(zhí)行case語句后面的各個語句組,直到遇到break或switch語句的右花括號終止語句。如果沒有任何一個case能與表達(dá)式值相匹配,則執(zhí)行default語句后的語句組,若default及其后語句組省略,則不執(zhí)行switch中任何語句組,而繼續(xù)執(zhí)行下面的程序。3.2.2開關(guān)語句——switch語句3.2選擇結(jié)構(gòu)3.使用switch語句應(yīng)注意的問題(1)default語句及其后面語句組可以省略。(2)switch后圓括號內(nèi)表達(dá)式可以是整數(shù)表達(dá)式、字符表達(dá)式或枚舉表達(dá)式。case后面是整數(shù)或字符,也可以是不含變量和函數(shù)的常量表達(dá)式。同一個switch語句中的case后面的值不能相同。(3)case及其后語句和default及其后語句出現(xiàn)次序可以任意。(4)case與其后的常量表達(dá)式之間要有空格,否則系統(tǒng)會識別不出該常量表達(dá)式。(5)執(zhí)行完一個case語句后,程序自動轉(zhuǎn)到后面的語句執(zhí)行,直到遇到break或switch語句的右花括號終止語句。3.2.2開關(guān)語句——switch語句3.2選擇結(jié)構(gòu)【案例3-6】設(shè)計(jì)一個程序,用switch語句實(shí)現(xiàn)由鍵盤輸入一個成績,輸出該成績的等級。其中90~100分為優(yōu)秀,80~89分為良好,70~79分為中等,60~69分為及格,60分以下為不及格。如果成績不在0~100之間則輸出錯誤信息。單擊打開源程序程序運(yùn)行結(jié)果3.2.2開關(guān)語句——switch語句3.3循環(huán)結(jié)構(gòu)廣義地說,為解決一個問題而采取的方法和步驟統(tǒng)稱為“算法”。下面舉一個最原始的例子。求1×2×3×4×5的結(jié)果??梢杂米钤嫉姆椒ㄟM(jìn)行求解:步驟1:先求1×2,得到結(jié)果2;步驟2:將步驟1的結(jié)果2乘以3,得到結(jié)果6;步驟3:將步驟2的結(jié)果6乘以4,得到結(jié)果24;步驟4:將步驟3的結(jié)果24乘以5,得到結(jié)果120。這個算法是正確的,但太煩瑣。如果要求1到100的自然數(shù)的乘積,要寫99個步驟,這顯然是不可取的。所以應(yīng)該另找一種方便實(shí)現(xiàn)的表示方法。3.3.1程序的設(shè)計(jì)過程3.3循環(huán)結(jié)構(gòu)因?yàn)镃語言中變量的值是可變的,所以考慮設(shè)置兩個變量,一個變量代表乘數(shù),一個變量代表被乘數(shù)。不另設(shè)變量,而直接將每一步驟的結(jié)果放在被乘數(shù)的變量中。例如,這里用s代表被乘數(shù),i為乘數(shù)。用循環(huán)算法來求解,可以將算法改為:步驟1:令s=1;步驟2:令i=2;步驟3:令s×i,乘積仍放在s中,可表示為:s*i→s;步驟4:使i的值增1,即i+1→i;步驟5:如果i的值不大于5,返回重新執(zhí)行步驟3及以后的步驟4和5;否則,算法結(jié)束。3.3.1程序的設(shè)計(jì)過程3.3循環(huán)結(jié)構(gòu)while循環(huán)是當(dāng)型循環(huán),先判斷循環(huán)條件,再根據(jù)條件決定是否執(zhí)行循環(huán)體。1.while語句形式while語句的一般格式為:若循環(huán)體內(nèi)需要多個語句,應(yīng)該用大括號括起來,組成復(fù)合語句。while語句流程圖如圖3-9所示。while(表達(dá)式)循環(huán)體語句3.3.2當(dāng)型循環(huán)——while循環(huán)3.3循環(huán)結(jié)構(gòu)2.while語句的執(zhí)行過程首先計(jì)算while后圓括號中表達(dá)式的值,當(dāng)值為非零時,執(zhí)行循環(huán)體語句,執(zhí)行完后再次判斷表達(dá)式的值,當(dāng)表達(dá)式的值為非零時,繼續(xù)執(zhí)行循環(huán)體;當(dāng)值為零時,退出循環(huán)。3.3.2當(dāng)型循環(huán)——while循環(huán)3.3循環(huán)結(jié)構(gòu)【案例3-7】設(shè)計(jì)一個程序,用while循環(huán)語句實(shí)現(xiàn)1~100自然數(shù)的和。程序設(shè)計(jì)思路如下。(1)定義變量sum和i,分別存放累計(jì)和及循環(huán)次數(shù)。(2)累計(jì)和變量sum賦初值0,循環(huán)次數(shù)i賦初值1。(3)while循環(huán)求和。先將i加到sum中,再將i自增1。反復(fù)執(zhí)行循環(huán)體,直到i大于100跳出循環(huán)。單擊打開源程序程序運(yùn)行結(jié)果3.3.2當(dāng)型循環(huán)——while循環(huán)3.3循環(huán)結(jié)構(gòu)1.do-While語句的基本形式2.do-while語句的執(zhí)行過程(1)執(zhí)行do后面循環(huán)體中的語句。

(2)計(jì)算while后圓括號中表達(dá)式的值。當(dāng)值為非零時,轉(zhuǎn)去執(zhí)行步驟(1);當(dāng)值為零時,結(jié)束do-while循環(huán)。do-while語句的流程圖如圖3-10所示。3.3.3直到型循環(huán)——do-while循環(huán)3.3循環(huán)結(jié)構(gòu)3.do-while語句與while語句的區(qū)別由do-while構(gòu)成的循環(huán)與while循環(huán)十分相似,它們之間的重要區(qū)別是:while循環(huán)控制條件出現(xiàn)在循環(huán)體之前,只有當(dāng)while后面表達(dá)式的值為非零時,才可能執(zhí)行循環(huán)體,所以while語句當(dāng)表達(dá)式初值就為假時,循環(huán)體一次都不執(zhí)行;在do-while構(gòu)成的循環(huán)中,總是先執(zhí)行一次循環(huán)體,然后再求表達(dá)式的值,因此,無論表達(dá)式的值是零還是非零,do-while循環(huán)體至少執(zhí)行一次。3.3.3直到型循環(huán)——do-while循環(huán)3.3循環(huán)結(jié)構(gòu)3.使用while語句注意的問題(1)循環(huán)體如果包含一個以上的語句,應(yīng)該用花括號括起來,以復(fù)合語句的形式出現(xiàn)。如果不用花括號,則while語句的范圍只到while后面第一個分號處。(2)在循環(huán)體中應(yīng)該有使循環(huán)趨向于結(jié)束的語句。如無此語句,循環(huán)將永不結(jié)束。(3)當(dāng)?shù)谝淮闻袛鄺l件就為假時,循環(huán)體一次都不執(zhí)行。3.3.3直到型循環(huán)——do-while循環(huán)3.3循環(huán)結(jié)構(gòu)【案例3-8】設(shè)計(jì)一個程序,用do-while循環(huán)語句實(shí)現(xiàn)1~100自然數(shù)的和。程序分析

參照案例3-7的思路,只需要修改程序的循環(huán)體就可以實(shí)現(xiàn)該程序。單擊打開源程序程序運(yùn)行結(jié)果3.3.3直到型循環(huán)——do-while循環(huán)3.3循環(huán)結(jié)構(gòu)1.for語句基本形式for是C語言的關(guān)鍵字,其后的圓括號中通常含有三個表達(dá)式,各表達(dá)式之間用“;”隔開。這三個表達(dá)式可以是任意形式的表達(dá)式,通常主要用于for循環(huán)的控制。緊跟在for之后的循環(huán)體語句,在語法上要求是一條語句;若在循環(huán)體內(nèi)需要多條語句,應(yīng)該用大括號括起來組成復(fù)合語句。for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體語句3.3.4格式化的當(dāng)型循環(huán)——for循環(huán)3.3循環(huán)結(jié)構(gòu)根據(jù)for語句的執(zhí)行特點(diǎn),可以表示成如下形式:2.for語句的執(zhí)行過程(1)執(zhí)行“循環(huán)變量賦初值”為循環(huán)體變量賦初值(注意,該語句在整個循環(huán)中只在開始時執(zhí)行一次)。(2)判斷“循環(huán)繼續(xù)條件”是否成立:若其值為非零,轉(zhuǎn)步驟(3);若其值為零,轉(zhuǎn)步驟(5)。(3)執(zhí)行一次for循環(huán)體語句。(4)執(zhí)行“循環(huán)變量增值”,轉(zhuǎn)向步驟(2)。(5)結(jié)束循環(huán),執(zhí)行for循環(huán)之后的語句。for(循環(huán)變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值)循環(huán)體語句3.3.4格式化的當(dāng)型循環(huán)——for循環(huán)3.3循環(huán)結(jié)構(gòu)3.for語句的使用說明(1)for語句中的表達(dá)式可以部分或全部省略,但兩個“;”不可省略,例如:for(;;)printf("*");三個表達(dá)式均省略,但因缺少條件判斷,循環(huán)將會無限制地執(zhí)行,而形成無限循環(huán)(通常稱為死循環(huán))。(2)for后括號中的表達(dá)式可以是任意有效的C語言表達(dá)式。例如:for(sum=0,i=1;i<=100;sum=sum+i,i++){…}其中表達(dá)式1和表達(dá)式3都是一個逗號表達(dá)式,在邏輯上被認(rèn)為是一條語句。3.3.4格式化的當(dāng)型循環(huán)——for循環(huán)3.3循環(huán)結(jié)構(gòu)【案例3-9】設(shè)計(jì)一個程序,用for循環(huán)語句實(shí)現(xiàn)1~100中所有奇數(shù)的和。程序分析1~100中所有奇數(shù)即1、3、5……設(shè)自變量為i,則i的初值為1,循環(huán)中下次的i值為i+2即可;單擊打開源程序程序運(yùn)行結(jié)果3.3.4格式化的當(dāng)型循環(huán)——for循環(huán)3.3循環(huán)結(jié)構(gòu)1.循環(huán)嵌套的形式若循環(huán)語句中的循環(huán)體內(nèi)又完整地包含另一個或多個循環(huán)語句,稱為循環(huán)嵌套。前面介紹的三種循環(huán)都可以相互嵌套。循環(huán)的嵌套可以多層,但每一層循環(huán)在邏輯上必須是完整的。例如,二層循環(huán)嵌套(又稱二重循環(huán))結(jié)構(gòu)如下:3.3.5循環(huán)的嵌套3.3循環(huán)結(jié)構(gòu)3.3.5循環(huán)的嵌套3.3循環(huán)結(jié)構(gòu)2.循環(huán)嵌套的執(zhí)行過程很多初接觸C語言的讀者會弄不清循環(huán)嵌套的執(zhí)行過程。實(shí)際上,C語言的循環(huán)嵌套有一個很簡單的執(zhí)行原則:外層循環(huán)執(zhí)行一次(等于某個值)時,內(nèi)層循環(huán)從初值到終值循環(huán)執(zhí)行一遍。例如:for(i=1;i<=3;i++)for(j=1;j<=5;j++)printf(“%d+%d=%d”,i,j,i+j);該循環(huán)嵌套外層變量i從1到3執(zhí)行3次,內(nèi)層變量j從1到5執(zhí)行5次,則輸出語句的執(zhí)行次數(shù)為3*5=15次。三重循環(huán)也使用類似方法計(jì)算循環(huán)體的執(zhí)行次數(shù)。3.3.5循環(huán)的嵌套3.3循環(huán)結(jié)構(gòu)但如果內(nèi)層循環(huán)變量的終值與外層循環(huán)變量有關(guān),則必須計(jì)算每次外層變量等于某值時,內(nèi)層循環(huán)執(zhí)行多少次,然后將多次循環(huán)的具體執(zhí)行次數(shù)累加即可。例如:for(i=1;i<=3;i++)for(j=1;j<=i;j++)printf(“%d+%d=%d”,i,j,i+j);該循環(huán)嵌套外層變量i從1到3執(zhí)行3次,內(nèi)層變量j從1到i執(zhí)行i次。則當(dāng)i=1時,內(nèi)層j循環(huán)1次;當(dāng)i=2時,內(nèi)層j循環(huán)2次(從1到2);當(dāng)i=3時,內(nèi)層j循環(huán)3次(從1到3)。將三次的循環(huán)次數(shù)累加1+2+3=6。所以該循環(huán)嵌套循環(huán)體語句執(zhí)行次數(shù)為6次。3.3.5循環(huán)的嵌套3.3循環(huán)結(jié)構(gòu)【案例3-10】設(shè)計(jì)一個程序,在屏幕上輸出下三角九九乘法表。程序分析:

乘法表第一行輸出的是1*1=1,第二行輸出的是2*1=22*2=4,第三行輸出的是3*1=33*2=63*3=9以此類推,可以發(fā)現(xiàn)每行上面各個式子的第一個數(shù)值不變,第二個數(shù)值從1變化到與第一個數(shù)相同的值。所以可以設(shè)置兩個整型變量i和j,i為外層循環(huán)體變量,j為內(nèi)層循環(huán)體變量,讓i從1循環(huán)到9,而j從1循環(huán)到i(這點(diǎn)特別重要),這樣在循環(huán)內(nèi)輸出i、j和i*j的值即可。單擊打開源程序程序運(yùn)行結(jié)果3.3.5循環(huán)的嵌套3.4break、continue和goto語句在循環(huán)中,除了當(dāng)條件表達(dá)式的值為假時能夠跳出循環(huán),還可以使用break語句和continue語句來提前結(jié)束循環(huán)。break語句基本形式如下:break語句只能在循環(huán)體內(nèi)和switch語句體使用。當(dāng)break出現(xiàn)在switch語句體內(nèi)時,其作用只是跳出該switch語句。當(dāng)break出現(xiàn)在循環(huán)體中,一般是與if條件合在一起構(gòu)成跳出本層循環(huán)的另一個條件。例如:for(i=0;i<100;i++)if(i>25)break;break;3.4.1break語句3.4break、continue和goto語句【案例3-11】設(shè)計(jì)一個程序,判斷一個正整數(shù)是否為素?cái)?shù)。程序分析:素?cái)?shù)就是除了1和它本身,不能被任何數(shù)整除的數(shù)。因此,如果一個數(shù)x是素?cái)?shù),就不能被2~x-1之間的任何一個數(shù)整除。為減少循環(huán)次數(shù),進(jìn)一步思考,如果x在2~

之間有一個數(shù)a可以被其整除,則在

~x-1之間也會有一個數(shù)b存在,滿足x=a×b成立,例如x=16,則有2×8=16滿足條件,其中2<4=,8>4=。3.4.1break語句3.4break、continue和goto語句所以在查找時,只要x在2~

之間沒有任意一個數(shù)能被整除,則x在

~x-1區(qū)間內(nèi)也不會有任意一個數(shù)能被整除(即循環(huán)終值為

而不是x-1)。所以程序中使用x%i的余數(shù)是否為0來判斷x是否能被i整除。退出循環(huán)后,如果i>,表示x不能被2~

中任何一個數(shù)整除,則x是素?cái)?shù),否則x不是素?cái)?shù)。圖3-12【案例3-11】的程序流程圖3.4.1break語句3.4break、continue和goto語句單擊打開源程序程序運(yùn)行兩次,分別輸入13和25兩個數(shù),程序運(yùn)行結(jié)果如下:3.4.1break、continue和goto語句3.4break、continue和goto語句continue語句基本形式如下:continue語句一般用于循環(huán)體中,其作用是提前結(jié)束本次循環(huán),即跳過本次循環(huán)體中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)的條件判定。注意:執(zhí)行continue語句并沒有使整個循環(huán)終止,而是結(jié)束本次循環(huán),繼續(xù)判斷循環(huán)條件。continue;3.4.2continue語句3.4break、continue和goto語句1.goto語句形式goto語句又稱為無條件跳轉(zhuǎn)語句,功能是將程序轉(zhuǎn)到goto后面的標(biāo)號所在處繼續(xù)執(zhí)行程序。一般來說,如果要使用goto語句構(gòu)成循環(huán),一般是用if語句和goto語句配合使用的。當(dāng)if語句條件為真時無條件轉(zhuǎn)到標(biāo)號所在程序行執(zhí)行,而且可以也構(gòu)成一個循環(huán)結(jié)構(gòu)。goto語句標(biāo)號;3.4.3goto語句3.4break、continue和goto語句例如,求1到100自然數(shù)的和,程序段如下:intsum=0,i=1;a1:sum=sum+i;/*本語句前面的a1就是標(biāo)號*/i++;if(i<=100)gotoa1; /*流程轉(zhuǎn)向語句,一般與if語句一起構(gòu)成循環(huán)*/請讀者將該程序完整寫出來,并上機(jī)驗(yàn)證。3.4.3goto語句3.4break、continue和goto語句2.說明(1)語句標(biāo)號僅僅對goto語句有效,對其他語句不影響。(2)同一個程序中,不允許有同名標(biāo)號。(3)goto語句通常與條件語句配合使用,可用來實(shí)現(xiàn)條件轉(zhuǎn)移、構(gòu)成循環(huán)、跳出循環(huán)體等功能。3.4.3goto語句3.5程序案例【案例3-12】從鍵盤上輸入一個數(shù)學(xué)四則運(yùn)算表達(dá)式(a+b、a-b、a*b或a/b),要求計(jì)算出該表達(dá)式的值。程序分析:分析題意,設(shè)兩個單精度浮點(diǎn)float型變量a和b,再設(shè)一個存放運(yùn)算符的字符型變量ch,然后根據(jù)ch的值來進(jìn)行相應(yīng)的運(yùn)算,將結(jié)果輸出即可。單擊打開源程序程序運(yùn)行結(jié)果輸入兩個運(yùn)算式:4.26*3.78和4.26&3.78,結(jié)果前一個為正常值,后一個表達(dá)式提示錯誤。3.5.1典型案例——求四項(xiàng)表達(dá)式的值3.5程序案例【案例3-13】從鍵盤輸入一個正整數(shù),求1+1+2+1+2+3+1+2+3+4+…+1+2+…+n數(shù)列的和。程序分析分析這個數(shù)列,能發(fā)現(xiàn)第一個數(shù)1自己一組,第二組數(shù)為1和2,第三組數(shù)為1,2,3,第四組數(shù)為1,2,3,4,……以此類推,最后一組數(shù)為1,2,3,……,n。求的是所有數(shù)的和。這樣可以設(shè)置兩重循環(huán)。假設(shè)外層循環(huán)變量設(shè)為i,值從1到n。內(nèi)層循環(huán)變量設(shè)為j,值從1到i。3.5.2典型案例——求1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+…+n)數(shù)列的和3.5程序案例這樣第一次內(nèi)層循環(huán)的j值為1,第二次j值為1,2,第三次j值為1,2,3……在內(nèi)層循環(huán)中求從1到i的累加和。在外層循環(huán)將內(nèi)層所求的和再加到最終的和上。循環(huán)完成后,即求得該數(shù)列的和。單擊打開源程序運(yùn)行時輸入的n值為15時,程序運(yùn)行結(jié)果如下:3.5.2典型案例——求1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+…+n)數(shù)列的和3.5程序案例【案例3-14】編寫一個程序,首先輸入正確的密碼進(jìn)入游戲,密碼輸入三次錯誤退出程序。密碼通過后,每次輸入一個數(shù)字,系統(tǒng)會給出對應(yīng)的提示,如“

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論