C語言程序設(shè)計-實驗_第1頁
C語言程序設(shè)計-實驗_第2頁
C語言程序設(shè)計-實驗_第3頁
C語言程序設(shè)計-實驗_第4頁
C語言程序設(shè)計-實驗_第5頁
已閱讀5頁,還剩120頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、信息系統(tǒng)程序設(shè)計實驗(信息系統(tǒng)程序設(shè)計實驗(C語言)語言)一、課程設(shè)計目的一、課程設(shè)計目的o C語言程序設(shè)計課程設(shè)計是電子信息、光語言程序設(shè)計課程設(shè)計是電子信息、光信息專業(yè)集中實踐性環(huán)節(jié)之一,是學(xué)習(xí)完信息專業(yè)集中實踐性環(huán)節(jié)之一,是學(xué)習(xí)完C語言程序設(shè)計課程后進行的一次全面的綜合語言程序設(shè)計課程后進行的一次全面的綜合練習(xí),其目的在于加深對程序設(shè)計基本知識的練習(xí),其目的在于加深對程序設(shè)計基本知識的理解,掌握使用理解,掌握使用C語言進行模塊化軟件設(shè)計的語言進行模塊化軟件設(shè)計的基本方法,提高通過編寫程序解決實際問題的基本方法,提高通過編寫程序解決實際問題的能力,為今后從事設(shè)計工作和后續(xù)各種編程課能力,為

2、今后從事設(shè)計工作和后續(xù)各種編程課程的學(xué)習(xí)打好基礎(chǔ)。程的學(xué)習(xí)打好基礎(chǔ)。二、課程與相關(guān)課程的聯(lián)系與分工二、課程與相關(guān)課程的聯(lián)系與分工o 先修課為先修課為C語言程序設(shè)計和算法與數(shù)據(jù)語言程序設(shè)計和算法與數(shù)據(jù)結(jié)構(gòu)。后續(xù)課為數(shù)據(jù)庫原理與應(yīng)用和結(jié)構(gòu)。后續(xù)課為數(shù)據(jù)庫原理與應(yīng)用和軟件系統(tǒng)基礎(chǔ)。軟件系統(tǒng)基礎(chǔ)。o 本課程設(shè)計是為了讓學(xué)生鞏固本課程設(shè)計是為了讓學(xué)生鞏固C語言程序設(shè)語言程序設(shè)計課程學(xué)到的知識,熟練計課程學(xué)到的知識,熟練C開發(fā)工具,運用開發(fā)工具,運用算法與數(shù)據(jù)結(jié)構(gòu)課程學(xué)到的算法設(shè)計思想算法與數(shù)據(jù)結(jié)構(gòu)課程學(xué)到的算法設(shè)計思想解決實際應(yīng)用問題。并為后續(xù)課程數(shù)據(jù)庫原解決實際應(yīng)用問題。并為后續(xù)課程數(shù)據(jù)庫原理及應(yīng)用和

3、軟件系統(tǒng)基礎(chǔ)等奠定基礎(chǔ)。理及應(yīng)用和軟件系統(tǒng)基礎(chǔ)等奠定基礎(chǔ)。教學(xué)要求教學(xué)要求o 為了使學(xué)生從課程設(shè)計中取得實際效果,對課為了使學(xué)生從課程設(shè)計中取得實際效果,對課程設(shè)計題目分成二類:一類為基本設(shè)計題目,程設(shè)計題目分成二類:一類為基本設(shè)計題目,主要是程序設(shè)計的常用算法的綜合訓(xùn)練,要求主要是程序設(shè)計的常用算法的綜合訓(xùn)練,要求學(xué)生獨立完成;另一類為綜合設(shè)計題目,具有學(xué)生獨立完成;另一類為綜合設(shè)計題目,具有較高的難度和工作量,以較高的難度和工作量,以23人組成的項目人組成的項目小組、團隊合作的方式完成。學(xué)生可根據(jù)自己小組、團隊合作的方式完成。學(xué)生可根據(jù)自己的實際情況選擇綜合設(shè)計題目完成課程設(shè)計,的實際情況

4、選擇綜合設(shè)計題目完成課程設(shè)計,鼓勵學(xué)生選擇綜合設(shè)計題目、培養(yǎng)團隊合作的鼓勵學(xué)生選擇綜合設(shè)計題目、培養(yǎng)團隊合作的能力。能力。基本要求:基本要求:o 要求學(xué)生做好預(yù)習(xí),掌握設(shè)計過程中涉及到的要求學(xué)生做好預(yù)習(xí),掌握設(shè)計過程中涉及到的算法,按設(shè)計流程編程,上機調(diào)試通過,驗證算法,按設(shè)計流程編程,上機調(diào)試通過,驗證結(jié)果并進行分析、完成課程結(jié)果并進行分析、完成課程實驗實驗設(shè)計報告,最設(shè)計報告,最后對所完成的工作進行答辯。后對所完成的工作進行答辯。實驗安排實驗安排實驗安排實驗安排實驗安排實驗安排實驗安排實驗安排課程課程實驗的實驗的實施過程實施過程o 整個課程整個課程實驗在綜合實驗階段要分成實驗在綜合實驗階段

5、要分成以下幾個以下幾個階段進行:開題,系統(tǒng)設(shè)計,系統(tǒng)編碼實現(xiàn),階段進行:開題,系統(tǒng)設(shè)計,系統(tǒng)編碼實現(xiàn),系統(tǒng)測試,系統(tǒng)評價與驗收。系統(tǒng)測試,系統(tǒng)評價與驗收。o (1) 開題開題o 課程設(shè)計題目來自教師指定的參考題目,也可課程設(shè)計題目來自教師指定的參考題目,也可自由選題,自由選題,但要老師批準(zhǔn)。但要老師批準(zhǔn)。特別是鼓勵有創(chuàng)新特別是鼓勵有創(chuàng)新性的題目或是在已知題目的基礎(chǔ)上進行創(chuàng)新。性的題目或是在已知題目的基礎(chǔ)上進行創(chuàng)新。課程課程實驗的實驗的實施過程實施過程o (2) 系統(tǒng)設(shè)計系統(tǒng)設(shè)計o 系統(tǒng)設(shè)計的任務(wù)是對所確定的題目從問題需求、系統(tǒng)設(shè)計的任務(wù)是對所確定的題目從問題需求、數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)、難點及關(guān)鍵

6、技術(shù)等方面數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)、難點及關(guān)鍵技術(shù)等方面進行分析,形成的系統(tǒng)設(shè)計方案,并進行詳細進行分析,形成的系統(tǒng)設(shè)計方案,并進行詳細的分工。在確定解決方案框架過程中,考慮怎的分工。在確定解決方案框架過程中,考慮怎樣使程序結(jié)構(gòu)清晰、合理、簡單和易于調(diào)試,樣使程序結(jié)構(gòu)清晰、合理、簡單和易于調(diào)試,并確定每個函數(shù)的功能以及函數(shù)之間的調(diào)用關(guān)并確定每個函數(shù)的功能以及函數(shù)之間的調(diào)用關(guān)系。每個明確的功能模塊程序一般不超過系。每個明確的功能模塊程序一般不超過60行,否則要進一步劃分。行,否則要進一步劃分。課程課程實驗的實驗的實施過程實施過程o (3)系統(tǒng)編碼實現(xiàn)系統(tǒng)編碼實現(xiàn)o 小組成員根據(jù)初步的系統(tǒng)設(shè)計方案,對系

