[第04講]用流程圖描述算法
全國(guó)青少年信息學(xué)奧林匹克競(jìng)賽全國(guó)青少年信息學(xué)奧林匹克競(jìng)賽網(wǎng)絡(luò)學(xué)習(xí)社區(qū)網(wǎng)絡(luò)學(xué)習(xí)社區(qū)C語(yǔ)言語(yǔ)言http:/www.ZXGL.com/omsNoi/上海交大出版社主編李明2009年7月29日版權(quán)所有 Mr.ChenCopyright(2009)C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)主講主講Mr. Chen04第第04講用流程圖描述算法講用流程圖描述算法設(shè)計(jì)算法設(shè)計(jì)算法 1. 算法的概念算法的概念2. 算法的特點(diǎn)算法的特點(diǎn)3. 算法的描述算法的描述描述算法描述算法 1. 結(jié)構(gòu)化流程圖結(jié)構(gòu)化流程圖2. 用流程圖描述算法用流程圖描述算法編寫(xiě)程序編寫(xiě)程序 1. 根據(jù)流程圖編程根據(jù)流程圖編程2. 調(diào)試程序調(diào)試程序3. 優(yōu)化算法優(yōu)化算法A 復(fù)習(xí)復(fù)習(xí)C 編寫(xiě)程序編寫(xiě)程序B 流程圖流程圖2+3+4+5+ +99 = ?1+100高斯小時(shí)候的故事高斯小時(shí)候的故事智力故事連環(huán)畫(huà)智力故事連環(huán)畫(huà)本地播放本地播放 遠(yuǎn)程播放遠(yuǎn)程播放開(kāi)始開(kāi)始第第1步:步:1+2=3第第2步:步: 3+3=6第第3步:步: 6+4=10 第第99步:步:4950+100=5050結(jié)束結(jié)束分析分析第1組:1+100=101第2組:2+99 =101第3組:3+98 =101第50組: 50+51=101開(kāi)始開(kāi)始第1步: 10150=5050結(jié)束結(jié)束=101+算法的特點(diǎn)算法的特點(diǎn)算法(算法(Algorithm)是為解決一個(gè)特定問(wèn)題而采取的)是為解決一個(gè)特定問(wèn)題而采取的確定的、有限的方法和步驟。確定的、有限的方法和步驟。 有窮性:有窮性:一個(gè)算法包含的操作步驟是有限的。一個(gè)算法包含的操作步驟是有限的。有效性:有效性:算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。確定的結(jié)果。有輸出:有輸出:算法執(zhí)行后必須輸出(算法執(zhí)行后必須輸出(1n個(gè))信息。個(gè))信息。有輸入:有輸入:算法執(zhí)行時(shí)需要輸入(算法執(zhí)行時(shí)需要輸入(0n個(gè))信息。個(gè))信息。確定性:確定性:算法中的每一個(gè)步驟都是確定的。算法中的每一個(gè)步驟都是確定的。結(jié)構(gòu)化流程圖的符號(hào)結(jié)構(gòu)化流程圖的符號(hào)流程圖是用一些圖框表示各種操作。流程圖是用一些圖框表示各種操作。用圖形表示算法,直觀形象,易于理解。用圖形表示算法,直觀形象,易于理解。開(kāi)始/結(jié)束賦值/計(jì)算條件起止框起止框輸入輸出框輸入輸出框事件處理框事件處理框判斷框判斷框流程線流程線輸入/輸出開(kāi)始開(kāi)始輸入輸入賦值賦值/計(jì)算計(jì)算輸出輸出結(jié)束結(jié)束結(jié)構(gòu)化流程圖結(jié)構(gòu)化流程圖 (1) 順序結(jié)構(gòu)順序結(jié)構(gòu)/ 文件名:文件名:Yingwuxueshe.c/ 功能:在屏幕上顯示用戶輸入的整數(shù)功能:在屏幕上顯示用戶輸入的整數(shù)int main() int i;printf(請(qǐng)輸入一個(gè)整數(shù):請(qǐng)輸入一個(gè)整數(shù):);scanf(%d,&i);printf(“你輸入的整數(shù)是:你輸入的整數(shù)是:%d,i);printf(%c,7); printf(n n); system(pause);結(jié)構(gòu)化流程圖結(jié)構(gòu)化流程圖 (2) if-else 選擇結(jié)構(gòu)選擇結(jié)構(gòu)/ 文件名:文件名:Judge.c/ 功能:判斷兩個(gè)整數(shù)的大小功能:判斷兩個(gè)整數(shù)的大小 int main()int a,b;scanf(%d,&a);scanf(%d,&b);if (a=b)printf(%d %d,a,b);elseprintf(%d =b?否否是是輸入兩個(gè)整數(shù) a,b輸出 ab輸出 ab結(jié)構(gòu)化流程圖結(jié)構(gòu)化流程圖 (3) for 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)/ 文件名:文件名:Sum100_for.c/ 功能:計(jì)算功能:計(jì)算 s=1+2+3+99+100int main() int i,s; s=0; for for ( (i=1i=1; ;i i=100;100;i+i+) ) printf(“s=%d,i=%d ,s+i=%d n,s,i,s+i); s=s+i; printf(“n 1+2+3+ +99+100=%d,s); printf(n n); system(pause);開(kāi)始開(kāi)始i=100?是是否否賦值 s=0; i=1; 累加 i=i+1;輸出 s結(jié)束結(jié)束計(jì)算 s=s+i;結(jié)構(gòu)化流程圖結(jié)構(gòu)化流程圖 (4) while 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)/ 文件名:文件名:Sum100_while.c/ 功能:計(jì)算功能:計(jì)算 s=1+2+3+99+100int main() int i,s; i=1; s=0; while (i=100) printf(“s=%d,i=%d ,s+i=%d n,s,i,s+i); s=s+i; i=i+1; printf(“ n 1+2+3+ +99+100=%d,s); printf(n n); system(pause);開(kāi)始開(kāi)始i=b?否否是是輸入兩個(gè)整數(shù) a,b輸出 ab輸出 ab1+2+3+4+5+ +99+100 = ?拓展提高拓展提高用流程圖表示高斯的算法用流程圖表示高斯的算法智力故事連環(huán)畫(huà)智力故事連環(huán)畫(huà)本地播放本地播放 遠(yuǎn)程播放遠(yuǎn)程播放開(kāi)始開(kāi)始輸出 10150=5050結(jié)束結(jié)束Mr. Chen陳家良陳家良GsChenJLhttp:/www.ZXGL.com/omsNoi/