版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言程序設(shè)計
新視角制作:主講:@引言Chapter0NewPerspectiveforCProgranmming2引言“程序設(shè)計”就是借助人腦的智慧結(jié)合機器的特點來尋求問題的解決之道。31.人腦的慣性思維
我們的許多觀念都是如此深地陷入理當如此的假定中,以至于在正常情況下,我們根本不會想到要去質(zhì)疑它們。
——(美)邁克爾·施瓦布(MichaelSchwalbe)
41.人腦的慣性思維我們在觀察事物的時候總是用頭腦中已經(jīng)有的概念系統(tǒng)或已經(jīng)有的判斷方式對事物進行解讀,比如物理法則。52.電腦的另類思維6電腦里面裝滿了軟件,按“軟件定律”運行。學習編程,也就是要學會用電腦的方式看世界。3.程序設(shè)計課程的特點思維另類實踐積累規(guī)則瑣碎ABC74.學習方法把握關(guān)鍵多多上機重復記憶ABC85.課程主要內(nèi)容1程序設(shè)計的基本概念與基本方法;2程序的基本結(jié)構(gòu)、語句、數(shù)據(jù)類型;3數(shù)組4函數(shù)5指針6結(jié)構(gòu)7文件8程序的調(diào)試與測試96.C語言的用途單片機、電子、嵌入式行業(yè)系統(tǒng)軟件開發(fā)游戲開發(fā)ABC107.C語言適用的機器
今天,事實上所有新的主流操作系統(tǒng)都是用C或C++語言編寫的。C語言可以應(yīng)用于多數(shù)計算機上。通過仔細設(shè)計,程序員可以編寫出能夠移植到大多數(shù)計算機上的C程序。
——(美)迪特爾(H.M.Deitel)118.C與C++的用武之地
C++是以C為基礎(chǔ)的,先學C則比較容易入門。無論是C還是C++,都是編程的工具而已,應(yīng)該根據(jù)應(yīng)用的需要選擇采用哪個,沒有哪個更高級的問題。C++——應(yīng)用軟件開發(fā)C——底層開發(fā)..12走馬觀花看編程Chapter1NewPerspectiveforCProgranmming1311.1程序的概念21.2計算機解題過程31.3編制程序的全過程41.4程序的構(gòu)成51.5算法是如何設(shè)計出來的61.6簡單的C程序介紹71.7本章小結(jié)目錄CONTENTS11.1程序的概念21.2計算機解題過程31.3編制程序的全過程41.4程序的構(gòu)成51.5算法是如何設(shè)計出來的61.6簡單的C程序介紹71.7本章小結(jié)目錄CONTENTS主要內(nèi)容】程序的概念;算法設(shè)計方法;程序設(shè)計方法;簡單的C程序介紹。16【學習目標】理解程序設(shè)計的基本步驟;能夠用自頂向下、逐步求精的方法確定算法。171.1程序的概念為了使計算機能夠按人的意圖工作,人類就必須要將需要解決問題的思路、方法和手段,通過計算機能夠理解的形式告訴它,使得計算機能夠根據(jù)人的指令一步一步去工作,完成特定的任務(wù)。18
程序:為了讓計算機解決特定問題而專門設(shè)計的一系列計算機可執(zhí)行的指令集合。
程序設(shè)計語言:用于書寫計算機程序的語言。
C語言:CombinedLanguage(組合語言)的中英文混合簡稱,是一種計算機高級語言。編程就是讓計算機為解決某個問題而使用某種程序設(shè)計語言編寫程序代碼,并最終得到結(jié)果的過程。19
計算機語言
計算機語言的種類非常多,總的來說可以分成機器語言、匯編語言和高級語言三大類。目前通用的編程語言有兩種:匯編語言和高級語言。機器語言高級語言匯編語言ABC20軟件與程序的關(guān)系
軟件=程序+數(shù)據(jù)+文檔21
(1)運行時,能夠提供所要求功能和性能的指令或計算機程序集合。
(2)程序能夠滿意地處理信息的數(shù)據(jù)結(jié)構(gòu)。
(3)描述程序功能需求以及程序如何操作和使用所要求的文檔。11.1程序的概念21.2計算機解題過程31.3編制程序的全過程41.4程序的構(gòu)成51.5算法是如何設(shè)計出來的61.6簡單的C程序介紹71.7本章小結(jié)目錄CONTENTS1.2計算機解題過程從“加工”的角度看,計算機解題的過程可以分成三個步驟23
計算機解題過程
圖1.12411.1程序的概念21.2計算機解題過程31.3編制程序的全過程41.4程序的構(gòu)成51.5算法是如何設(shè)計出來的61.6簡單的C程序介紹71.7本章小結(jié)目錄CONTENTS1.3編制程序的全過程編制程序有三個基本的步驟:定算法、編程序、調(diào)試通順。261定算法2編程序3調(diào)試通明確任務(wù):功能、輸入、輸出;確定算法:完成任務(wù)的方法;編寫源程序文件(*.C)編譯(Compile):查找語法錯,生成目標文件(*.OBJ)連接(Link):生成可執(zhí)行文件(*.EXE)執(zhí)行(Run):看運行結(jié)果,查找邏輯錯編程序的全過程27程序的邏輯錯
程序的邏輯錯主要表現(xiàn)在程序運行后,得到的結(jié)果與預期設(shè)想的不一致,這就有可能是出現(xiàn)了邏輯錯。比如運算應(yīng)該是先加后乘的處理,如果忘了加括號,運算結(jié)果就會出現(xiàn)錯誤。通常出現(xiàn)邏輯錯的程序都能正常運行,系統(tǒng)不會給出錯誤在哪里的提示信息。2811.1程序的概念21.2計算機解題過程31.3編制程序的全過程41.4程序的構(gòu)成51.5算法是如何設(shè)計出來的61.6簡單的C程序介紹71.7本章小結(jié)目錄CONTENTS1.4程序的構(gòu)成如果把數(shù)據(jù)和程序語句看成是原料,程序結(jié)構(gòu)和算法是制作方法和工藝要求,則程序就是最后加工出來的產(chǎn)品。30
程序加工處理示意圖程序由程序語句(有一定的語法規(guī)則)和數(shù)據(jù)(要處理的信息)組成,是在符合程序結(jié)構(gòu)的構(gòu)造框架(有一定之規(guī))下,按照事先設(shè)計的完成特定功能要求的執(zhí)行步驟(算法)最終完成的指令序列,31程序構(gòu)成示意圖算法是程序的靈魂,用于解決“做什么”、“怎么做”的問題;數(shù)據(jù)是加工的對象;程序結(jié)構(gòu)是設(shè)計方法;語言是工具。321.4程序的構(gòu)成1.4.1程序的構(gòu)成成分之一?——數(shù)據(jù)1.4.2程序的構(gòu)成成分之二——程序語句1.4.3程序的構(gòu)造框架——程序結(jié)構(gòu)1.4.4程序的構(gòu)造方法?——算法
數(shù)據(jù):計算機可“表現(xiàn)”、“存儲”、“運算”的信息。
34數(shù)據(jù)的表現(xiàn)形式:常量和變量;數(shù)據(jù)的運算方式:通過運算符實施。數(shù)據(jù)的存儲尺寸:由類型決定;...1.程序中的數(shù)據(jù)程序中的數(shù)據(jù)是指計算機可接收,即可存儲到計算機中,并可對其進行加工處理的信息。
計算機中的數(shù)據(jù)
在計算機中,各種信息如數(shù)字、字符、聲音、圖像等都是以二進制編碼方式存儲的。35漢字編碼ASCII碼..數(shù)據(jù)的存儲單位
一個位(bit)有多大?位是內(nèi)存的最小單位。二進制數(shù)系統(tǒng)中,每個0或1就是一個位。362.數(shù)據(jù)的表現(xiàn)形式
數(shù)據(jù)在程序中的表現(xiàn)形式有兩種:常量和變量。常量是在程序運行過程中,值不能被改變的量;變量是在程序運行過程中,值能被改變的量。
37變量常量..在許多問題中,都會有有些量固定不變,有些量不斷變化的情形。如物體運動中的速度、時間和距離,圓的半徑、周長和圓周率,購買商品的數(shù)量、單價和總價等。38初始化在變量定義時對變量進行賦值的操作。
變量的起名和分配存儲單元都是在一個稱做“變量定義”的語句中完成的,存儲變量的值如果在定義時指定,則稱做是對變量進行初始化。變量沒有初始化,那么它的存儲單元里會是什么數(shù)?答案會在第2章中給出。
39程序運行過為什么要用變量?
答:程序要解決的問題往往是通解。比如,計算n!的程序,n=5時,能給出正確結(jié)果;n=10時,也應(yīng)該能給出正確結(jié)果,即只要輸入的n為一定范圍的正整數(shù),那么程序都應(yīng)該能計算出結(jié)果,這樣的程序才有實際的意義。3.數(shù)據(jù)的存儲尺寸——由類型決定40數(shù)據(jù)類型基本類型整型字符型實型(浮點型):單精度型、雙精度型枚舉類型構(gòu)造類型數(shù)組類型結(jié)構(gòu)體類型共用體類型指針類型空類型數(shù)據(jù)在機器中存放,需要一定的內(nèi)存空間,變量在內(nèi)存中給它分有存儲單元,那么這個存儲單元的大小是多少呢?不同類型的數(shù)據(jù)對應(yīng)的存儲單元的大小是不同的,計算機系統(tǒng)提供了不同“規(guī)格尺寸”的空間大小——基本數(shù)據(jù)類型,構(gòu)造類型是由基本類型組合而成的。
變量存儲單元的大小是由其數(shù)據(jù)類型決定的,程序員可以根據(jù)需要選用。412為什么要有各種數(shù)據(jù)類型?
答:①可解決數(shù)據(jù)的有效存儲空間問題;
②不同類型的數(shù)據(jù)其處理規(guī)則、方式不相同。4.數(shù)據(jù)的運算方式——通過運算符實施42
對數(shù)據(jù)的加工處理是通過各種運算符來實施的。
C語言中的各種運算符見表,具體使用方法會在第2章中介紹。注:除逗號運算符外,其他運算符中間出現(xiàn)的逗號為分割用1.4程序的構(gòu)成1.4.1程序的構(gòu)成成分之一?——數(shù)據(jù)1.4.2程序的構(gòu)成成分之二——程序語句1.4.3程序的構(gòu)造框架——程序結(jié)構(gòu)1.4.4程序的構(gòu)造方法?——算法44程序語句:向機器發(fā)出的操作指令。
語句命令字45選擇
ifelse
switchcasedefault循環(huán)
for
while
dowhile
breakcontinue
goto函數(shù)
return語句由語句命令字、數(shù)據(jù)、運算符等構(gòu)成。語句命令字有三類。選擇及循環(huán)語句的功能及用法將在第3章中介紹,函數(shù)return語句將在第5章中介紹。1.4程序的構(gòu)成1.4.1程序的構(gòu)成成分之一?——數(shù)據(jù)1.4.2程序的構(gòu)成成分之二——程序語句1.4.3程序的構(gòu)造框架——程序結(jié)構(gòu)1.4.4程序的構(gòu)造方法?——算法47順序結(jié)構(gòu)循環(huán)結(jié)構(gòu)選擇結(jié)構(gòu)123
任何程序都可由順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)構(gòu)造而成。1.順序結(jié)構(gòu)48
順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),語句按照事前排好的順序,順次執(zhí)行
2.選擇結(jié)構(gòu)49流程根據(jù)條件是否成立有不同的流向選擇結(jié)構(gòu)程序設(shè)計50單路選擇:if(表達式)語句A;多路選擇:switch(表達式)
{ case常量1:語句A;
case常量2:語句B;
default:語句C;
} 雙路選擇:if(表達式)語句A;
else語句B;
C語言從機制上提供了三類選擇語句,來實現(xiàn)選擇結(jié)構(gòu)的功能。3.循環(huán)結(jié)構(gòu)51需要重復執(zhí)行同一操作的結(jié)構(gòu)稱為循環(huán)結(jié)構(gòu),即從某處開始,按照一定條件反復執(zhí)行某一處理步驟。
循環(huán)體:反復執(zhí)行的處理步驟稱為循環(huán)體。
當型循環(huán):當條件Q成立時,執(zhí)行語句A,然后再判斷條件Q是否成立,如此循環(huán),直到Q不滿足,退出循環(huán)。
直到型循環(huán):先執(zhí)行語句A,然后再判斷條件Q是否成立,如此循環(huán),直到Q不滿足,退出循環(huán)。
52循環(huán)結(jié)構(gòu)的程序設(shè)計53if(表達式)…gotowhile(表達式)語句;do{
語句;}while(表達式);for(表達式1;表達式2;表達式3)語句;C語言從機制上提供了四類循環(huán)語句,來實現(xiàn)循環(huán)結(jié)構(gòu)的功能。1.4程序的構(gòu)成1.4.1程序的構(gòu)成成分之一?——數(shù)據(jù)1.4.2程序的構(gòu)成成分之二——程序語句1.4.3程序的構(gòu)造框架——程序結(jié)構(gòu)1.4.4程序的構(gòu)造方法?——算法
有兩種思想,像放在天鵝絨上的寶石一樣熠熠生輝,一個是微積分,另一個就是算法。
微積分以及在微積分基礎(chǔ)上建立起來的數(shù)學分析體系造就了現(xiàn)代科學,而算法造就了現(xiàn)代世界。
————DavidBerlinski(《算法的出現(xiàn)》的作者)
551.算法的概念56
算法:為解決一個問題而采取的方法和步驟。
計算機算法:計算機能夠執(zhí)行的算法。
算法可以理解為由基本運算及規(guī)定的運算順序所構(gòu)成的完整的解題步驟,或者看成按照要求設(shè)計好的有限的確切的計算序列,并且這樣的步驟和序列可以解決一類問題。2.算法的表示方法
1)算法的表示方法1
——
流程圖
57流程圖是用一些圖框表示各種操作。用圖形表示算法直觀形象,易于理解。常用的流程圖符號————美國國家標準化協(xié)會ANSI規(guī)定2.算法的表示方法
2)算法的表示方法2
——
N-S圖
582.算法的表示方法
3)算法的表示方法3
——
偽代碼
59偽代碼(Pseudocode):用代碼的格式表示程序執(zhí)行過程和算法,但不能在編譯器上通過編譯的代碼。其目的是用易于理解和表述的方式展示程序的執(zhí)行過程。
用戶可以使用任何一種熟悉的文字,如中文或英文等,關(guān)鍵是把程序的意思表達出來。使用偽代碼,可以幫助我們更好地表述算法,不用拘泥于具體的實現(xiàn)。
2.算法的表示方法【例1-1】偽代碼的例子?!扒宄可险n準備”的兩種算法
60算法不僅要確定正確的執(zhí)行動作,還要確定正確的動作執(zhí)行的順序。3.算法的闡述方法611.結(jié)構(gòu)化程序設(shè)計
是以模塊功能和處理過程設(shè)計為主的詳細設(shè)計的基本原則。它的主要觀點是:采用自頂向下、逐步求精的程序設(shè)計方法;使用三種基本控制結(jié)構(gòu)構(gòu)造程序,即任何程序都可由順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)構(gòu)造。結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是程序的易讀性。2.自頂向下逐步細化
程序設(shè)計時,應(yīng)先考慮總體,后考慮細節(jié);先考慮全局目標,后考慮局部目標。3.模塊化設(shè)計一個復雜問題,一般是由若干稍簡單的問題構(gòu)成的。模塊化是把程序要解決的總目標分解為子目標,再進一步分解為具體的容易實現(xiàn)的小目標,每一個小目標被稱為一個模塊。4.算法的特性(1)輸入性一個算法有零個或多個輸入。
(2)輸出性一個算法有一個或多個輸出,且輸出是與輸入有著某些特定關(guān)系的量。
(3)有窮性一個算法必須在執(zhí)行有窮步之后結(jié)束,且每條指令的執(zhí)行次數(shù)有限。
(4)確定性算法中每條指令必須確切定義且含義明確,不可有二義性;對于相同的輸入只能得出特定的結(jié)果。
(5)可行性算法中描述的操作都是可以通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次來實現(xiàn)的,即每條指令都應(yīng)在有限的時間內(nèi)完成。6211.1程序的概念21.2計算機解題過程31.3編制程序的全過程41.4程序的構(gòu)成51.5算法是如何設(shè)計出來的61.6簡單的C程序介紹71.7本章小結(jié)目錄CONTENTS1.5算法是如何設(shè)計出來的我們在日常生活中解決問題的方式方法,有時卻不能直接用到計算機中。641.5算法是如何設(shè)計出來的1.5.1算法與計算機算法1.5.2算法的通用性1.5.3算法的全面性1.5.4算法的驗證【例1-2】算法的例子1將兩個存儲單元的數(shù)據(jù)A、B互換,且互換后的數(shù)據(jù)不損失。
(1)通用法(2)另類法
6667【算法結(jié)論1】有時在日常能行得通的方法,在計算機中是無法實現(xiàn)的。1.5算法是如何設(shè)計出來的1.5.1算法與計算機算法1.5.2算法的通用性1.5.3算法的全面性1.5.4算法的驗證現(xiàn)代計算機在誕生之初常被冠以“通用”字樣,以突出其通用性。
——————————《軟件調(diào)試》張銀奎
69【例1-3】算法的例子2小學生的除法問題:只考慮兩位數(shù)除以一位數(shù),且商為一位數(shù)的情形。如:
23÷4=5…337÷6=6…170對于人腦來說,小學老師教的試商方法巧妙快捷;但對于計算機來說,小學老師教的試商方法實現(xiàn)起來還是很復雜?!痉桨敢弧恳宦蓮?開始試商法。71其中:A(被除數(shù))為兩位數(shù),B(除數(shù))、T(商)、R(余數(shù))均為一位數(shù)。頂部偽代碼描述第一步細化第二步細化輸出:商、余數(shù)直到B*T<A停止當B*T>A,則T減1設(shè)初始時商T的值為9輸出:商為T,余數(shù)為A-B*Twhile(B*T>A)
{商T的值減1}設(shè)初始時商T的值為9輸出結(jié)果找到合適的結(jié)果從9開始試商
圖1.10頂部偽代碼流程72
圖1.11第一步細化對應(yīng)流程73
圖1.12第二步細化對應(yīng)流程74【方案二】被除數(shù)連續(xù)減除數(shù)。75頂部偽代碼描述被除數(shù)連續(xù)減除數(shù)第一步細化第二步細化輸出結(jié)果輸出結(jié)果直到余數(shù)R小于除數(shù)B被除數(shù)A連續(xù)減除數(shù)B輸出:商為T,余數(shù)為RUtile(余數(shù)R小于除數(shù)B)doR=余數(shù)R-除數(shù)B
商T加1設(shè)商T為0,余數(shù)R=被除數(shù)A
圖1.13被除數(shù)連續(xù)減76
【算法結(jié)論2】
日常看似“巧”的方法,對機器而言,不一定是好方法。
771.5算法是如何設(shè)計出來的1.5.1算法與計算機算法1.5.2算法的通用性1.5.3算法的全面性1.5.4算法的驗證【例1-4】算法的例子3求n!。
【解】為分析問題方便,此處設(shè)n=5。
人工計算5!=1*2*3*4*5的通用方法79這里即使是人來計算階乘,也強調(diào)了“通用”的方法,而不是用“巧”的速算的方法,這樣就是用“程序的思維”來看問題了?!纠?-4】算法的例子3
如何讓計算機得到的運算數(shù)據(jù)呢?
答:其實計算機是“很笨”的,你要讓它處理的所有數(shù)據(jù)、所用方法,一點一滴都要你“手把手”地交給它,不然它什么都不會做。
方法一:每個數(shù)都可以通過鍵盤輸入到計算機中。
方法二:除了1之外,每個數(shù)都是前一個數(shù)加1而來,或者說迭代而來的。
對于方法一,當數(shù)據(jù)較少時可以采用,數(shù)據(jù)多了就顯得很麻煩。
方法二則是一個比較好的辦法。80【例1-4】算法的例子381計算n!的偽代碼頂部偽代碼描述求5!輸出結(jié)果第一步細化由1乘2開始結(jié)果放到s,乘數(shù)每次增1乘4次結(jié)束輸出結(jié)果s第二步細化設(shè)乘積S=1,乘數(shù)T=2
doS=S*T
T增加1
Until(T>5)
輸出s【例1-4】算法的例子382圖1.14求5!的流程S12624120T23456執(zhí)行流程數(shù)據(jù)分析(1)要計算10!,怎么辦呢?
(2)計算1!時,結(jié)果對嗎?
(3)若要分別計算許多整數(shù)的階乘怎么辦呢?
答:問題(1):可以把圖1.14中的判斷T≤5改為T≤10。
問題(2):圖1.14中,計算1!結(jié)果為2,顯然是錯誤的。問題(3):可以把圖1.14中的判斷T≤5改為T≤n,n設(shè)為整數(shù),可以通過輸入得到n的具體值。
圖1.15求n!改進的處理流程83若用戶輸入n=-1,怎么辦呢?
答:當用戶有意或無意當中輸入了“非法”的數(shù)據(jù)時,程序應(yīng)該有合適的應(yīng)對方法,而不能對此“束手無策”。
【例1-4】算法的例子3
圖1.16求n!最終改進流程84程序應(yīng)該驗證所有輸入的合法性,以防錯誤信息影響程序的計算。
【例1-4】算法的例子385【算法結(jié)論3】算法設(shè)計的一般步驟:
(1)按問題的普遍規(guī)律給出處理的流程。
(2)設(shè)定初始值。
(3)確定程序結(jié)束的條件。
(4)考慮臨界點或特殊點的處理。
(5)考慮異常情況。
1.5算法是如何設(shè)計出來的1.5.1算法與計算機算法1.5.2算法的通用性1.5.3算法的全面性1.5.4算法的驗證算法的驗證
軟件測試在規(guī)定的條件下對程序進行操作,以發(fā)現(xiàn)程序錯誤,衡量軟件品質(zhì),并對其是否能滿足設(shè)計要求進行評估的過程。軟件測試是一種實際輸出與預期輸出間的稽核或者比較過程。
測試用例為某個特殊目標而編制的一組包括測試輸入、執(zhí)行條件以及預期結(jié)果在內(nèi)的數(shù)據(jù),以便測試某個程序路徑或核實是否滿足某個特定需求。
87對于做好的算法,它是否完善及能否達到預期的目標,是要經(jīng)過驗證的。對于算法的驗證,要設(shè)計出合適的測試用例,我們可以借鑒軟件測試的一般性方法11.1程序的概念21.2計算機解題過程31.3編制程序的全過程41.4程序的構(gòu)成51.5算法是如何設(shè)計出來的61.6簡單的C程序介紹71.7本章小結(jié)目錄CONTENTS1.6簡單的C程序介紹“程序設(shè)計”就是借助人腦的智慧結(jié)合機器的特點來尋求問題的解決之道。89【例1-5】C程序的樣例190在屏幕上輸出“WelcometoC!”程序結(jié)果:
WelcometoC!91
程序注釋:用一組/**/(或//)括起來的字符串,用于程序語句等含義的說明。
在C語言中,所有的注釋由字符/*開始,以*/結(jié)束。在星號及斜杠之間不允許有空格。編譯程序編譯時將忽略注釋的內(nèi)容,即不會把它們翻譯成機器碼。一般情況下,源程序有效注釋量應(yīng)在20%以上。注釋的原則是有助于對程序的閱讀理解。注釋語言必須準確、易懂、簡潔。92函數(shù)C語言中,把功能相對獨立的程序段稱做“函數(shù)”。庫函數(shù)庫函數(shù)并不是C語言的一部分,它是由編譯系統(tǒng)把實現(xiàn)常用功能的一組程序放在系統(tǒng)程序庫中,用戶可以通過引用程序庫相應(yīng)的程序說明文件(頭文件)來使用這些程序,即庫函數(shù)。
C語言中常見的庫函數(shù)參看附錄C。
為什么要建立函數(shù)庫?
建立函數(shù)庫是為了把可重復使用的函數(shù)放在一起,供其他程序員和程序共享。例如,幾個程序可能都會用到一些通用的功能函數(shù),那就不必在每個程序中都復制這些源代碼,而只需把這些函數(shù)集中到一個函數(shù)庫中,然后用連接程序把它們連接到程序中。這種方法有利于程序的編寫和維護。
9394文件包含其功能是把指定的文件插入該命令行位置取代該命令行,從而把指定的文件和當前的源程序文件連成一個源文件。
形式:#include<文件名>
(或者:#include"文件名")
說明:
(1)被包含的文件可以由系統(tǒng)提供,也可以由程序員自己編寫。
(2)一個include命令只能指定一個被包含文件,若有多個文件要包含,則需用多個include命令。
(3)如果文件名以尖括號括起,在編譯時將會在指定的目錄下查找此頭文件;如果文件名以雙引號括起,在編譯時會首先在當前的源文件目錄中查找該頭文件,若找不到才會到系統(tǒng)的指定目錄下去查找。
(4)更多的內(nèi)容參見第9章。
95頭文件頭文件的目的是把多個C程序文件公用的內(nèi)容單獨放在一個文件里,以減少整體代碼尺寸。頭文件的擴展名為.h。
凡是在程序中要用到庫函數(shù)時,都必須包含該函數(shù)原型所在的頭文件。C語言的頭文件中包括了各個標準庫函數(shù)的說明形式。
·注釋
每個函數(shù)之前都應(yīng)該有一段描述該函數(shù)目的的注釋。每個函數(shù)開始、結(jié)束時應(yīng)該加一注釋,標明該函數(shù)開始或結(jié)束。
·輸出格式
輸出的最后一個字符應(yīng)該是換行符(\n)。這種約定有助于軟件的可重用性。
·縮進
應(yīng)該把函數(shù)體縮進一個級別。這強調(diào)了程序的函數(shù)化結(jié)構(gòu),使程序更易閱讀。用戶可設(shè)置自己喜歡的縮進大小約定,然后在程序設(shè)計時統(tǒng)一使用這個約定??捎肨ab鍵來縮進。96【例1-6】C程序的樣例2求兩個數(shù)之和。程序及語句含義解釋見表1.19。97程序結(jié)果:
sumis579【例1-7】C程序的樣例3通過鍵盤輸入兩個整數(shù),計算這兩個整數(shù)的和,并將結(jié)果顯示到屏幕上,程序見表1.20。98程序結(jié)果:
Enterfirstinteger
6
Entersecondinteger
23
Sumis29【例1-8】C程序的樣例4
含有多個函數(shù)的程序,見表1.21。99這段程序除了有主函數(shù)main外,還有一個子函數(shù)max,它的形式和main類似,也是中間的所有語句都被一對大括號{}包括在內(nèi)。主函數(shù)和子函數(shù)的關(guān)系是各自完成功能相對獨立的工作,再配合起來完成一個比較復雜的功能。
程序構(gòu)成100說明:程序由預編譯命令和多個函數(shù)構(gòu)成,其中必須要有一個主函數(shù)main,可以有0個或多個子函數(shù)。每個函數(shù)內(nèi)都是由聲明部分和執(zhí)行部分組成的。101編譯預處理也稱預編譯命令,是以#號開頭的一些命令,在編譯開始之前得到處理,用以輔助編譯器的編譯工作。編譯預處理命令有宏定義、文件包含和條件編譯三種。
所謂預處理,是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所做的工作,它由預處理程序負責完成。當對一個源文件進
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電信課程設(shè)計案例
- 總賬初始化設(shè)置課程設(shè)計
- 小學生外國傳統(tǒng)課程設(shè)計
- 2024年黑龍江省安全員C證考試題庫
- 系統(tǒng)soc課程設(shè)計
- 磚混廠房概預算課程設(shè)計
- 穩(wěn)壓電流源課程設(shè)計
- 籃球暑期課程設(shè)計意圖
- 研學課程設(shè)計南鑼鼓巷
- 糖化熱量衡算課程設(shè)計
- 《西方現(xiàn)代美術(shù)史》課件13觀念與后現(xiàn)代
- TCECA-G 0171-2022 零碳工廠評價規(guī)范
- 幼兒園教學課件——我是哥哥姐姐
- ppt模板:青團團委團課動態(tài)ppt模板課件
- 國內(nèi)異形盾構(gòu)機分析課件
- 喚醒孩子內(nèi)驅(qū)力家校共育家庭教育PPT課件(帶內(nèi)容)
- 合成氣精脫硫催化劑的研究報告
- 滾裝客船貨物的積載綁扎系固分解課件
- 市政項目吊裝施工方案
- 中控樓裝飾裝修方案
- 新供應(yīng)商開發(fā)流程圖
評論
0/150
提交評論