7、統(tǒng)編小組成員根據(jù)初步的系統(tǒng)設(shè)計方案,對系統(tǒng)編程實現(xiàn)。程實現(xiàn)。o (4) 系統(tǒng)測試系統(tǒng)測試o 在各程序模塊編碼完成并集成后,就可以開始在各程序模塊編碼完成并集成后,就可以開始對整個系統(tǒng)進行測試。對整個系統(tǒng)進行測試。課程課程實驗的實驗的實施過程實施過程o (5) 書寫課程設(shè)計報告書寫課程設(shè)計報告o 課程設(shè)計報告應(yīng)至少包含以下內(nèi)容:課程設(shè)計報告應(yīng)至少包含以下內(nèi)容:o 問題描述:題目要解決的問題是什么。問題描述:題目要解決的問題是什么。o 設(shè)計說明:模塊設(shè)計和主要算法思想(用設(shè)計說明:模塊設(shè)計和主要算法思想(用流程圖表示)等。流程圖表示)等。o 調(diào)試報告:調(diào)試過程中遇到的主要問題及調(diào)試報告:調(diào)試過程中

8、遇到的主要問題及解決方法;對設(shè)計和編碼的回顧討論和分析;解決方法;對設(shè)計和編碼的回顧討論和分析;改進設(shè)想;經(jīng)驗和體會等。改進設(shè)想;經(jīng)驗和體會等。o 。課程課程實驗的實驗的實施過程實施過程o (6) 系統(tǒng)評價與驗收系統(tǒng)評價與驗收o 通過答辯的形式對程序的功能進行評價與驗收通過答辯的形式對程序的功能進行評價與驗收課程設(shè)計指導(dǎo)方式課程設(shè)計指導(dǎo)方式o 前面基礎(chǔ)實驗前面基礎(chǔ)實驗由由教師布置任務(wù),學(xué)生在課堂上教師布置任務(wù),學(xué)生在課堂上調(diào)試完成,寫出實驗報告,提交上來。調(diào)試完成,寫出實驗報告,提交上來。o 綜合實驗,由綜合實驗,由教師召開課程設(shè)計動員會,進行教師召開課程設(shè)計動員會,進行分組,指定課程設(shè)計的題

9、目和內(nèi)容,講解部分分組,指定課程設(shè)計的題目和內(nèi)容,講解部分題目要求。學(xué)生在規(guī)定的時間內(nèi),經(jīng)過小組的題目要求。學(xué)生在規(guī)定的時間內(nèi),經(jīng)過小組的協(xié)同工作和指導(dǎo)教師的輔導(dǎo),完成題目。最后協(xié)同工作和指導(dǎo)教師的輔導(dǎo),完成題目。最后由指導(dǎo)教師進行驗收及成績評定。由指導(dǎo)教師進行驗收及成績評定。課程課程實驗實驗考核方法及成績評定考核方法及成績評定o 1、通過程序?qū)崿F(xiàn)、設(shè)計報告和學(xué)習(xí)態(tài)度等綜、通過程序?qū)崿F(xiàn)、設(shè)計報告和學(xué)習(xí)態(tài)度等綜合考評,評定成績。合考評,評定成績。課程課程實驗實驗考核方法及成績評定考核方法及成績評定o 2、評分標(biāo)準(zhǔn)、評分標(biāo)準(zhǔn) 從以下五個方面評出課程設(shè)計完成后的綜合分:從以下五個方面評出課程設(shè)計完成

10、后的綜合分:o 設(shè)計報告占設(shè)計報告占30%o 系統(tǒng)完成情況及編程工作量占系統(tǒng)完成情況及編程工作量占30%o 編程難度和程序亮點占編程難度和程序亮點占10%o 回答教師所提出的問題占回答教師所提出的問題占20%o 課程設(shè)計過程中的工作態(tài)度(考勤)占課程設(shè)計過程中的工作態(tài)度(考勤)占10%課程課程實驗實驗考核方法及成績評定考核方法及成績評定o (2) 以項目小組、團隊合作方式完成的綜合設(shè)以項目小組、團隊合作方式完成的綜合設(shè)計題目,對每一組按以上標(biāo)準(zhǔn)給出綜合分,并計題目,對每一組按以上標(biāo)準(zhǔn)給出綜合分,并將該分作為這組中最優(yōu)秀同學(xué)的得分,其他同將該分作為這組中最優(yōu)秀同學(xué)的得分,其他同學(xué)的分?jǐn)?shù)根據(jù)其在組

11、中所承擔(dān)的任務(wù)和表現(xiàn)進學(xué)的分?jǐn)?shù)根據(jù)其在組中所承擔(dān)的任務(wù)和表現(xiàn)進行相應(yīng)的調(diào)整。行相應(yīng)的調(diào)整。o (3) 根據(jù)課程根據(jù)課程綜合實驗綜合實驗設(shè)計的選題新穎性、獨設(shè)計的選題新穎性、獨立分析解決問題的能力和創(chuàng)新精神等,予以適立分析解決問題的能力和創(chuàng)新精神等,予以適當(dāng)加分。當(dāng)加分。主要教材及參考書主要教材及參考書o 參考教材:參考教材:o 2 曹哲曹哲. C語言實驗與課程設(shè)計語言實驗與課程設(shè)計. 機械工業(yè)機械工業(yè)出版社出版社. 2010.o C語言課程設(shè)計作者:劉博,董學(xué)文編著:語言課程設(shè)計作者:劉博,董學(xué)文編著:機械工業(yè)出版社機械工業(yè)出版社o C語言程序設(shè)計綜合實驗指導(dǎo)主編:顏暉,語言程序設(shè)計綜合實驗指

12、導(dǎo)主編:顏暉,張引張引 出版社:浙江大學(xué)出版社出版社:浙江大學(xué)出版社指導(dǎo)書:指導(dǎo)書:o C程序設(shè)計基礎(chǔ)與實驗作者:顏暉程序設(shè)計基礎(chǔ)與實驗作者:顏暉 出版社:出版社:浙江大學(xué)出版社浙江大學(xué)出版社o C程序設(shè)計題解與上機指導(dǎo)(第二版)作程序設(shè)計題解與上機指導(dǎo)(第二版)作者:譚浩強主編者:譚浩強主編 清華大學(xué)出版社清華大學(xué)出版社o C語言實驗與課程設(shè)計語言實驗與課程設(shè)計. 王新,孫雷編著清華大學(xué)出版社兩大上機環(huán)境兩大上機環(huán)境o VC+,Visual C+ 6.0n 基于基于Windows平臺平臺n 支持支持C和和C+,需建工程,需建工程/工作區(qū),工作區(qū),可能死機可能死機n Microsoft Vis

