版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第 二 章 流程圖與程式 流程圖(flow chart)是用來表示演算法(algorithm)或程式執(zhí)行的過程,是一種常用的方法,讓您能夠輕鬆掌握整個問題的架構(gòu)。 2.1 流程圖 流程圖藉著各種不同的圖形以及一些帶有箭頭的直線來表示各種作業(yè)或功能,帶有箭頭的直線則表示流向。熟練流程圖技巧,可建立良好的程式設(shè)計基楚。 一般常用之流程圖其圖形及帶箭頭的直線如下圖所示。 2.2 演算法 演算法是指使用有限的指令以解決某一指定問題的步驟,其特性如下: 1。輸入 可以沒有輸入資料,或有多個輸入資料。 2。輸出 至少有一個輸出資料。 3。有限性 演算法必須經(jīng)過有限步驟執(zhí)行後停止作業(yè)。 4。有效性 可在紙上
2、作業(yè)追蹤執(zhí)行的結(jié)果。 5。明確性 每個指令必須明確,不可模稜兩可。 說明演算法常用的方式有三種,文字敘述、演算法語言、流程圖。 2.3 C 語言程式 將演算法或流程圖轉(zhuǎn)化為 C 語言程式並不困難,因為演算法或流程圖都已經(jīng)將解決問題的步驟明白敘述,您只須將每一個步驟使用 C 語言程式的語法表示出來就是一個 C 語言的程式了,然後交給電腦去執(zhí)行,自然就得到答案了。 那麼電腦如何處理您的程式呢?通常要經(jīng)過編輯、編譯、執(zhí)行等三個動作。 編輯 編輯指您根據(jù)演算法或流程圖製作一個 C 語言程式,您可使用任何文字編輯的應(yīng)用程式,例如 Windows 裡的記事本、Word、或文書處理程式等軟體,在 UNIX
3、或 Linux 系統(tǒng)您可以使用 vi 編輯程式等等。C 語言程式的附檔名為.c,如下面的例一程式,它的檔名為average.c。 編譯 編譯指將原始程式轉(zhuǎn)換為目的程式的動作。原始程式指您所製作的 C 語言程式,例如 average.c,它是人們所看得懂的文件,但目的程式只含由零0與一1兩個符號所組成的指令,這些指令只有電腦看得懂,也因為電腦看得懂這些指令,電腦才有辦法執(zhí)行這些指令,執(zhí)行這些指令的結(jié)果就是您要的答案。 若編譯成功會產(chǎn)生一個電腦的可執(zhí)行檔,例如編譯 average.c 成功時會產(chǎn)生一個 average.exe 檔,您直接執(zhí)行 average.exe 就可得到答案。您在編譯時可能產(chǎn)生
4、錯誤,這時必須透過編輯程式改正錯誤,改正之後再行編譯,一直到編譯成功時才可以開始執(zhí)行目的程式。 執(zhí)行目的程式時電腦會輸出執(zhí)行的結(jié)果,輸出的結(jié)果可能是正確的答案,也可能是錯誤的資料,當(dāng)然要找出錯誤的地方加於更正,再一次編譯及執(zhí)行,總要得到正確的結(jié)果才算完成,它的步驟如下圖所示。 【例一】 輸入兩個數(shù) a 及 b,求其平均值 avg。 【以文字敘述說明】 1。輸入兩個數(shù)分別命名為 a 及 b。 2??偤?sum 為 a 及 b 之和。 3。平均值 avg 為總和 sum 除於 2 的商數(shù)。 4。輸出平均值 avg。 5。停止。 【以演算法語言說明】 1。INPUT a,b 2。sum a+b 3。
5、avg sum/2 4。PRINT avg 5。END 以流程圖說明演算法【程式average.c】 /* average.c */ #include int main() double a,b,sum,avg; scanf(%lf %lf, &a, &b); /*步驟1*/ sum=a+b; /*步驟2*/ avg=sum/2; /*步驟3*/ printf(%f, avg); /*步驟4*/ return (0); /*步驟5*/ 【執(zhí)行結(jié)果】 1.0 3.0 註輸入兩個數(shù)1.0 3.0後按Enter鍵 2.000000 註輸出平均值avg=(1.0+3.0)/2 為了說明方便,將程式每一
6、列編號,原來的程式是沒有編號的,編號只為了方便說明而已。 1 /* average.c */ 2 #include 3 int main() 4 5 double a,b,sum,avg; 6 scanf(%lf %lf, &a, &b); /*步驟1*/ 7 sum=a+b; /*步驟2*/ 8 avg=sum/2; /*步驟3*/ 9 printf(%f, avg); /*步驟4*/ 10 return (0); /*步驟5*/ 11 程式 average.c 中 第 5 列 double a,b,sum,avg; 宣告 a、b、sum、avg 均為浮點數(shù),沒賦予初值,如下圖所示。圖中最
7、大的長方形格子表示電腦的記憶體,程式裡的變數(shù)名稱 a、b、sum、 avg 等就好像郵局裡的信箱名稱一樣,一個變數(shù)名稱就相當(dāng)於一個信箱 名稱,因此本程式在記憶體儲存五個信箱,它的名稱分別為 a、b、sum 、avg。變數(shù)的值就相當(dāng)於信箱裡的信件一樣,因為目前信箱裡頭並沒 有信件,因此以空白表示。 第 6 列 scanf(%lf %lf, &a, &b); 從鍵盤輸入二個值,分別置入 a、b 變數(shù)裡,例如您輸入 1.0 3.0 等 二個值,數(shù)值之間最少空一格,輸入最後的數(shù)值緊接著按Enter鍵 ,您也可以每輸入一個數(shù)值後馬上按Enter鍵,如下圖所示。 第 7 列 sum=a+b; 計算 sum
8、=a+b,如下圖所示。圖中除了記憶體之外,還出現(xiàn)一個 CPU,CPU 是 Central Processing Unit 中央處理單元的意思,記憶體只 負責(zé)儲存資料,中央處理單元負責(zé)處理資料,處理的項目主要包括計算 與比較,因此就將 a、b 的值 1.0、3.0 從記憶體搬到 CPU 執(zhí)行加法 計算,其和 4.0 再從 CPU 搬到記憶體裡的 sum 變數(shù),這時 sum 變數(shù) 的值就是 4.0 了。 第 8 列 avg=sum/2; 計算 avg=sum/2,如下圖所示。將 sum 的值 4.0 從記憶體搬到 CPU 執(zhí) 行除法計算,其商 2.0 再從CPU 搬到記憶體裡的 avg 變數(shù),這
9、時 avg 變數(shù)的值就是 2.0 了。 第 9 列 printf(%f, avg); 從記憶體 avg 處將其內(nèi)含值 2.0 以浮點數(shù)格式輸出至螢?zāi)?,如下圖所 示。 第 10 列 return (0); 表示程式結(jié)束了,傳回 0 值表示正常結(jié)束。 【例二】 重複輸入一數(shù) num,若 num 為正數(shù)則累加至總和 sum, 否則印出總和後 停止。 【以文字敘述說明】 1。設(shè)總和 sum 為 0。 2。輸入一數(shù) num。 3。若 num 為正數(shù),則 num 加至總和 sum 後跳至步驟 2。 4。輸出總和 sum。 5。停止。 【以演算法語言說明】 1。sum 0 2。INPUT num 3。IF
10、num0 THEN sum sum + num : GOTO 2 4。PRINT sum 5。END 【以流程圖說明演算法】【程式sum.c】 /* sum.c */ #include int main() double num,sum; sum=0.0; /*步驟1*/ again: scanf(%lf, &num); /*步驟2*/ if (num0) sum=sum+num; goto again; /*步驟3,4,5*/ printf(%lf, sum); /*步驟6*/ return (0); /*步驟7*/ 【結(jié)果】 1.0 註輸入一個數(shù)1.0後按Enter鍵 3.0 註輸入一個數(shù)
11、3.0後按Enter鍵 -1 註輸入一個數(shù)-1 後按Enter鍵 4.000000 註輸出總和sum=1.0+3.0 為了說明方便,將程式每一列編號,原來的程式是沒有編號的,編號只為了方便說明而已。 1 /* sum.c */ 2 #include 3 int main() 4 5 double num,sum; 6 sum=0.0; /*步驟1*/ 7 again: 8 scanf(%lf, &num); /*步驟2*/ 9 if (num0) sum=sum+num; goto again; /*步驟3,4,5*/ 10 printf(%lf, sum); /*步驟6*/ 11 retur
12、n (0); /*步驟7*/ 12 程式 sum.c 中:第 5 列 double num,sum; 宣告 num、sum 均為浮點數(shù),沒賦予初值,如下圖所示。圖中最大的長 方形格子表示電腦的記憶體,程式裡的變數(shù)名稱 num、sum 等就好像郵 局裡的信箱名稱一樣,一個變數(shù)名稱就相當(dāng)於一個信箱名稱,因此本程 式在記憶體儲存兩個信箱,它的名稱分別為 num、sum。變數(shù)的值就相 當(dāng)於信箱裡的信件一樣,因為目前信箱裡頭並沒有信件,因此以空白表 示。 第 6 列 sum=0.0; 將 0.0 指定給 sum 變數(shù),如下圖所示,相當(dāng)於將 0.0 擺入記憶體 裡 sum 的格子裡。第 7 列 again
13、: 指定該處為 again 標記,因為等一下會從程式的某處跳到這裡,因此 要給一個名稱,例如高雄縣澄清湖大門口要豎立一個門樓,寫上澄清 湖三個大字一樣,澄清湖就是一個標記,我們的 again 也是一 個標記。 第 8 列 scanf(%lf, &num); 從鍵盤輸入一個浮點數(shù),置入記憶體 num 處,例如您輸入 1.0 後 按 Enter 鍵,如下圖所示。第 9 列 if (num0) sum=sum+num; goto again; 將記憶體 num 處的值 1.0 取至 CPU 執(zhí)行邏輯運算num0,結(jié)果 為 true,如下圖所示。 隨即執(zhí)行 sum=sum+num 計算,如下圖所示。將 sum、num 的值 0.0、 1.0 從記憶體搬到 CPU 執(zhí)行加法計算,其和 1.0 再從 CPU 搬到記憶 體裡的 sum 變數(shù),這時 sum 變數(shù)的值就是 1.0 了。請注意這個敘述 裡有兩個 sum 變數(shù),因為名稱相同,所以在記憶體裡只設(shè)一個 sum 變
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年“學(xué)憲法講憲法”學(xué)法知識競賽題庫附答案
- 應(yīng)急局理論考試題及答案
- IBM(中國)校招面試題及答案
- 大學(xué)計算機應(yīng)用考試題及答案
- 2026黑龍江綏化市中醫(yī)醫(yī)院招聘38人參考題庫必考題
- 中共玉環(huán)市委宣傳部關(guān)于下屬事業(yè)單位 市互聯(lián)網(wǎng)宣傳指導(dǎo)中心公開選聘1名工作人員的備考題庫附答案
- 興國縣2025年招聘城市社區(qū)專職網(wǎng)格員【23人】備考題庫必考題
- 南充市經(jīng)濟合作和外事局局屬參照管理事業(yè)單位2025年公開遴選參照管理人員(4人)考試備考題庫附答案
- 廣安市廣安區(qū)石筍鎮(zhèn)人民政府關(guān)于2025年選用片區(qū)紀檢監(jiān)督員的備考題庫必考題
- 招15人!2025年剛察縣公安局面向社會公開招聘警務(wù)輔助人員考試備考題庫附答案
- 屋面防水施工質(zhì)量保證措施
- 2026年認證網(wǎng)約車考試題庫及完整答案一套
- 社區(qū)環(huán)境資源與健康行為可及性
- 2026年廣州市自來水公司招考專業(yè)技術(shù)人員易考易錯模擬試題(共500題)試卷后附參考答案
- 散文系列《補鞋子的人》精-品解讀
- 安徽省合肥一中2025-2026學(xué)年高三上學(xué)期1月考試化學(xué)(含答案)
- 2025國開本科《公共部門人力資源管理》期末歷年真題(含答案)
- 河北省唐山市2024-2025學(xué)年高一上學(xué)期期末數(shù)學(xué)試題(含答案)
- 新課標解讀培訓(xùn)
- 2025年CFA二級市場有效性習(xí)題
- 農(nóng)行內(nèi)控制度匯編
評論
0/150
提交評論