


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、計算機等級考試二級C 語言常用的算法什么是程序?程序= 數據結構 + 算法。對于面向對象程序設計,強調的是數據結構,而對于面向過程的程序設計語言如C、 Pas c a l 、 F O RT R A N 等語言,主要關注的是算法。掌握算法,也是為面向對象程序設計打下一個扎實的基礎。那么,什么是算法呢?人們使用計算機,就是要利用計算機處理各種不同的問題,而要做到這一點,人們就必須事先對各類問題進行分析,確定解決問題的具體方法和步驟,再編制好一組讓計算機執行的指令即程序,交給計算機,讓計算機按人們指定的步驟有效地工作。這些具體的方法和步驟,其實就是解決一個問題的算法。根據算法,依據某種規則編寫計算機
2、執行的命令序列,就是編制程序,而書寫時所應遵守的規則,即為某種語言的語法。由此可見, 程序設計的關鍵之一, 是解題的方法與步驟, 是算法。 學習高級語言的重點,就是掌握分析問題、解決問題的方法,就是鍛煉分析、分解,最終歸納整理出算法的能力。與之相對應,具體語言,如C語言的語法是工具,是算法的一個具體實現。所以在高級語言的學習中,一方面應熟練掌握該語言的語法,因為它是算法實現的基礎,另一方面必須認識到算法的重要性,加強思維訓練,以寫出高質量的程序。下面通過例子來介紹如何設計一個算法: 例 1-4 輸入三個數,然后輸出其中的數。首先,得先有個地方裝這三個數,我們定義三個變量A B、C,將三個數依次
3、輸入到A、B、C中,另外,再準備一個M A X裝數。由于計算機一次只能比較兩個數,我們首先把 A與B 比,大的數放入 M A X 中,再把 M A X 與 C 比,又把大的數放入 M A X 中。最后,把M A X輸出,此時M A X中裝的就是A、B、C三數中的一個數。算法可以表示如下:1) 輸入A、 B、 C。2) A與B中大的一個放入M A X中。3)把C與M A X中大的一個放入 M A X中。4) 輸出 M A X , M A X 即為數。其中的 2 ) 、 3 ) 兩步仍不明確,無法直接轉化為程序語句,可以繼續細化:2)把A與B中大的一個放入 M A X中,若 A B ,則 MAXA
4、;否則 MAXB。3)把C與M A X中大的一個放入 M A X中,若 C M A X ,則 M A XCo 于是算法最后可以寫成:1) 輸入A, B, C。2)若 A B ,則 MAX A;否則M A XB。3)若 C M A X ,則 M A XC。4) 輸出 M A X , M A X 即為數。這樣的算法已經可以很方便地轉化為相應的程序語句了。 例 1-5 猴子吃桃問題:有一堆桃子不知數目,猴子第一天吃掉一半,覺得不過癮,又多吃了一只,第二天照此辦理,吃掉剩下桃子的一半另加一個,天天如此,到第十天早上,猴子發現只剩一只桃子了,問這堆桃子原來有多少個?此題粗看起來有些無從著手的感覺,那么怎
5、樣開始呢?假設第一天開始時有a1 只桃子,第二天有 a2 只, . . . ,第 9 天有 a9 只,第 1 0 天是 a1 0 只,在 a1, a2, . . ., a1 0 中,只有al 0= 1是知道的,現要求 al,而我們可以看出,a1, a2, . ., al 0之間存在一個簡單的關系:a9= 2 * ( a1 0+ 1 )a8= 2 * ( a9+ 1 ) 1 Ia1= 2 * ( a2+ 1 )也就是: ai= 2 * ( ai + 1+1) i=9,8,7,6,.,1這就是此題的數學模型。再考察上面從a9 , a8 直至 a1 的計算過程,這其實是一個遞推過程,這種遞推的方法在
6、計算機解題中經常用到。 另一方面, 這九步運算從形式上完全一樣, 不同的只是ai 的下標而已。由此,我們引入循環的處理方法,并統一用 a0 表示前一天的桃子數, a1 表示后一天的桃子數,將算法改寫如下:a1=1; 第1 0天的桃子數,al的初值i = 9 。計數器初值為9a0= 2 * ( a1+ 1 )。計算當天的桃子數a1= a0 。 將當天的桃子數作為下一次計算的初值i=i-1。若 i = 1 ,轉 2 ) 。輸出a0 的值。其中2 )5 )步為循環。這就是一個從具體到抽象的過程,具體方法是:弄清如果由人來做,應該采取哪些步驟。對這些步驟進行歸納整理,抽象出數學模型。對其中的重復步驟,
7、 通過使用相同變量等方式求得形式的統一, 然后簡練地用循環解決。算法的描述方法有自然語言描述、偽代碼、流程圖、 N - S 圖、 PA D 圖等。1.4.1 流程圖與算法的結構化描述流程圖流程圖是一種傳統的算法表示法,它利用幾何圖形的框來代表各種不同性質的操作,用流程線來指示算法的執行方向。由于它簡單直觀,所以應用廣泛,特別是在早期語言階段,只有通過流程圖才能簡明地表述算法,流程圖成為程序員們交流的重要手段,直到結構化的程序設計語言出現,對流程圖的依賴才有所降低。下面介紹常見的流程圖符號及流程圖的例子。本章例 1 - 1 的算法的流程圖如圖 1 - 2 所示。本章例 1 - 2 的算法的流程圖如圖 1 - 3所示。在流程圖中,判斷框左邊的流程線表示判斷條件為真時的流程,右邊的流程線表示條件為假時的流程,有時就在其左、右流程線的上方分別標注真、假或T、F或Y、N。另外還規定,流程線是從下往上或從右向左時,必須帶箭頭,除此以外,都不畫箭頭,流程線的走向總是從上向下或從左向右。算法的結構化描述早期的非結構化語言中都有g o t o 語句,它允許程序從一個地方直接跳轉到另一個地方去。執行這樣做的好處是程序設計十分方便靈活,減少了人工復雜度,但其缺點也是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 內蒙古科技大學《土木工程力學》2023-2024學年第二學期期末試卷
- 四川省德陽市中學江縣市級名校2025年初三下第三次周考綜合試題含解析
- 西藏拉薩片八校2025年高三寒假測試二歷史試題含解析
- 江門職業技術學院《智能計算系統》2023-2024學年第二學期期末試卷
- 咸寧市嘉魚縣2025年數學三下期末教學質量檢測試題含解析
- 濰坊食品科技職業學院《朝鮮語會話(Ⅲ)》2023-2024學年第二學期期末試卷
- 煙臺城市科技職業學院《健康評估技能》2023-2024學年第一學期期末試卷
- 山東水利職業學院《大學生就業指導》2023-2024學年第一學期期末試卷
- 遼寧省錦州市2025屆下學期第三次考試英語試題(輔導班)試題含解析
- 二零二五股權轉讓協議之補充協議
- 電工電子技術及應用全套課件
- 護理管理學練習題題庫
- DB33T 1233-2021 基坑工程地下連續墻技術規程
- 8.生發項目ppt課件(66頁PPT)
- 手榴彈使用教案
- 《新農技推廣法解讀》ppt課件
- 車載式輪椅升降裝置的結構設計-畢業設計說明書
- 社區家庭病床護理記錄文本匯總
- 劍橋BEC中級真題第四輯TEST1
- 畢業設計(論文)-CK6150總體及縱向進給和尾座部件的設計
- 施工項目人員任命書(范本)
評論
0/150
提交評論