13、ual C+ 6.0 圖標(biāo)圖標(biāo)o TC,Turbo C 2.0n 基于基于DOS平臺,不支持鼠標(biāo)、復(fù)制平臺,不支持鼠標(biāo)、復(fù)制/粘貼粘貼n 標(biāo)準(zhǔn)標(biāo)準(zhǔn)Cn D:TCTC.BAT 或或 D:TCBINTC.EXEVC+上機關(guān)鍵操作上機關(guān)鍵操作o 建立文件建立文件n FileNewFileC+Sourcen 輸入文件名并選擇路徑輸入文件名并選擇路徑o 編寫并保存代碼編寫并保存代碼o 編譯:編譯:BuildBuildn 按提示建立按提示建立workspaceo 運行:運行:BuildExecuteo 關(guān)閉:關(guān)閉:FileClose WorkspacesTC上機關(guān)鍵操作上機關(guān)鍵操作o 注:按注:按Alt+

14、第一字母進入相應(yīng)主菜單項第一字母進入相應(yīng)主菜單項o 建立文件:建立文件:FileNewo 編寫代碼:編寫代碼:Edito 保存:保存:FileSaven 輸入文件名輸入文件名o 編譯:編譯:CompileBuild allo 運行:運行:RunRuno 查看結(jié)果:查看結(jié)果:RunUser screenTC上機快捷鍵上機快捷鍵(1)o 進入,退出,全屏進入,退出,全屏/窗口窗口nCtrl-Enter切換全屏切換全屏/窗口模式窗口模式nF10進入主菜單進入主菜單o 程序編輯,存盤,裝入程序編輯,存盤,裝入nInsert,Delete,BackSpace,Home,EndnAlt-E進入程序編輯窗口

