版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 成績(jī)管理中數(shù)據(jù)的批量處理與統(tǒng)計(jì)案例引入假設(shè)學(xué)生成績(jī)表如下:任務(wù)描述成績(jī)管理中數(shù)據(jù)的批量處理與統(tǒng)計(jì)案例引入 編寫程序,對(duì)所有學(xué)生,通過鍵盤輸入成績(jī)score,通過選擇結(jié)構(gòu)語句的處理輸出相應(yīng)的等級(jí)grade,分別統(tǒng)計(jì)及格人數(shù)c1和不及格的人數(shù)c2,并輸出。任務(wù)描述 (1) 設(shè)計(jì)循環(huán)語句,當(dāng)輸入負(fù)數(shù)時(shí)結(jié)束循環(huán); (2)依次輸入score,判斷是哪個(gè)等級(jí)grade并輸出,統(tǒng)計(jì)及格和不及格的人數(shù); (3) 輸出及格和不及格人數(shù)。小提示如果希望將總成績(jī)score按從大到小的順序排列,如何處理?想一想能力目標(biāo)1.具備應(yīng)用循環(huán)結(jié)構(gòu)設(shè)計(jì)算法的能力。2.具備根據(jù)處理需要設(shè)計(jì)循環(huán)體、循環(huán)控制和設(shè)置
2、循環(huán)初值的能力。3.培養(yǎng)軟件開發(fā)必備的邏輯思維清晰、流程控制正確的基本素質(zhì)。while語句1do-while語句2 for語句3循環(huán)嵌套4break語句和continue語句 5技能訓(xùn)練6知識(shí)要求5.1while語句while語句的一般形式如下: 或: while( 表達(dá)式) 語句序列; while語句是實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的常用語句之一,常用于實(shí)現(xiàn)“當(dāng)型”循環(huán)。1.語法while是關(guān)鍵字,其中表達(dá)式稱為“循環(huán)條件”,語句或語句序列稱為“循環(huán)體”5.1while語句當(dāng)邏輯表達(dá)式為真(非0)時(shí),重復(fù)執(zhí)行循環(huán)體語句;當(dāng)邏輯表達(dá)式為0時(shí),終止循環(huán),執(zhí)行下一條語句。表達(dá)式復(fù)合語句假(0)真(非0)特點(diǎn):先判斷
3、,后執(zhí)行 1.語法5.1while語句使用while語句需要注意以下幾點(diǎn): (1)while語句的特點(diǎn)是先計(jì)算表達(dá)式的值,然后根據(jù)表達(dá)式的值決定是否執(zhí)行循環(huán)體中的語句。因此,如果表達(dá)式的值一開始就為“假”,那么循環(huán)體一次也不執(zhí)行。 (2)當(dāng)循環(huán)體為多個(gè)語句組成,必須用括起來,形成復(fù)合語句。 (3)在循環(huán)體中應(yīng)有使循環(huán)趨于結(jié)束的語句,以避免“死循環(huán)”的發(fā)生。1.語法 例5.1計(jì)算s=1+2+3+n main() int i,s; i=1;s=0; /*設(shè)循環(huán)初值*/ while(i=100) /*循環(huán)終止判斷*/ s=s+i; /*循環(huán)體設(shè)計(jì)*/ i=i+1; printf(“%d”,s); 5
4、.1while語句示例1.語法2.循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的關(guān)鍵 (1)循環(huán)體的設(shè)計(jì)。遇到數(shù)列求和,求積的一類問題,一般可以考慮使用循環(huán)解決。 累加:s=s+item; 累乘:s=s*item; 計(jì)數(shù):c=c+1; (2)注意循環(huán)初值的設(shè)置。一般對(duì)于累加器常常設(shè)置為0,累乘器常常設(shè)置為1。循環(huán)控制變量初始、步長(zhǎng)、終值設(shè)置。 s=0;i=1;while(i=100)s=s+i;i+; s=0;i=0;while(i=1e-4) s=s+item; sign=-sign; i+=2; item=(float)sign/i; printf(pi=%fn,4*s); 5.2do-while語句dowhile語
5、句可以實(shí)現(xiàn)“直到型”循環(huán),先無條件地執(zhí)行循環(huán)體語句,再進(jìn)行判斷。直到條件為假,退出循環(huán)。語法功能do 循環(huán)體 while( 表達(dá)式);執(zhí)行循環(huán)體語句,當(dāng)邏輯表達(dá)式為真(非0)時(shí),重新執(zhí)行循環(huán)體語句;當(dāng)邏輯表達(dá)式為假(0)時(shí),終止循環(huán),執(zhí)行下一條語句。復(fù)合語句表達(dá)式真(非0)假(0)特點(diǎn):先執(zhí)行,后判斷。5.2do-while語句5.2do-while語句 (1)do-while循環(huán),總是先執(zhí)行一次循環(huán)體,然后再求表達(dá)式的值,因此,無論表達(dá)式是否為“真”,循環(huán)體至少執(zhí)行一次。 (2)do-while循環(huán)與while循環(huán)十分相似,它們的主要區(qū)別是:while循環(huán)先判斷循環(huán)條件再執(zhí)行循環(huán)體,循環(huán)體可
6、能一次也不執(zhí)行。do-while循環(huán)先執(zhí)行循環(huán)體,再判斷循環(huán)條件,循環(huán)體至少執(zhí)行一次。 (3)循環(huán)體中應(yīng)該有使循環(huán)趨于終止的語句。說明5.2do-while語句應(yīng)用例5.5:計(jì)算s=1+2+3+n #include stdio.h main() int i,s; i=1;s=0; /*設(shè)循環(huán)初值*/ do s=s+i; /*循環(huán)體設(shè)計(jì)*/ i=i+1; while(i=100); printf(“%d”,s); #include stdio.hmain() int n=0,s=0; /*設(shè)循環(huán)初值*/ do n=n+1; s=s+n; while(s1000); printf(“n=%d,su
7、m=%dn”,n-1,s-n);例5.6:編寫程序,求滿足1+2+3+n1000時(shí)n的最大值及累加和。示例5.2do-while語句5.3for語句for語句是實(shí)現(xiàn)循環(huán)的最常用語句。不僅可以用于循環(huán)次數(shù)確定的情況,也可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況。語法功能for(表達(dá)式1;表達(dá)式2; 表達(dá)式3) 循環(huán)體for是關(guān)鍵詞,其后有3個(gè)表達(dá)式,各個(gè)表達(dá)式用“;”分隔。3個(gè)表達(dá)式可以是任意的表達(dá)式,通常主要用于for循環(huán)控制。5.3for語句 (1)計(jì)算表達(dá)式1。 (2)計(jì)算表達(dá)式2,若其值為非0(循環(huán)條件成立),則轉(zhuǎn) (3)執(zhí)行循環(huán)體;若其值為0(循環(huán)條件不成立),則轉(zhuǎn)(5)結(jié)束循環(huán)
8、。 (3)執(zhí)行循環(huán)體。 (4)計(jì)算表達(dá)式3,然后轉(zhuǎn)(2)判斷循環(huán)條件是否成立。 (5)結(jié)束循環(huán),執(zhí)行for循環(huán)之后的語句。for循環(huán)執(zhí)行過程如下:表達(dá)式1表達(dá)式2循環(huán)體語句表達(dá)式3真(非0)假(0)for 流程圖 (1)表達(dá)式1或者循環(huán)初值可以放在語句之前,但分號(hào)不能省。例如:i=1;for(;i=100;i=i+1) s=s+i; (2)如果省略表達(dá)式2,即不在表達(dá)式2的位置判斷循環(huán)終止條件,循環(huán)無終止地進(jìn)行,也就是認(rèn)為表達(dá)式2始終為“真”。則應(yīng)該在其它位置(如:循環(huán)體)安排檢測(cè)及退出循環(huán)的機(jī)制。說明5.3for語句 (3)可以省略表達(dá)式3,但應(yīng)該設(shè)法保證循環(huán)終止。 for(i=1;i=10
9、0;) s=s+i; i=i+1; (4)可以省略表達(dá)式1和3,應(yīng)該設(shè)法保證循環(huán)終止。 i=1; for(;i=100;) s=s+i; i=i+1說明5.3for語句 (5)可以省略表達(dá)式1、2和3,循環(huán)體無終止。 (6)表達(dá)式1和表達(dá)式3可以是逗號(hào)表達(dá)式。 從上面的說明可以看出,C語言的for語句功能強(qiáng)大,使用靈活,可以把循環(huán)體和一些與循環(huán)控制無關(guān)的操作也都可以作為表達(dá)式出現(xiàn),程序短小簡(jiǎn)潔。但是,如果過分使用這個(gè)特點(diǎn)會(huì)使for語句顯得雜亂,降低程序可讀性。建議不要把與循環(huán)控制無關(guān)的內(nèi)容放在for語句的三個(gè)表達(dá)式中,這是程序設(shè)計(jì)的良好風(fēng)格。說明5.3for語句5.3for語句 #includ
10、e main() float x,min; int i; scanf(“%f”,&x); min=x; for(i=1;i10; i+) scanf(“%f”,&x); if(xmin)min=x; printf(“min=%fn”,min); 例5.7:從鍵盤輸入10個(gè)學(xué)生的成績(jī),編程輸出其中最低分。示例例5.8:計(jì)算n!。 #include main() float fact; int i,n; fact=1.0; scanf(“%d”,&n); for(i=1; i=n; i+) fact*=i; printf(“%d!=%.0fn”,n,fact); 5.3for語句示例5.3for語
11、句 #include main() int i; long f1,f2,next; f1=f2=1; printf(“%8ld%8ld”,f1,f2); for(i=3;i=25; i+) next=f1+f2; f1=f2; f2=next; printf(“%8ld”,next); if(i%5=0) printf(“n”); 例5.9:輸出斐波那契序列:1,1,2,3,5,8,13,的前25項(xiàng),要求每行輸出5項(xiàng)。示例5.4循環(huán)嵌套規(guī)則一個(gè)循環(huán)內(nèi)又包含另一個(gè)循環(huán),稱為循環(huán)的嵌套。內(nèi)循環(huán)中還可以嵌套循環(huán)。按照循環(huán)的嵌套次數(shù),分別稱為二重循環(huán)、三重循環(huán)。一般將處于內(nèi)部的循環(huán)稱為內(nèi)循環(huán),處于外部
12、的循環(huán)稱為外循環(huán)。三條循環(huán)語句for語句、while語句和do-while語句可以相互嵌套。5.4循環(huán)嵌套說明 (1)一個(gè)循環(huán)體必須完整的嵌套在另一個(gè)循環(huán)體內(nèi),不能出現(xiàn)交叉現(xiàn)象; (2)多層循環(huán)的執(zhí)行順序是:最內(nèi)層先執(zhí)行,由內(nèi)向外逐步展開; (3)三種循環(huán)語句構(gòu)成的循環(huán)可以相互嵌套; (4)并列循環(huán)允許使用相同的循環(huán)變量,但嵌套循環(huán)不允許; (5)嵌套的循環(huán)要采用縮進(jìn)格式書寫,使程序?qū)哟畏置?,便于閱讀和調(diào)試。例5.10:打印九九表 1*1=1 1*2=1 1*3=3 1*9=9 2*1=2 2*2=4 2*3=6 2*9=18 9*1=9 9*2=18 9*3=27 9*9=81 #inclu
13、de main() int i,j; for(i=1;i=9;i+) for(j=1;j=9;j+) printf(“%4d*%d=%2d”,i,j,i*j); printf(“n”); 5.4循環(huán)嵌套示例例5.11:打印金字塔型圖案5.4循環(huán)嵌套示例 * * * * * #include main() int i,j; for(i=1;i=5;i+) /*控制行數(shù)*/ for(j=1;j=20-i;j+) /*控制每行開始空格個(gè)數(shù)*/ printf(“ ”); for(j=1;j=2*i-1;j+) /*控制每行*的個(gè)數(shù)*/ printf(“*”); printf(“n”); /*每輸出一行
14、后換行*/ 5.5.1break語句5.5break語句和continue語句 語法break語句一般形式如下:break;作用跳出本switch語句體或跳出本層循環(huán)體。說明 (1)break語句只用于循環(huán)語句或switch語句中。在循環(huán)語句中,break常常和if語句一起使用,表示當(dāng)條件滿足時(shí),立即終止循環(huán)。注意break不是跳出if語句,而是循環(huán)結(jié)構(gòu)。 (2)循環(huán)語句可以嵌套使用,break語句只能跳出(終止)其所在的循環(huán),而不能一下子跳出多層循環(huán)。要實(shí)現(xiàn)跳出多層循環(huán)可以設(shè)置一個(gè)標(biāo)志變量,控制逐層跳出。5.5break語句和continue語句 5.5.1break語句例5.12:編寫程序
15、,判斷從鍵盤輸入的自然數(shù)是否為素?cái)?shù)(質(zhì)數(shù))。說明: (1)所謂素?cái)?shù)就是只能被1和它自身整除的大于1的整數(shù)。 (2)要判斷n是否為素?cái)?shù),就要用2,3,,n-1 分別去除n,如果都不能被整除,則n就是素?cái)?shù),正常退出循環(huán),如果其中某個(gè)數(shù)被n整除,則n不是素?cái)?shù),需要退出循環(huán)。示例5.5.1break語句5.5break語句和continue語句 程序示例 #include #include main() int i,n,k; printf(“Input a number(1): ”); scanf(“%d”,&n); k=sqrt(n); for(i=2;ik)printf(“%d is a prim
16、e number.n”,n); else printf(“%d is not a prime number.n”,n); 5.5break語句和continue語句 5.5.2continue語句結(jié)束本次循環(huán),即跳出本層循環(huán)中余下的尚未執(zhí)行的語句,接著執(zhí)行下一次循環(huán)條件的判定。執(zhí)行continue語句并沒有使整個(gè)循環(huán)終止,注意與break的不同。在while和do-while循環(huán)中,continue語句使流程直接跳到循環(huán)控制條件的測(cè)試部分,然后決定循環(huán)是否繼續(xù)執(zhí)行。在for循環(huán)中,遇到continue后,跳過循環(huán)體中余下的語句,而去對(duì)for語句中的表達(dá)式3求值,然后進(jìn)行表達(dá)式2的條件測(cè)試,最后
17、決定for循環(huán)是否執(zhí)行。語法continue;說明和作用 #include stdio.h #include conio.h main() int n; for(n=100;n=200;n+) if(n%3=0) continue; printf(%d ,n); getch(); 5.5break語句和continue語句 5.5.2continue語句例5.13:把100-200之間不能被3整除的數(shù)輸出。 等價(jià): #include stdio.h main() int n; for(n=100;n=200;n+) if(n%3!=0) printf(%d ,n); getch(); 技能訓(xùn)練
18、循環(huán)結(jié)構(gòu)是程序設(shè)計(jì)中非常重要的內(nèi)容,應(yīng)該熟練掌握。通過本章的學(xué)習(xí),應(yīng)該理解循環(huán)語句的內(nèi)部執(zhí)行機(jī)理,熟練掌握for語句、while語句、dowhile語句的使用。在C語言中,三種循環(huán)結(jié)構(gòu)(不考慮用if/goto構(gòu)成的循環(huán))都可以用來處理同一個(gè)問題,但在具體使用時(shí)存在一些細(xì)微的差別,不能說哪種更加優(yōu)越。具體使用哪一種結(jié)構(gòu)依賴于程序的可讀性和程序設(shè)計(jì)者個(gè)人程序設(shè)計(jì)的風(fēng)格(偏好)。我們應(yīng)當(dāng)盡量選擇恰當(dāng)?shù)难h(huán)結(jié)構(gòu),使程序更加容易理解。對(duì)計(jì)數(shù)型的循環(huán)或確切知道循環(huán)次數(shù)的循環(huán),用for比較合適,對(duì)其它不確定循環(huán)次數(shù)的循環(huán)許多程序設(shè)計(jì)者喜好用while/do-while循環(huán)(如鏈表操作)。技能訓(xùn)練其實(shí)從前面的實(shí)例中我們可以看到,有些數(shù)學(xué)問題的思路基本定格,所以處理步驟有必要“死記硬背”,另外編寫能夠運(yùn)行的程序有時(shí)簡(jiǎn)單,但編效率高的程序還是需要?jiǎng)觿?dòng)腦筋,所以一定要理順解決問題的步驟以及編程思路,這就要求多寫多練,自然養(yǎng)成解決問題處理問題的習(xí)慣思維。全國(guó)二級(jí)C考試大綱本章主要考查循環(huán)結(jié)構(gòu)設(shè)計(jì)方法,其中包括for、while、do-while語句的使用,以及contin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年天津市建筑安全員C證(專職安全員)考試題庫
- 有機(jī)黃芪標(biāo)準(zhǔn)化種植項(xiàng)目可行性研究報(bào)告-有機(jī)黃芪市場(chǎng)需求持續(xù)擴(kuò)大
- 2025山東建筑安全員C證考試題庫
- 廣州中醫(yī)藥大學(xué)《中學(xué)生物學(xué)教材分析與教學(xué)設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025青海省建筑安全員B證考試題庫及答案
- 2025福建省安全員-B證考試題庫附答案
- 2025甘肅省建筑安全員-B證考試題庫及答案
- 2025江西建筑安全員-B證考試題庫及答案
- 課件《在太空中理家》張鈺
- 《手機(jī)怎么看電影》課件
- 2024年執(zhí)業(yè)醫(yī)師考試-中醫(yī)執(zhí)業(yè)醫(yī)師考試近5年真題集錦(頻考類試題)帶答案
- 2024-2030年中國(guó)真空滅弧室行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 全國(guó)計(jì)算機(jī)一級(jí)考試題庫(附答案)
- 【飛科電器公司基于杜邦分析法的財(cái)務(wù)分析案例(7700字論文)】
- 廣東省深圳市(2024年-2025年小學(xué)四年級(jí)語文)統(tǒng)編版期末考試(上學(xué)期)試卷及答案
- 兒童呼吸道合胞病毒感染臨床診治試題
- 2021-2022學(xué)年廣東省廣州市花都區(qū)六年級(jí)(上)期末英語試卷
- 服務(wù)基層行資料(藥品管理)
- 2024年中考數(shù)學(xué)壓軸題:圓與相似及三角函數(shù)綜合問題(教師版含解析)
- 安徽省2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題(原卷版)
- A股上市與借殼上市詳細(xì)流程圖
評(píng)論
0/150
提交評(píng)論