C語言程式設計(三)10 10

2021-09-28 14:25:19 字數 1676 閱讀 8769

程式=演算法+資料結構

1.什麼是演算法?

廣義地說,為解決乙個問題而採取的方法和步驟,就稱為「演算法」。對同乙個問題,可以有不同的解題方法和步驟。為了有效地進行解題,不僅需要保證演算法正確,還要考慮演算法的質量,選擇合適的演算法。

計算機演算法可分為兩大類別:

◆數值運算演算法

◆非數值運算演算法

注:數值運算的目的是求數值解

非數值運算包括的面十分廣泛,最常見的是用於事務管理領域

2.演算法的特性

乙個有效演算法應該具有以下特點:

(1)有窮性。乙個演算法應包含有限的操作步驟,而不能是無限的。

(2)確定性。演算法中的每乙個步驟都應當是確定的,而不應當是含糊的、模稜兩可的。

(3)有零個或多個輸入。所謂輸入是指在執行演算法時需要從外界取得必要的資訊。

(4)有乙個或多個輸出。演算法的目的是為了求解,「解」就是輸出。

◆沒有輸出的演算法是沒有意義的。

(5)有效性。演算法中的每乙個步驟都應當能

有效地執行,並得到確定的結果。

3.表示演算法

(1)用自然語言表示演算法

*用自然語言表示通俗易懂,但文字冗長,容易出現歧義性

*用自然語言描述包含分支和迴圈的演算法,不很方便

*除了很簡單的問題外,一般不用自然語

流程圖是表示 演算法的較好的工具:

乙個流程圖包括以下幾部分:

(1)表示相應操作的框

(2)帶箭頭的流程線

(3)框內外必要的文字說明

➢流程線不要忘記畫箭頭,否則難以判定各框的執行次序

(2)傳統流程圖

傳統流程圖的弊端:

傳統的流程圖用流程線指出各框的執行順 序,對流程線的使用沒有嚴格限制》使用者可以毫不受限制地使流程隨意地轉 來轉去,使人難以理解演算法的邏輯

三種基本結構和改進的流程圖:順序結構 選擇結構 迴圈結構

共同點:

(3)用n-s流程圖表示演算法

乙個結構化的演算法是由一-些基本結構順序 組成的

在基本結構之間不存在向前或向後的跳轉,流程的轉移只存在於乙個基本結構範圍之內

乙個非結構化的演算法可以用乙個等價的結 構化演算法代替,其功能不變

如果乙個演算法不能分解為若干個基本結構,則它必然不是乙個結構化的演算法

(4)用偽**表示演算法

偽**是用介於自然語言和計算機語言之間的文字和符號來描述演算法

用偽**寫演算法並無固定的、嚴格的語法 規則,可以用英文,也可以中英文混用

(5)用計算機語言表示演算法

要完成一項工作,包括設計演算法和實現演算法兩個部分。

設計演算法的目的是為了實現演算法。

不僅要考慮如何設計乙個演算法,也要考慮如何實現乙個演算法。

4.結構化程式設計方法:

(1)結構化程式設計強調程式設計風格和程式結構的規範化,提倡清晰的結構。

(2)結構化程式設計方法的基本思路是:把乙個複雜問題的求解過程分階段進行,每個階段處理的問題都控制 在人們容易理解和處理的範圍內。

5.採取以下方法保證得到結構化的程式:

(1)自頂向下;

(2)逐步細化;

(3)模組化設計;

(4)結構化編碼。

C語言程式設計入門(三)

寫程式就像建立模型一樣,乙個完整的程式不僅有所謂的磚,也有所謂的框架,其實框架這個東西在後來的學習中將會指代封閉好的工具包一樣的東西。在這裡我們指的框架是指如何讓這些 磚 完成更加複雜的功能。這就涉及到了一些語句。即順序執行的語句,按照一定條件才執行的語句,按照條件進行迴圈的語句。順序語句不用多說,...

程式設計入門 C語言(三)

你的程式要讀入一系列正整數資料,輸入 1表示輸入結束,1本身不是輸入的資料。程式輸出讀到的資料中的奇數和偶數的個數。輸入格式 一系列正整數,整數的範圍是 0,100000 如果輸入 1則表示輸入結束。輸出格式 兩個整數,第乙個整數表示讀入資料中的奇數的個數,第二個整數表示讀入資料中的偶數的個數。兩個...

2016SDAU程式設計練習三1010

problem j problem description 有一樓梯共m級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第m級,共有多少種走法?input 輸入資料首先包含乙個整數n,表示測試例項的個數,然後是n行資料,每行包含乙個整數m 1 m 40 表示樓梯的級數。output 對於每個...