15、進入程序編輯窗口nF2源程序存盤源程序存盤nF3打開源程序打開源程序o 編譯、連接編譯、連接nCompiler、Link、Build AllTC上機快捷鍵上機快捷鍵(2)o 運行、中止運行、中止n Ctrl-F9運行程序運行程序n Alt-F5察看用戶屏幕察看用戶屏幕n Ctrl-Break停止程序運行停止程序運行o 調(diào)試調(diào)試n F8/F7單步跟蹤單步跟蹤n Ctrl-F7增加觀察變量增加觀察變量n Ctrl-F2停止程序調(diào)試停止程序調(diào)試n Ctrl-F8設(shè)置斷點設(shè)置斷點C語言相關(guān)文件語言相關(guān)文件編寫程序必須的步驟編寫程序必須的步驟o 編輯(編輯(Edit)o 預(yù)編譯預(yù)編譯n預(yù)處理命令:預(yù)處理

16、命令:#include, #define, #if 等等o 編譯(編譯(Compile)n源文件源文件目標(biāo)文件目標(biāo)文件.C.OBJ,.ASM.OBJo 連接(連接(Link)、組建()、組建(Build=編譯連接)編譯連接)n目標(biāo)文件目標(biāo)文件+庫文件庫文件執(zhí)行文件執(zhí)行文件.OBJ+.LIB.EXEo 運行(運行(Run)o 調(diào)試(調(diào)試(Debug)關(guān)于關(guān)于Turbo C環(huán)境環(huán)境(1)o 設(shè)定工作目錄設(shè)定工作目錄n FileChange dir菜單項,鍵入工作目錄菜單項,鍵入工作目錄n 按按Alt-F進入進入File主菜單,或主菜單,或F10進入主菜單行進入主菜單行o 裝入文件裝入文件n Fil

17、eLoad菜單項菜單項n 回車并在列表中選擇源文件回車并在列表中選擇源文件o 新建文件:新建文件:FileNewo 修改后保存文件修改后保存文件n 常規(guī)保存常規(guī)保存FileSaven 或或FileWrite to將文件另存為將文件另存為關(guān)于關(guān)于Turbo C環(huán)境環(huán)境(2)o 編譯文件編譯文件n CompileBuild all菜單項菜單項n 按按Alt-C進入進入Compile主菜單,或按主菜單,或按F10n 成功指示:成功指示:Successn 編譯結(jié)果編譯結(jié)果o Linking E:xxxxxx.EXEo 運行文件運行文件n RunRun菜單項,菜單項,Ctrl-F9n 按按Alt-R進入

18、進入Run主菜單主菜單關(guān)于關(guān)于Turbo C環(huán)境環(huán)境(3)o 觀看運行結(jié)果觀看運行結(jié)果n RunUser screen,Alt-F5o 單步跟蹤單步跟蹤n RunStep over,F(xiàn)8o 觀察變量觀察變量/表達式表達式n Break/watchAdd watch,Ctrl-F7n 按按Alt-B進入進入Break/watch主菜單主菜單關(guān)于關(guān)于VC+環(huán)境環(huán)境o 啟動啟動位置位置n開始菜單開始菜單Microsoft Visual Studio 6.0nMicrosoft Visual C+ 6.0o 編譯錯誤時錯誤列表編譯錯誤時錯誤列表n編譯編譯子窗口子窗口可拉大,滾動輪顯示不同錯誤,雙擊錯誤

19、點可拉大,滾動輪顯示不同錯誤,雙擊錯誤點o 死機問題(編譯死機,死機問題(編譯死機,紅紅無法關(guān)閉窗口)無法關(guān)閉窗口)nCtrl-Alt-Del啟動任務(wù)管理器啟動任務(wù)管理器n應(yīng)用程序結(jié)束任務(wù)應(yīng)用程序結(jié)束任務(wù)n重新運行重新運行VC+ 6.0o 窗口直接關(guān)閉,程序最后追加窗口直接關(guān)閉,程序最后追加getchar();語句語句上機部分問題(上機部分問題(1)保存問題)保存問題o 文件保存文件保存n新建文件的操作新建文件的操作步驟步驟錯誤錯誤o TurboC:FileNew,F(xiàn)ileSave,xxx.Co VC+中步驟:新建文件中步驟:新建文件C+Sourcexxx.Cn源程序的源程序的擴展名必須為擴展

20、名必須為C,不能為其它,也不能有多個,不能為其它,也不能有多個n基本名由字母、數(shù)字、下劃線、減號等組成,基本名不要基本名由字母、數(shù)字、下劃線、減號等組成,基本名不要包含小數(shù)點、空格、加號等,最好不要超過包含小數(shù)點、空格、加號等,最好不要超過8個字符,個字符,各級各級目錄名目錄名也等同命名也等同命名n不合適不合適的文件名如:的文件名如:o ex1-1.txt,ex1.1.c,ex1.1,ex1-1.cppn上機考上機考以源程序為依據(jù),注意源程序以源程序為依據(jù),注意源程序保存保存上機部分問題(上機部分問題(2)拼寫問題)拼寫問題o do /no int n:o #include;o ()混淆混淆o

21、 includ,stidoo mian,pritfo %do no int n;o #include上傳系統(tǒng)的要求上傳系統(tǒng)的要求o 源程序的編寫、運行、調(diào)試、上傳可以使用源程序的編寫、運行、調(diào)試、上傳可以使用Visual C+環(huán)境環(huán)境o 但編程題的但編程題的自動判分自動判分必須使用必須使用TurboC編譯編譯n D:TCTC.BAT或或D:TCBINTC.EXEo 并且程序的文件名、各級目錄名并且程序的文件名、各級目錄名n 不能使用不能使用中文中文,僅字母、數(shù)字、下劃線、減號,僅字母、數(shù)字、下劃線、減號o 注意輸出與樣例應(yīng)注意輸出與樣例應(yīng)嚴(yán)格一致嚴(yán)格一致,包括大小寫,包括大小寫n Yes、YE

22、S、yes互不相同互不相同實驗一實驗一 基礎(chǔ)實驗基礎(chǔ)實驗o 1、復(fù)習(xí)回顧基本語句復(fù)習(xí)回顧基本語句o 2、強調(diào)結(jié)構(gòu)程序設(shè)計的概念、強調(diào)結(jié)構(gòu)程序設(shè)計的概念 學(xué)會畫算法流程圖。學(xué)會畫算法流程圖。o 3、通過例題,習(xí)題加強基本的程序設(shè)計的能力、通過例題,習(xí)題加強基本的程序設(shè)計的能力1、基本控制結(jié)構(gòu)(、基本控制結(jié)構(gòu)(特別注意特別注意+,-運算符進運算符進入條件表達式入條件表達式) 流程控制語句流程控制語句 條件語句條件語句ifelseifelse switch switch語句語句循環(huán)語句循環(huán)語句 forfor語句、語句、whilewhile語句、語句、dowhiledowhile語語句句提前結(jié)束本次循

23、環(huán)語句提前結(jié)束本次循環(huán)語句continuecontinue循環(huán)或多分支終止語句循環(huán)或多分支終止語句breakbreak無條件轉(zhuǎn)移語句無條件轉(zhuǎn)移語句gotogoto返回語句返回語句returnreturn要特別注意各控制結(jié)構(gòu)的流程要特別注意各控制結(jié)構(gòu)的流程基本控制結(jié)構(gòu)基本控制結(jié)構(gòu) 復(fù)合表達式語句復(fù)合表達式語句 C C語言允許把一組語句括在花括號之中構(gòu)成一個語語言允許把一組語句括在花括號之中構(gòu)成一個語句塊,稱之為復(fù)合語句。句塊,稱之為復(fù)合語句。例如例如 char ch; char ch; ch=getchar(); ch=getchar(); putchar(ch); putchar(ch); 2

24、、基本控制結(jié)構(gòu)的使用、基本控制結(jié)構(gòu)的使用o 字符圖形的輸出(考試),字符圖形的輸出(考試),最大公約數(shù)最小公最大公約數(shù)最小公倍數(shù),倍數(shù),素數(shù)(考試)素數(shù)(考試),窮舉法,迭代法的簡單,窮舉法,迭代法的簡單實用實用例題例題1.3(考試)(考試)o 1. main()o int i,j;o for(i=1;i=4;i+)o for(j=1;j=i;j+)o printf(“ “);o printf(“*n”);o o o 可選的可選的C框架框架o #include o void main() /*某些編譯器的要求某些編譯器的要求*/o o o o 嚴(yán)格的嚴(yán)格的C框架框架o #include o i

25、nt main() /*理論上理論上int可以省略可以省略*/o o o return 0; /*省略時編譯器可能給出警告省略時編譯器可能給出警告 */o 部分輔助調(diào)用部分輔助調(diào)用o #include o void main()o o o o getchar(); /*等待按回車后窗口才關(guān)閉等待按回車后窗口才關(guān)閉*/o 綜合程序的開發(fā)流程綜合程序的開發(fā)流程o 我們已了解到編碼只是軟件開發(fā)的一個階段,我們已了解到編碼只是軟件開發(fā)的一個階段,而且是處在實現(xiàn)階段。對于而且是處在實現(xiàn)階段。對于C 語言的初學(xué)者,語言的初學(xué)者,由于沒有正式接受系統(tǒng)化開發(fā)方法的指導(dǎo),往由于沒有正式接受系統(tǒng)化開發(fā)方法的指導(dǎo),

26、往往會形成一個錯誤的認識:往會形成一個錯誤的認識:o 程序的開發(fā)就是編碼。也就是說,拿到問題后程序的開發(fā)就是編碼。也就是說,拿到問題后,馬上就開始寫程序。這種做法的不良后,馬上就開始寫程序。這種做法的不良后果果o 初學(xué)者無法體會到,是因為他們所面臨的需要初學(xué)者無法體會到,是因為他們所面臨的需要解決的問題,無論從規(guī)模而言,還是從難易解決的問題,無論從規(guī)模而言,還是從難易o 程度而言,實在是太小了。程度而言,實在是太小了。o 所以在直接編寫程序的過程中,大腦已經(jīng)讓初所以在直接編寫程序的過程中,大腦已經(jīng)讓初學(xué)者無意識地完成了問題的定以和設(shè)計過程。學(xué)者無意識地完成了問題的定以和設(shè)計過程。但是,這種僥幸

27、的但是,這種僥幸的“個體化個體化”做法對于復(fù)雜的做法對于復(fù)雜的現(xiàn)實問題的解決是絕對行不通的。雖然目前我現(xiàn)實問題的解決是絕對行不通的。雖然目前我們還談不到軟件項目的開發(fā),但是相對初學(xué)階們還談不到軟件項目的開發(fā),但是相對初學(xué)階段,我們已經(jīng)可以解決較為復(fù)雜的問題了,即段,我們已經(jīng)可以解決較為復(fù)雜的問題了,即進入綜合程序的階段,因此,必須從現(xiàn)在開始進入綜合程序的階段,因此,必須從現(xiàn)在開始,樹立正確的開發(fā)觀,為今后專業(yè)化開發(fā)打好,樹立正確的開發(fā)觀,為今后專業(yè)化開發(fā)打好基礎(chǔ)。基礎(chǔ)。綜合程序的開發(fā)流程綜合程序的開發(fā)流程o 遵循軟件的開發(fā)流程,大型綜合程序的開發(fā)經(jīng)遵循軟件的開發(fā)流程,大型綜合程序的開發(fā)經(jīng)歷問題

28、定義、分析、設(shè)計、編碼、測試歷問題定義、分析、設(shè)計、編碼、測試o 和維護幾個階段。和維護幾個階段。綜合程序的開發(fā)流程綜合程序的開發(fā)流程問題定義問題定義o 問題定義階段是整個過程中占用時間最少的階段問題定義階段是整個過程中占用時間最少的階段,在這個步驟中我們的任務(wù)是明確要解決的問題,在這個步驟中我們的任務(wù)是明確要解決的問題是什么。如果不知道問題是什么就試圖解決這個是什么。如果不知道問題是什么就試圖解決這個問題,顯然是盲目的,只會浪費時間和金錢,結(jié)問題,顯然是盲目的,只會浪費時間和金錢,結(jié)果是毫無意義的。果是毫無意義的。o 在綜合程序訓(xùn)練時期,欲解決的問題可由教師提在綜合程序訓(xùn)練時期,欲解決的問題

29、可由教師提供,或者由學(xué)生自行選題。假若是后者,那么學(xué)供,或者由學(xué)生自行選題。假若是后者,那么學(xué)生必須動動腦筋,尋找身邊有哪些事情可用計算生必須動動腦筋,尋找身邊有哪些事情可用計算機解決,然后確定一個可行的。機解決,然后確定一個可行的。o 例如,某位同學(xué)非常熟悉例如,某位同學(xué)非常熟悉Windows 系統(tǒng)中自帶系統(tǒng)中自帶的掃雷游戲,于是他以此為題,即自己實現(xiàn)。的掃雷游戲,于是他以此為題,即自己實現(xiàn)。程序分析程序分析o 這個階段的任務(wù)仍然不是具體地解決問題,而這個階段的任務(wù)仍然不是具體地解決問題,而是理解問題和分析問題,確定是理解問題和分析問題,確定“為了解決這個為了解決這個問題,目標(biāo)系統(tǒng)必須做什么

30、問題,目標(biāo)系統(tǒng)必須做什么”,主要是確定目,主要是確定目標(biāo)系統(tǒng)必須具備哪些功能。標(biāo)系統(tǒng)必須具備哪些功能。o 例如:開局功能、挖雷功能、標(biāo)記雷功能、標(biāo)例如:開局功能、挖雷功能、標(biāo)記雷功能、標(biāo)記疑問功能、自動挖開功能。記疑問功能、自動挖開功能。o 到這里,程序分析的工作就結(jié)束了。接下來,到這里,程序分析的工作就結(jié)束了。接下來,將進入下一階段將進入下一階段程序設(shè)計程序設(shè)計的工作。可的工作。可能的輸入或輸出數(shù)據(jù)是什么。能的輸入或輸出數(shù)據(jù)是什么。程序設(shè)計程序設(shè)計o 著名計算機科學(xué)家著名計算機科學(xué)家Nikiklaus Wirth 提出了提出了公式:程序公式:程序=算法算法+數(shù)據(jù)結(jié)構(gòu),這一公式反映數(shù)據(jù)結(jié)構(gòu),這

31、一公式反映o 了程序的兩個要素:算法和數(shù)據(jù)結(jié)構(gòu),實際上了程序的兩個要素:算法和數(shù)據(jù)結(jié)構(gòu),實際上,程序還應(yīng)當(dāng)有另外兩個要素:,程序還應(yīng)當(dāng)有另外兩個要素:程序設(shè)計方法程序設(shè)計方法o 和語言工具。和語言工具。o 這四個方面是一個程序設(shè)計人員所應(yīng)具備的知這四個方面是一個程序設(shè)計人員所應(yīng)具備的知識。算法是靈魂,數(shù)據(jù)結(jié)構(gòu)是加工對象,識。算法是靈魂,數(shù)據(jù)結(jié)構(gòu)是加工對象,語言語言是工具,程序設(shè)計需要好的設(shè)計方法。是工具,程序設(shè)計需要好的設(shè)計方法。 C語言程序設(shè)計 第二章 程序的靈魂算法程序設(shè)計包括的內(nèi)容:v數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)的類型和組織形式v算法:操作步驟的描述Nikiklaus Wirth提出: 程序= 數(shù)據(jù)結(jié)

32、構(gòu)+算法教材認為: 程序 =算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計方法+語言工具和環(huán)境 靈魂加工對象工具程序設(shè)計程序設(shè)計o 程序這個階段的設(shè)計工作,應(yīng)該對要解決的問程序這個階段的設(shè)計工作,應(yīng)該對要解決的問題設(shè)計出具體的解決方案,得出對目標(biāo)系統(tǒng)的題設(shè)計出具體的解決方案,得出對目標(biāo)系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直精確描述,從而在編碼階段可以把這個描述直接翻譯成用接翻譯成用C 語言書寫的程序。語言書寫的程序。o 當(dāng)然,程序設(shè)計將采用結(jié)構(gòu)化程序設(shè)計方法,當(dāng)然,程序設(shè)計將采用結(jié)構(gòu)化程序設(shè)計方法,自頂向下逐步求精地設(shè)計出綜合程序的實現(xiàn)自頂向下逐步求精地設(shè)計出綜合程序的實現(xiàn)“藍圖藍圖”。為此,我們首先介紹結(jié)

33、構(gòu)化程序設(shè)計。為此,我們首先介紹結(jié)構(gòu)化程序設(shè)計方法,然后列舉描述算法的常用工具,方法,然后列舉描述算法的常用工具,什么是結(jié)構(gòu)化程序設(shè)計呢?什么是結(jié)構(gòu)化程序設(shè)計呢?o 結(jié)構(gòu)化程序設(shè)計是一種設(shè)計程序的技術(shù),它采結(jié)構(gòu)化程序設(shè)計是一種設(shè)計程序的技術(shù),它采用自頂向下逐步求精的設(shè)計方法和單入口單出用自頂向下逐步求精的設(shè)計方法和單入口單出口的控制結(jié)構(gòu)。口的控制結(jié)構(gòu)。設(shè)計工具設(shè)計工具o 在理想情況下,設(shè)計的描述應(yīng)該采用自然語言來在理想情況下,設(shè)計的描述應(yīng)該采用自然語言來表達,不熟悉軟件的人不需要重新學(xué)習(xí)就可以理表達,不熟悉軟件的人不需要重新學(xué)習(xí)就可以理解。但是,自然語言在語法和語義上往往具有多解。但是,自然語

34、言在語法和語義上往往具有多義性,常常要依賴上下文才能把問題交代清楚,義性,常常要依賴上下文才能把問題交代清楚,而且即使可以描述,也需要大量的篇幅,非常煩而且即使可以描述,也需要大量的篇幅,非常煩瑣。所以必須使用簡潔的方式表達整體結(jié)構(gòu),用瑣。所以必須使用簡潔的方式表達整體結(jié)構(gòu),用約束性強的方式來表達算法。設(shè)計工具可以對設(shè)約束性強的方式來表達算法。設(shè)計工具可以對設(shè)計進行無歧義的描述,能指明控制流程、處理功計進行無歧義的描述,能指明控制流程、處理功能以及其它方面的實現(xiàn)細節(jié)。俗話說能以及其它方面的實現(xiàn)細節(jié)。俗話說“千言萬語千言萬語抵不過一幅畫抵不過一幅畫”,下面的三種常用工具是圖形方,下面的三種常用工

35、具是圖形方式的工具。式的工具。層次圖層次圖o 層次圖用來描述軟件的層次結(jié)構(gòu),圖中的一個層次圖用來描述軟件的層次結(jié)構(gòu),圖中的一個矩形框代表一個模塊,方框間的連線表示調(diào)用矩形框代表一個模塊,方框間的連線表示調(diào)用關(guān)系。關(guān)系。學(xué)生成績管理系統(tǒng)成績錄入成績查詢成績輸出程序流程圖程序流程圖o 程序流程圖是歷史最悠久使用最廣泛的描述軟程序流程圖是歷史最悠久使用最廣泛的描述軟件設(shè)計的方法。它的主要優(yōu)點是對控制流程的件設(shè)計的方法。它的主要優(yōu)點是對控制流程的描述很直觀,便于初學(xué)者掌握,但這種用箭頭描述很直觀,便于初學(xué)者掌握,但這種用箭頭代表控制流的方法,容易使程序員不受任何約代表控制流的方法,容易使程序員不受任何

36、約束,可以完全不顧結(jié)構(gòu)化程序設(shè)計的精神,隨束,可以完全不顧結(jié)構(gòu)化程序設(shè)計的精神,隨意轉(zhuǎn)移控制。意轉(zhuǎn)移控制。盒圖(盒圖(NS圖)圖)o 盒圖上能明確表達功能域,不可能任意轉(zhuǎn)移控盒圖上能明確表達功能域,不可能任意轉(zhuǎn)移控制,很容易確定局部和全局?jǐn)?shù)據(jù)的作用域,制,很容易確定局部和全局?jǐn)?shù)據(jù)的作用域,o 很容易表現(xiàn)嵌套關(guān)系,而且也可以表示模塊的很容易表現(xiàn)嵌套關(guān)系,而且也可以表示模塊的層次結(jié)構(gòu)。所以堅持使用盒圖作為設(shè)計的工具層次結(jié)構(gòu)。所以堅持使用盒圖作為設(shè)計的工具,可以使程序員逐步養(yǎng)成用結(jié)構(gòu)化的方式思考,可以使程序員逐步養(yǎng)成用結(jié)構(gòu)化的方式思考問題和解決問題的習(xí)慣。問題和解決問題的習(xí)慣。o 圖形工具表示設(shè)計確

37、實比較直觀,但畫起來比圖形工具表示設(shè)計確實比較直觀,但畫起來比較費勁,所以描述設(shè)計還可以使用偽碼這個常較費勁,所以描述設(shè)計還可以使用偽碼這個常用的語言工具。偽碼是一種用的語言工具。偽碼是一種“混合混合”語言,它語言,它使用一種語言使用一種語言通常是某種自然語言通常是某種自然語言的的詞匯,同時卻使用某種結(jié)構(gòu)化程序設(shè)計語言的詞匯,同時卻使用某種結(jié)構(gòu)化程序設(shè)計語言的語法。這樣,它具有嚴(yán)格的關(guān)鍵字外部語法,語法。這樣,它具有嚴(yán)格的關(guān)鍵字外部語法,而表示實際操作和條件的內(nèi)部語法又是靈活自而表示實際操作和條件的內(nèi)部語法又是靈活自由的,書寫方便,也比較好懂。由的,書寫方便,也比較好懂。考試統(tǒng)計問題算法的偽碼

38、表示。考試統(tǒng)計問題算法的偽碼表示。 總結(jié)怎樣表示一個算法自然語言表示v2.2節(jié)例。易懂,文字冗長,易歧義性流程圖表示v用流程圖符號構(gòu)成,直觀,易懂 N-S流程圖表示偽代碼表示計算機語言表示q 順序結(jié)構(gòu)q 選擇結(jié)構(gòu)q 循環(huán)結(jié)構(gòu) C語言程序設(shè)計 第二章 程序的靈魂算法 傳統(tǒng)流程圖流向混亂、可讀性差,所以應(yīng)該采用結(jié)構(gòu)化流程圖。 結(jié)構(gòu)化程序設(shè)計v 基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,限制使用無條件轉(zhuǎn)移語句(goto)v 結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序v 優(yōu)點:結(jié)構(gòu)清晰,易讀,提高程序設(shè)計質(zhì)量和效率三種基本結(jié)構(gòu)v 順序結(jié)構(gòu)ABAB流程圖N-S圖 C語言程序設(shè)計 第二章 程序的靈魂算

39、法PAB真假PBA真假v選擇結(jié)構(gòu)kA1A2AiAnk=k2k=k1k=knk=ki.l二分支選擇結(jié)構(gòu)l多分支選擇結(jié)構(gòu) C語言程序設(shè)計 第二章 程序的靈魂算法v循環(huán)結(jié)構(gòu)l當(dāng)型循環(huán)結(jié)構(gòu)l直到型循環(huán)結(jié)構(gòu)PA假真當(dāng)P為真AAP真假A直到P為真注:A,B,A1.An可以是一個簡單語句,也可以是一個基本結(jié)構(gòu) C語言程序設(shè)計 第二章 程序的靈魂算法 三種基本結(jié)構(gòu)的共同特點: v只有一個入口;v只有一個出口;v結(jié)構(gòu)內(nèi)的每一部分都有機會被執(zhí)行到;v結(jié)構(gòu)內(nèi)不存在“死循環(huán)”。 C語言程序設(shè)計 第二章 程序的靈魂算法 算法的概念為解決一個問題而采取的方法和步驟,就成為算法。例如:歌曲的樂譜,建造房子等。算法核心是解決

40、“做什么”和“怎么做”的問題。v例:求15之積。v可以有多種方法,一般采用簡單和運算步驟少的。準(zhǔn)確、高效計算機算法類別v數(shù)值運算算法v非數(shù)值運算算法 C語言程序設(shè)計 第二章 程序的靈魂算法簡單算法舉例例2.1v方法1:累乘v方法2:用循環(huán)結(jié)構(gòu)解決,靈活、通用。例2.2v通過循環(huán)選擇打印例2.3v判斷閏年例2.4v累加求級數(shù)的和,循環(huán)改變正負號和分母加1。例2.5v判斷素數(shù)課后認真思考,加深什么是算法的概念 C語言程序設(shè)計 第二章 程序的靈魂算法算法的特性有窮性在合理范圍內(nèi)可完成 確定性無歧義性 有零個或多個輸入從外界得到信息 有一個或多個輸出問題的答案 有效性每步有確定的結(jié)果例題例題 1輸入二

41、個整數(shù)輸入二個整數(shù)m和和n,輸出其中的最大值,輸出其中的最大值#include main() int m,n; scanf(%d,&m); scanf(%d,&n); if ( m=n ) printf(%dn,m); else printf(%dn,n);1、選擇結(jié)構(gòu)程序設(shè)計、選擇結(jié)構(gòu)程序設(shè)計實驗練習(xí)實驗練習(xí)例判斷點是否在圓上:例判斷點是否在圓上:由鍵盤輸入一個點的坐標(biāo), 要求編程判斷這個點是否在單位圓上,點在圓上輸出Y, 不在圓上輸出N。使用小數(shù)點后3位精度進行判斷。第一組自測數(shù)據(jù)鍵盤輸入0.707,0.707正確輸出Y第二組自測數(shù)據(jù)鍵盤輸入0.5,0.5正確輸出N提示(1

42、)平面上的點與圓的關(guān)系分為在圓內(nèi)、在圓上、在圓外三種,本題要求判斷是否在圓上;(2)判斷兩實數(shù)相等采用判斷這兩實數(shù)的差的絕對值小于規(guī)定誤差精度(本題為0.001)的方法實現(xiàn)。#include #include stdio.hstdio.h #include #include math.hmath.h void main()void main() float float a,ba,b; ; scanfscanf(%(%f,%f,&a,&bf,%f,&a,&b);); if( if(fabsfabs(a(a* *a+ba+b* *b-1)1e-3)b-1)1e-3)

43、 printfprintf(Yn);(Yn); else else printfprintf(Nn);(Nn); 參考程序:參考程序:簡單計算器簡單計算器下面程序是實現(xiàn)一個簡單的運算器(保留兩位小數(shù)點),如果由鍵盤輸入10+50,計算機可以輸出結(jié)果60.00;如果輸入86,計算機輸出48.00;如果輸入20/4,計算機輸出5.00;如果輸入8-6,計算機輸出2.00,請在空處填上適當(dāng)?shù)拇a,運行通過后并提交。第一組自測數(shù)據(jù)鍵盤輸入45*2第二組自測數(shù)據(jù)鍵盤輸入50.1-23#include stdio.hvoid main() float a,b,c; char op; scanf(%f%c%

44、f, ); switch (op) case +: ; case -: _; case *: _; case /: _ ; default: printf(error); printf(result= , c);參考程序:參考程序:#include int main() float a,b,c;char op;scanf(%f%c%f,&a,&op,&b);switch(op) case +:c=a+b;break;case -:c=a-b;break;case *:c=a*b;break;case /:c=a/b;break;default:printf(error)

45、;break;printf(result=%.2f,c);例題例題2 輸出輸出100以內(nèi)所有偶數(shù)以內(nèi)所有偶數(shù)#include main() int i; for (i=1;i C語言程序設(shè)計 第二章 程序的靈魂算法v練習(xí)練習(xí)v求求1+2+3+1+2+3+。+100+100的算法流程圖。的算法流程圖。計算數(shù)列和計算數(shù)列和有數(shù)列:編程實現(xiàn),由鍵盤輸入n,計算輸出數(shù)列前n項和。(結(jié)果保留四位小數(shù))#includemain() int i,t,n; float a=2,b=1,s=0; scanf(%d,&n); for(i=1;i=n;i+) s=s+a/b; t=a;a=a+b;b=t;

46、printf(%.4fn,s);參考程序:參考程序:回憶:例題回憶:例題1.3(考試)(考試)o 1. main()o int i,j;o for(i=1;i=4;i+)o for(j=1;j=i;j+)o printf(“ “);o printf(“*n”);o o o 由鍵盤輸入正數(shù)n,要求輸出2*n+1 行的菱形圖案。要求菱形左邊緊靠屏幕左邊。菱形圖案菱形圖案#include stdio.h#include math.hmain() int n,i,j,k; scanf(%d,&n); for(i=1;i=2*n+1;i+) k=abs(n+1-i); for(j=1;j=k;j

47、+) printf( ); for(j=1;j=2*n+1-2*k;j+) printf(*); printf(n); 參考程序:參考程序:由鍵盤輸入正數(shù)由鍵盤輸入正數(shù)n,要求輸出中間數(shù)字為,要求輸出中間數(shù)字為n的的菱形圖案。要求菱形左邊緊靠屏幕左邊。菱形圖案。要求菱形左邊緊靠屏幕左邊。鍵盤輸入4正確輸出 1 121 123211234321 12321 121 1鍵盤輸入3正確輸出 1 12112321 121 1參考程序:參考程序:參考程序:參考程序:# include# includemain() int n,i,j,k,h;scanf(%d,&n);for(i=-n+1;i=n

48、-1;i+) for(j=0;jabs(i);j+)printf( );for(k=1;k=1;h-) printf(%d,h);printf(n);* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *c c語言程序設(shè)計語言程序設(shè)計課程設(shè)計課程設(shè)計 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 程序設(shè)計:程序設(shè)計:XXXX系系XXXX專業(yè)專業(yè)XXXXXX X

49、XXX XXXX年年XXXX月月XXXX日日_ _練習(xí)(完成這樣的設(shè)計程序)練習(xí)(完成這樣的設(shè)計程序)1 1、軟件封面(參考)、軟件封面(參考)1 1、一元二次方程求根、一元二次方程求根2 2、循環(huán)、循環(huán)3 3、。、。0 0、退出、退出 請選擇(請選擇(0-n0-n):):2 2、登錄成功后主菜單(參考選擇菜單)、登錄成功后主菜單(參考選擇菜單)實驗題目實驗題目1-1o上機要求:上機要求:按程序功能要求編寫程序,按程序功能要求編寫程序, o程序功能:從鍵盤上輸入程序功能:從鍵盤上輸入5個整數(shù)(設(shè)每個整數(shù)取值個整數(shù)(設(shè)每個整數(shù)取值1至至5),按示例),按示例格式輸出格式輸出5行數(shù)字圖形,每行的數(shù)

50、字及數(shù)字個數(shù)與輸入數(shù)相對應(yīng)。行數(shù)字圖形,每行的數(shù)字及數(shù)字個數(shù)與輸入數(shù)相對應(yīng)。o如輸入:如輸入:o 5 4 3 2 1o則輸出(表示空格,則輸出(表示空格, 表示回車):表示回車):o o o o o o示例說明:示例說明:輸出共輸出共5行,居中對齊形狀。輸入的第行,居中對齊形狀。輸入的第1個數(shù)為個數(shù)為5,則輸出,則輸出的第的第1行有行有5個個5,數(shù)字之間含有,數(shù)字之間含有1個空格,第個空格,第1個個5之前有之前有5-5=0個個空格;輸入的第空格;輸入的第2個數(shù)為個數(shù)為4,則輸出的第,則輸出的第2行有行有4個個4,數(shù)字之間含有,數(shù)字之間含有1個空格,第個空格,第1個個4之前有之前有5-4=1個空

51、格;以此類推。個空格;以此類推。o再如輸入:再如輸入:o 2 3 2 1 2o則輸出(表示空格,則輸出(表示空格, 表示回車):表示回車):o o o o o o示例說明:示例說明:輸出共輸出共5行,居中對齊形狀。輸入的第行,居中對齊形狀。輸入的第1個數(shù)為個數(shù)為2,則輸出,則輸出的第的第1行有行有2個個2,數(shù)字之間含有,數(shù)字之間含有1個空格,第個空格,第1個個2之前有之前有5-2=3個個空格;以此類推。空格;以此類推。實驗二實驗二 數(shù)組與函數(shù)數(shù)組與函數(shù)o 一、復(fù)習(xí)數(shù)組概念一、復(fù)習(xí)數(shù)組概念數(shù)數(shù) 組組排序問題排序問題找出矩陣中最大值所在的位置找出矩陣中最大值所在的位置進制轉(zhuǎn)換進制轉(zhuǎn)換本章要點本章要

52、點o 什么是數(shù)組什么是數(shù)組? 為什么要使用數(shù)組為什么要使用數(shù)組? 如何定義數(shù)組如何定義數(shù)組?o 如何引用數(shù)組元素如何引用數(shù)組元素?o 二維數(shù)組的元素在內(nèi)存中按什么方式存放二維數(shù)組的元素在內(nèi)存中按什么方式存放?o 什么是字符串什么是字符串? 字符串結(jié)束符的作用是什么字符串結(jié)束符的作用是什么?o 如何實現(xiàn)字符串的存儲和操作,包括字符串的輸如何實現(xiàn)字符串的存儲和操作,包括字符串的輸入和輸出入和輸出?o 怎樣理解怎樣理解C語言將字符串作為一個特殊的一維字符語言將字符串作為一個特殊的一維字符數(shù)組數(shù)組?o 數(shù)組:數(shù)組:相同類型相同類型數(shù)據(jù)的數(shù)據(jù)的有序有序集合集合,在內(nèi)存中連續(xù),在內(nèi)存中連續(xù)存放。存放。 由

53、數(shù)組名和下標(biāo)惟一地確定每個數(shù)組元素由數(shù)組名和下標(biāo)惟一地確定每個數(shù)組元素 每個元素都屬于同一類型每個元素都屬于同一類型一批相同類型的變量使用同一個數(shù)組變量名,用下一批相同類型的變量使用同一個數(shù)組變量名,用下標(biāo)來相互區(qū)分。標(biāo)來相互區(qū)分。優(yōu)點:表述簡潔,可讀性高;便于使用優(yōu)點:表述簡潔,可讀性高;便于使用循環(huán)循環(huán)結(jié)構(gòu)結(jié)構(gòu)定義數(shù)組定義數(shù)組類型名類型名 數(shù)組名數(shù)組名數(shù)組長度數(shù)組長度引用數(shù)組元素引用數(shù)組元素數(shù)組名數(shù)組名下標(biāo)下標(biāo)int a10;a0 = a9 = 0;ak = temp;區(qū)分?jǐn)?shù)組的定義和數(shù)組元素的引用區(qū)分?jǐn)?shù)組的定義和數(shù)組元素的引用下標(biāo)不要越界下標(biāo)不要越界數(shù)組長度為常量數(shù)組長度為常量 使用一維

54、數(shù)組編程使用一維數(shù)組編程數(shù)組和循環(huán)數(shù)組和循環(huán)for(i = 0; i n; i+) printf(%d , ai);數(shù)組下標(biāo)作為循環(huán)變量,通過循環(huán),逐個處數(shù)組下標(biāo)作為循環(huán)變量,通過循環(huán),逐個處理數(shù)組元素理數(shù)組元素 一維數(shù)組示例一維數(shù)組示例例例 1 用數(shù)組計算用數(shù)組計算fibonacci數(shù)列的前數(shù)列的前20個數(shù),并按每個數(shù),并按每行打印行打印5個數(shù)的格式輸出。個數(shù)的格式輸出。1, 1, 2, 3, 5, 例例2 輸入輸入5個整數(shù),將它們存入數(shù)組個整數(shù),將它們存入數(shù)組a中,再輸入中,再輸入1個數(shù)個數(shù)x,然后在數(shù)組中查找然后在數(shù)組中查找x,如果找到,輸出相應(yīng)的下如果找到,輸出相應(yīng)的下標(biāo),否則,輸出標(biāo)

55、,否則,輸出“Not Found”。例例 3 輸入輸入n(n10),再再輸入輸入n個數(shù)個數(shù)(1) 求最小值求最小值(2) 求最小值和它所對應(yīng)的下標(biāo)求最小值和它所對應(yīng)的下標(biāo)(3) 將最小值與第一個數(shù)交換,輸出交換后的將最小值與第一個數(shù)交換,輸出交換后的n個數(shù)個數(shù)例例 4 輸入輸入n(n10),再再輸入輸入n個數(shù),用選擇法將它們個數(shù),用選擇法將它們從小到大排序后輸出。從小到大排序后輸出。用數(shù)組計算用數(shù)組計算fibonacci數(shù)列的前數(shù)列的前20個數(shù),并個數(shù),并按每行打印按每行打印5個數(shù)的格式輸出。個數(shù)的格式輸出。1, 1, 2, 3, 5, 8, 13, 用數(shù)組計算并存放用數(shù)組計算并存放fibon

56、acci數(shù)列的前數(shù)列的前20個數(shù)個數(shù)f0 = f1 = 1fn = fn-1 + fn-2 2n19例例 1 計算計算fibonacci數(shù)列數(shù)列輸入輸入5個整數(shù),將它們存入數(shù)組個整數(shù),將它們存入數(shù)組a中,再輸入中,再輸入1個數(shù)個數(shù)x,然后在數(shù)組中查找然后在數(shù)組中查找x,如果找到,輸出相應(yīng)的如果找到,輸出相應(yīng)的下標(biāo),否則,輸出下標(biāo),否則,輸出“Not Found”。輸入:輸入:2 9 8 9 6 9輸出:輸出:1輸入:輸入:2 9 8 9 6 7輸出:輸出:Not Found例例2 在數(shù)組中查找一個給定的數(shù)在數(shù)組中查找一個給定的數(shù)#include int main(void) int i, fl

57、ag, x; int a5; printf(“Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, &ai); printf(“Enter x: ); scanf(%d, &x); flag = 0; for(i = 0; i 5; i+) if(ai = x) printf(Index is %dn, i); flag = 1; break; if(flag = 0) printf(Not Foundn); return 0; 例例 2源程序源程序Enter 5 integers: 2 9 8 1 9Enter x: 9Inde

58、x is 1Enter 5 integers: 2 9 8 1 9Enter x: 7Not Found#include int main(void) int i, flag, x; int a5; printf(“Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, &ai); printf(“Enter x: ); scanf(%d, &x); flag = 0; for(i = 0; i 5; i+) if(ai = x) printf(Index is %dn, i); flag = 1; break; if(flag =

59、 0) printf(Not Foundn); return 0; 例例 2 思考思考(1)Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 1Index is 4#include int main(void) int i, sub, x; int a5; printf(“Enter 5 integers: ); for(i = 0; i 5; i+) scanf(%d, &ai); printf(“Enter x: ); scanf(%d, &x); sub = -1; for(i = 0; i 5; i+) if(ai = x) s

60、ub = i; if(sub != -1) printf(Index is %dn, i); else printf(Not Foundn); return 0; 例例 2 思考思考(2)Enter 5 integers: 2 9 8 1 9Enter x: 9Index is 4輸入輸入n(n10), 再再輸入輸入n個數(shù)個數(shù), 輸出最小值和輸出最小值和它所對應(yīng)的下標(biāo)。它所對應(yīng)的下標(biāo)。用用index記錄最小值對應(yīng)的下標(biāo)記錄最小值對應(yīng)的下標(biāo)aindex就是最小值就是最小值例例 3(2) 求最小值及其下標(biāo)求最小值及其下標(biāo)#include int main(void) int i, index, n; int a10; printf(“Enter n: ); scanf(%d, &n); printf(“Enter %d integers:

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論