版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C語言程序設(shè)計第第1章章 概論概論第第2章章 數(shù)據(jù)類型、運算符與表達(dá)式數(shù)據(jù)類型、運算符與表達(dá)式第第3章章 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計第第4章章 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計第第5章章 循環(huán)結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計第第6章章 數(shù)組數(shù)組第第7章章 函數(shù)函數(shù)第第8章章 指針指針第第9章章 結(jié)構(gòu)體與共用體結(jié)構(gòu)體與共用體第第10章章 文件文件第第11章章 綜合應(yīng)用實例綜合應(yīng)用實例1 第第1章章 概概 論論 C語言是美國貝爾實驗室于20世紀(jì)70年代初研制出來的,早期主要用于UNIX操作系統(tǒng),到了20世紀(jì)80年代,C語言開始用于其它操作系統(tǒng),并很快在各類大、中、小和微型計算機上廣泛使用,成為國
2、際上廣為流行的計算機程序設(shè)計高級語言。 本章主要介紹C語言的特點,C語言程序的結(jié)構(gòu)與書寫規(guī)則,C程序上機步驟,編譯預(yù)處理,算法的概念及表示。1-1返回目錄21.1 語言的特點語言的特點 1語言簡潔、緊湊,使用方便、靈活2運算符豐富3數(shù)據(jù)類型豐富4程序設(shè)計結(jié)構(gòu)化、模塊化5語法限制不太嚴(yán)格,程序設(shè)計自由度大6C語言允許直接訪問物理地址,能進(jìn)行位(bit)操作7生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高8可移植性好1-231.2 C語言程序的結(jié)構(gòu)與書寫格式語言程序的結(jié)構(gòu)與書寫格式 1.2.1 C語言程序舉例語言程序舉例 1.2.2 C語言程序的結(jié)構(gòu)語言程序的結(jié)構(gòu) 1.2.2.1 函數(shù)是語言程序的基本單位。
3、函數(shù)是語言程序的基本單位。1.2.2.2 函數(shù)的一般結(jié)構(gòu)函數(shù)的一般結(jié)構(gòu) 任何函數(shù)(包括main()函數(shù))都是由函數(shù)首部和函數(shù)體兩部分組成。1. 函數(shù)首部: 函數(shù)首部即函數(shù)第一行,由函數(shù)類型、函數(shù)名和函數(shù)參數(shù)表三部分組成。2. 函數(shù)體: 函數(shù)體為函數(shù)首部下面的花括號內(nèi)的部分。 函數(shù)體一般由聲明部分和執(zhí)行部分構(gòu)成:聲明部分定義所用到的變量,聲明所調(diào)用的函數(shù)等; 執(zhí)行部分有若干語句組成。 1-31.2.2.3 C語言程序的執(zhí)行語言程序的執(zhí)行 C語言程序總是從main()函數(shù)的第一條執(zhí)行語句開始執(zhí)行,執(zhí)行完main()函數(shù)的最后一 條語句,則整個程序執(zhí)行結(jié)束,而其他函數(shù)則通過嵌套調(diào)用得以執(zhí)行。41.2
4、.3 C語言程序書寫格式語言程序書寫格式 1. 行的書寫格式自由,可從一行的任何位置開始書寫。 2. 一行可書寫多條語句,一條語句也可分寫在幾行上。 3. 所有語句都必須以分號“;”結(jié)束。 4. 允許使用注釋。 C語言的注釋格式有兩種:/,/* */。 5. 在書寫程序時,通常采用縮格形式書寫分層結(jié)構(gòu)的程序。 1-451.3 C1.3 C程序上機步驟程序上機步驟C源程序編好后,要經(jīng)過編輯、編譯、連接,生成可執(zhí)行文件后,才可運行。1-5運行集成開發(fā)軟件 編輯源程序編譯連接運行結(jié)束有錯?無有結(jié)果正確?正確不正確61.4 編譯預(yù)處理編譯預(yù)處理 編譯預(yù)處理是指,在C編譯程序?qū)源程序進(jìn)行編譯之前,由編
5、譯預(yù)處理程序?qū)υ闯绦蛑械念A(yù)處理命令進(jìn)行處理的過程。1.4.1 宏定義宏定義 用一個標(biāo)識符來表示一個字符串,稱為“宏”,標(biāo)識符稱為“宏名”。在程序中用宏名替代字符串稱為“宏調(diào)用”。在編譯預(yù)處理時,將對程序中所有出現(xiàn)的“宏名”,都用宏定義中的字符串代換,這個過程稱為“宏展開”。1.4.1.1 不帶參數(shù)的宏定義不帶參數(shù)的宏定義 格式為:#define 標(biāo)識符 字符串 1.4.1.2 帶參數(shù)的宏定義帶參數(shù)的宏定義 格式為:define 宏名(參數(shù)表) 字符串 1.4.2 文件包含文件包含 文件包含是指在一個文件中,去包含另一個文件的全部內(nèi)容。 格式為:#include 或#include 文件名 1-
6、671.5 算法的概念及表示算法的概念及表示 1.5.1 1.5.1 算法的概念算法的概念 為解決一個問題而采取的方法和步驟,稱為算法。計算機能夠執(zhí)行的算法,稱為計算機算法,它有以下特性: 有窮性。 確定性。 輸入。 輸出。 有效性。 1.5.2 1.5.2 算法的表示算法的表示 1.5.2.1 1.5.2.1 用自然語言表示算法用自然語言表示算法 自然語言就是人們?nèi)粘J褂玫恼Z言。1.5.2.2 1.5.2.2 用流程圖表示算法用流程圖表示算法 流程圖是用一些圖框表示各種操作,用圖形表示算法。 1-78第第2章章 數(shù)據(jù)類型、運算符與表達(dá)式數(shù)據(jù)類型、運算符與表達(dá)式 數(shù)據(jù)是程序處理的基本對象,由數(shù)
7、據(jù)和運算符一起組成的表達(dá)式是計算機語言中最基本的計算成分。 本章主要介紹基本數(shù)據(jù)類型:整型,實型,字符型;常用運算符:算術(shù)運算符,賦值運算符,逗號運算符,以及相應(yīng)的表達(dá)式。2-1返回目錄92.1 數(shù)據(jù)類型數(shù)據(jù)類型 C語言的數(shù)據(jù)類型非常豐富,可分為:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類。2-2基本類型構(gòu)造類型指針類型空類型(void)整型實型字符型(char)枚舉類型(enum)數(shù)組類型結(jié)構(gòu)體類型(struct)共用體類型(union)單精度(float)雙精度(double)長雙精度(用的很少)短整型(short)整型(int)長整型(long)數(shù)據(jù)類型102.2 常量與變量常量
8、與變量 2.2.1 標(biāo)識符標(biāo)識符 標(biāo)識符是用來標(biāo)識符號常量名、變量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列,由字母、數(shù)字、下劃線組成,且第一個字符必須為字母或下劃線。2.2.2 常量常量2.2.2.1 2.2.2.1 字面常量(直接常量)字面常量(直接常量) 字面常量是直接表示的常量。2.2.2.2 2.2.2.2 符號常量符號常量 符號常量是用一個標(biāo)識符代表一個常量,使用編譯預(yù)處理命令#define定義,定義格式為: #define 常量名 字面常量 2-3112.2.3 變量變量 在程序運行過程中,其值可以改變的量稱為變量。 C語言規(guī)定,變量要先定義后使用。變量的定義一般在函數(shù)的聲
9、明部分,格式為: 數(shù)據(jù)類型 變量名1,變量名2,; 變量的三個要素 : 變量名。 變量值。 變量的地址. 2.2.4 2.2.4 變量的初始化變量的初始化 在定義變量的同時給變量賦以初值,稱為變量初始化,出現(xiàn)在函數(shù)體的聲明部分,格式為: 數(shù)據(jù)類型 變量1=值1, 變量2=值2,; 2-4122.3 整型數(shù)據(jù)整型數(shù)據(jù) 2.3.1 整型常量整型常量 在C語言中,整型常量有三種表示形式: 十進(jìn)制,數(shù)碼為09。 八進(jìn)制(以數(shù)字0開頭),數(shù)碼為07。 十六進(jìn)制(以數(shù)字0 x或0X開頭),數(shù)碼為09,AF或af。 在C語言中,整型常量可分為三種類型: 基本整型。 無符號基本整型(在數(shù)值后面加U或u)。 長
10、整型(在數(shù)值后面加L或l。2-5132.3.2 2.3.2 整型變量整型變量 根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量分為三類: (1) 基本整型,以int表示。 (2) 短整型,以short int或short表示。 (3) 長整型,以long int或long表示。 根據(jù)在內(nèi)存中的存儲形式,整型數(shù)據(jù)又分為有符號和無符號兩種。2-6整型數(shù)據(jù)的分類類型標(biāo)識符字節(jié)數(shù)存儲位數(shù)值范圍整型int216-3276832767短整型short216-3276832767長整型long432-21474836482147483647無符號整型unsigned int216065535無符號短整型unsigned
11、short216065535無符號長整型unsigned long432042949672952.3.3 2.3.3 整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出 如果在數(shù)據(jù)處理時,超出了變量的取值范圍,就會發(fā)生“溢出”現(xiàn)象。 142.4 2.4 實型數(shù)據(jù)實型數(shù)據(jù) 2.4.1 2.4.1 實型常量實型常量 實型常量即實數(shù),在C語言中又稱浮點數(shù),其值有兩種表達(dá)形式。 十進(jìn)制小數(shù)形式,有數(shù)字和小數(shù)點組成,要求小數(shù)點的兩邊必須有數(shù)。 指數(shù)形式,格式為 E(e) 2-7152.4.2 2.4.2 實型變量實型變量 C語言的實型變量分為三種:單精度型(float)、雙精度型(double)、長雙精度型(long dou
12、ble),實型數(shù)據(jù)在內(nèi)存中是按指數(shù)形式存儲的 。2-8實型數(shù)據(jù)的分類類型標(biāo)識符字節(jié)數(shù)存儲位有效數(shù)字?jǐn)?shù)值范圍單精度型float432673.410-383.41038雙精度型double8641516-1.710-3081.710308162.5 2.5 字符型數(shù)據(jù)字符型數(shù)據(jù) 2.5.1 2.5.1 字符常量字符常量 用一對單引號括起來的單個字符,稱為字符常量。C語言中有一種稱為“轉(zhuǎn)義字符”的特殊形式的字符常量,轉(zhuǎn)義字符以反斜杠“”開頭,將“”后面的字符轉(zhuǎn)換為另外的含義。 2-9轉(zhuǎn)義符字符形式含義n換行,從當(dāng)前位置移到下一行開頭t水平制表(跳到下一個Tab位置)b退格,將當(dāng)前位置移到前一列r回車
13、,將當(dāng)前位置移到本行開頭單撇號字符反斜杠字符雙撇號字符ddd13位八進(jìn)制數(shù)所代表的字符xhh12位十六進(jìn)制數(shù)所代表的字符172.5.2 2.5.2 字符變量字符變量 字符變量用來存放字符常量,關(guān)鍵字為char,只能存放一個字符,占用1個字節(jié)內(nèi)存單元。 字符數(shù)據(jù)在內(nèi)存中存儲的是字符的ASCII碼(一個無符號整數(shù)),其形式與整數(shù)的存儲形式一樣,表示范圍是:0255。 在C語言中允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用。 2-10182.6 2.6 算術(shù)運算符和算術(shù)表達(dá)式算術(shù)運算符和算術(shù)表達(dá)式2.6.1 2.6.1 運算符及表達(dá)式簡介運算符及表達(dá)式簡介2.6.1.1 2.6.1.1 運算符運算符 C語言中的
14、運算符具有2個特點: 運算符的優(yōu)先級 C語言中,運算符的優(yōu)先級共分為15級,1級最高,15級最低。 運算符的結(jié)合性 C語言中各運算符的結(jié)合性分為左結(jié)合性(從左到右)和右結(jié)合性(從右到左)。 2.6.1.2 2.6.1.2 表達(dá)式表達(dá)式 表達(dá)式是由常量、變量、函數(shù)和運算符組成的式子。 表達(dá)式求值是按運算符的優(yōu)先級和結(jié)合性規(guī)定的順序進(jìn)行的。 2-11192.6.2 2.6.2 算術(shù)運算符和算術(shù)表達(dá)式算術(shù)運算符和算術(shù)表達(dá)式2.6.2.1 2.6.2.1 基本的算術(shù)運算符基本的算術(shù)運算符 基本算術(shù)運算符均為雙目運算,有5種:加法運算符“+”、 減法運算符“-”、乘法運算符“*”、 除法運算符“/”、
15、求余運算符或模運算符 “%”。 用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子稱為算術(shù)表達(dá)式,運算對象包括常量,變量、函數(shù)等。 如果一個運算符兩側(cè)的運算對象數(shù)據(jù)類型不同,要先利用自動類型轉(zhuǎn)換或強制類型轉(zhuǎn)換,使運算對象具有同一種數(shù)據(jù)類型,然后才能進(jìn)行運算。2-12202.6.2.2 2.6.2.2 類型轉(zhuǎn)換類型轉(zhuǎn)換 數(shù)據(jù)的類型是可以轉(zhuǎn)換的。 1. 自動轉(zhuǎn)換 如果一個運算符兩側(cè)運算對象的數(shù)據(jù)類型不同,則系統(tǒng)按“先轉(zhuǎn)換、后運算” 的原則,首先將數(shù)據(jù)自動轉(zhuǎn)換成同一類型,然后在同一類型數(shù)據(jù)間進(jìn)行運算。 2. 強制類型轉(zhuǎn)換 強制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運算符來實現(xiàn)的,一般形式為
16、(類型名)(表達(dá)式)其功能是把表達(dá)式的運算結(jié)果強制轉(zhuǎn)換成類型說明符所表示的類型。 2-13doublefloat unsignedlongintchar,short高低自動轉(zhuǎn)換規(guī)則 212.6.2.3 2.6.2.3 自增(自增(+)、自減()、自減(-)運算符)運算符 自增運算符(+)使單個變量的值增1,自減運算符(-)使單個變量的值減1,格式為 前置:+i , -i 在使用i之前,使i的值加(減)1 后置:i+ , i- 在使用i之后,使i的值加(減)1 2-14222.7 2.7 賦值運算符和賦值表達(dá)式賦值運算符和賦值表達(dá)式2.7.1 2.7.1 賦值運算符賦值運算符 賦值運算符是“=”
17、,它的作用是將一個數(shù)據(jù)或一個表達(dá)式的值賦給一個變量,賦值運算符的一般形式如下: 變量=表達(dá)式2.7.2 2.7.2 復(fù)合的賦值運算符復(fù)合的賦值運算符 復(fù)合賦值運算符是由賦值運算符之前再加一個雙目運算符構(gòu)成的,一般格式如下: 變量 雙目運算符 = 表達(dá)式 它等價于:變量 = 變量 雙目運算符 (表達(dá)式)。 5個復(fù)合算術(shù)運算符:和賦值“+=”,差賦值“-=”,積賦值“*=”,商賦值“/=”,模賦值“%=”。 由賦值運算符將一個變量和一個表達(dá)式連接起來的式子稱為賦值表達(dá)式,它的一般形式為 賦值表達(dá)式的值為被賦變量的值。 2-15232.8 2.8 逗號運算符和逗號表達(dá)式逗號運算符和逗號表達(dá)式 在C語
18、言中,逗號“,”也是一種運算符,稱為逗號運算符,它把若干個表達(dá)式連接起來組成一個表達(dá)式,稱為逗號表達(dá)式,一般形式為 表達(dá)式1,表達(dá)式2,表達(dá)式n逗號表達(dá)式的求解過程是:從左到右,依次計算各表達(dá)式的值,最后一個表達(dá)式的值即為整個逗號表達(dá)式的值。 2-1624 在第一章介紹了C語言程序的結(jié)構(gòu),在第二章介紹了構(gòu)成程序的基本成份:常量、變量、基本數(shù)據(jù)類型、常用運算符及表達(dá)式,本章將介紹C語句概述,數(shù)據(jù)的輸入與輸出,順序結(jié)構(gòu)程序設(shè)計。 3-1第第3章章 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計返回目錄253.1 C3.1 C語句概述語句概述 C語句用“;”做為結(jié)束,其作用是向計算機系統(tǒng)發(fā)出操作指令。 3.1.1
19、 3.1.1 控制語句控制語句 C語言有9種控制語句。 if( )else (條件語句) switch (開關(guān)語句) for( ) (循環(huán)語句) while( ) (循環(huán)語句) dowhile( ) (循環(huán)語句) continue (結(jié)束循環(huán)語句) break (中止執(zhí)行switch語句或結(jié)束本次循環(huán)語句) goto (無條件轉(zhuǎn)向語句) return (從函數(shù)返回語句) 3-2263.1.2 3.1.2 函數(shù)調(diào)用語句函數(shù)調(diào)用語句 函數(shù)調(diào)用語句由一次函數(shù)調(diào)用加一個分號“;”組成。3.1.3 3.1.3 表達(dá)式語句表達(dá)式語句 表達(dá)式語句由表達(dá)式加一個分號“;”組成,其一般形式如下: 表達(dá)式;3.1
20、.4 3.1.4 復(fù)合語句復(fù)合語句 復(fù)合語句由花括號 把多條語句括起來組成。3.1.5 3.1.5 空語句空語句 只有一個分號“;”組成的語句,稱為空語句,它什么也不執(zhí)行,用作被轉(zhuǎn)向點或循環(huán)語句中的循環(huán)體。3-327 3.2 3.2 數(shù)據(jù)的輸入輸出數(shù)據(jù)的輸入輸出 3.2.1 3.2.1 字符數(shù)據(jù)的輸入輸出字符數(shù)據(jù)的輸入輸出3.2.1.1 putchar()3.2.1.1 putchar()函數(shù)(字符輸出函數(shù))函數(shù)(字符輸出函數(shù)) putchar()函數(shù)是字符輸出函數(shù),其一般形式為: putchar(c) 功能:向顯示器輸出一個字符。 3.2.1.2 getchar()3.2.1.2 getch
21、ar()函數(shù)(字符輸入函數(shù))函數(shù)(字符輸入函數(shù)) getchar()函數(shù)是字符輸入函數(shù),其一般形式為: getchar() 功能:從鍵盤輸入一個字符。 3-4283.2.2 printf()3.2.2 printf()函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù))3.2.2.1 printf3.2.2.1 printf函數(shù)函數(shù)()()(格式輸出函數(shù))的格式(格式輸出函數(shù))的格式 printf()函數(shù)是格式輸出函數(shù),其一般格式如下: printf(格式控制字符串 ,輸出表列); 功能:按指定格式向終端(顯示器)輸出若干任意類型的數(shù)據(jù)。3.2.2.2 printf()3.2.2.2 printf()函數(shù)
22、的格式字符函數(shù)的格式字符 1. d,i格式字符,按帶符號的十進(jìn)制形式輸出整數(shù),正數(shù)不輸出符號,常用d。 %d,按整型數(shù)據(jù)的實際長度輸出。 %md,m代表一個正整數(shù),m為指定輸出數(shù)據(jù)的寬度。若數(shù)據(jù)位數(shù)小于m,則左端補以空格;若數(shù)據(jù)位數(shù)大于m,則按實際位數(shù)輸出。 %-md ,m代表一個正整數(shù),m為指定輸出數(shù)據(jù)的寬度。若數(shù)據(jù)位數(shù)小于m,則右端補以空格;若數(shù)據(jù)位數(shù)大于m,則按實際位數(shù)輸出。 %ld,輸出長整型數(shù)據(jù)。對長整型數(shù)據(jù),可再使用m指定輸出數(shù)據(jù)的寬度。3-529 2. o格式字符,按八進(jìn)制形式輸出整數(shù),用法同d格式字符。 3. x(或X)格式字符,按十六進(jìn)制形式輸出整數(shù),用法同d格式字符。 4.
23、 u格式字符,按無符號十進(jìn)制形式輸出整數(shù),用法同d格式字符。 5. c格式字符,輸出一個字符。 %c,輸出一個字符。 %mc,m代表一個正整數(shù),m為指定輸出數(shù)據(jù)的寬度,左端補以空格。 %-mc,m代表一個正整數(shù),m為指定輸出數(shù)據(jù)的寬度,右端補以空格。 6. s格式字符,輸出一個字符串。 %s,輸出一個字符串 %ms,m代表一個正整數(shù),輸出的字符串占m列,如果字符串本身長度大于m,則將字符串全部輸出;如果串長小于m,則左補空格。 %-ms,m代表一個正整數(shù),輸出的字符串占m列,如果字符串本身長度大于m,則將字符串全部輸出;如果串長小于m,則右補空格。 %m.ns,輸出占m列,但只取字符串中左端n
24、個字符,這n個字符輸出在m列的右側(cè),左補空格。如果nm,則m自動取n值即保證n個字符正常輸出。 %-m.ns,其中m、n含義同上,n個字符輸出在m列范圍的左側(cè),右補空格。 %.ns,只指定了n,沒指定m,自動使mn。3-630 7. f格式字符,按小數(shù)形式輸出實數(shù)。 %f,整數(shù)部分全部如數(shù)輸出,并輸出6位小數(shù)。但并非全部數(shù)字都是有效數(shù)字,單精度實數(shù)的有效位數(shù)一般為7位,雙精度實數(shù)的有效位數(shù)一般為16位。 %m.nf,指定輸出的數(shù)據(jù)共占m列,其中有n位小數(shù),自動四舍五入。如果數(shù)值長度小于m,則左端補空格。 %-m.nf,指定輸出的數(shù)據(jù)共占m列,其中有n位小數(shù),自動四舍五入。如果數(shù)值長度小于m,則
25、右端補空格。 %.nf,只指定了n,沒指定m,自動使m等于數(shù)據(jù)應(yīng)占的長度。 8. e(或E)格式字符,以指數(shù)形式輸出實數(shù)。 %e,系統(tǒng)自動給出6位小數(shù),共13位。 %m.ne,用法同f格式字符。 %-m.ne,用法同f格式字符。 %.ne,用法同f格式字符。 9. g(或G)格式字符,根據(jù)數(shù)值大小,自動選f或e。3-7313.2.3 scanf()3.2.3 scanf()函數(shù)(格式輸入函數(shù))函數(shù)(格式輸入函數(shù))3.2.3.1 scanf()3.2.3.1 scanf()函數(shù)(格式輸入函數(shù))的格式函數(shù)(格式輸入函數(shù))的格式 scanf()函數(shù)是格式輸入函數(shù),其一般格式如下: scanf(格式控
26、制字符串,地址列表); 功能:按指定的格式從終端(鍵盤)上把數(shù)據(jù)輸入到指定的變量之中。3.2.3.2 scanf()3.2.3.2 scanf()函數(shù)的格式字符函數(shù)的格式字符 scanf()函數(shù)的格式字符與printf()函數(shù)類似,有d,o,x,u,c,s,f,e,使用方式亦與printf()函數(shù)類似,這里介紹常用的格式字符d、c、f的使用。1. d格式字符,用來輸入有符號的十進(jìn)制整數(shù)。 %d,輸入有符號的十進(jìn)制整數(shù)。 %md,m代表一個正整數(shù),指定輸入數(shù)據(jù)占m列。 %*d或%*md,表示跳過指定的輸入項或指定的m列。 %ld,輸入長整型數(shù)據(jù)。 3-8322. c格式字符,用來輸入單個字符。
27、%c,輸入一個字符。 %*c,表示跳過指定的輸入項。 3. f格式字符,用來輸入實數(shù),可以用小數(shù)形式或指數(shù)形式輸入。 %f,用小數(shù)形式或指數(shù)形式輸入實數(shù)。 %lf,用于輸入double型數(shù)據(jù)。 %*f,表示跳過指定的輸入項。3-933 3.3 3.3 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序設(shè)計3.3.1 3.3.1 順序結(jié)構(gòu)程序設(shè)計概述順序結(jié)構(gòu)程序設(shè)計概述 在順序結(jié)構(gòu)程序中,各語句是按照位置的先后次序,順序執(zhí)行的,且每條語句都會被執(zhí)行到。3-10使用數(shù)學(xué)庫函數(shù)時的頭文件使用scanf()函數(shù)、getchar()函數(shù)等使用算術(shù)表達(dá)式、賦值表達(dá)式等由語句組成的執(zhí)行部分使用printf()函數(shù)、putchar
28、()函數(shù)等#include #include void main() 變量定義; 輸入數(shù)據(jù) 數(shù)據(jù)運算部分 輸出部分 順序結(jié)構(gòu)程序的組成 3.3.2 順序結(jié)構(gòu)程序設(shè)計示例順序結(jié)構(gòu)程序設(shè)計示例34第第4章章 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計 選擇結(jié)構(gòu)是C語言的三種基本結(jié)構(gòu)之一。在數(shù)據(jù)處理過程中,經(jīng)常需要根據(jù)不同的條件,完成不同的處理。例如,輸出a和b兩個數(shù)中的較大數(shù)。要求當(dāng)a大于b時,輸出a;否則,輸出b。 對于這種根據(jù)一定的條件選擇執(zhí)行路徑的問題,要用選擇結(jié)構(gòu)來解決。 本章主要介紹條件語句中“條件”的產(chǎn)生與表達(dá),兩種條件語句(if語句和switch語句)的使用。4-1返回目錄354-24.1 關(guān)
29、系運算符和關(guān)系表達(dá)式關(guān)系運算符和關(guān)系表達(dá)式 4.1.1 關(guān)系運算符關(guān)系運算符 C語言的關(guān)系運算符一共有6種 關(guān)系運算符的結(jié)合性是自左至右。 算術(shù)運算符、關(guān)系運算符、賦值運算符的運算次序為:算術(shù)運算符關(guān)系運算符賦值運算符。高低關(guān)系運算符含義使用形式優(yōu)先級小于a3同級運算符=小于等于(x+y)大于a-3=大于等于a+b=x+y=等于a*b+2=x+y同級運算符!=不等于x!=036 4.1.2 關(guān)系表達(dá)式關(guān)系表達(dá)式 關(guān)系表達(dá)式:用關(guān)系運算符將兩個表達(dá)式連接起來的式子,稱為關(guān)系表達(dá)式。 關(guān)系表達(dá)式的值是一個邏輯值,即“真”或“假”,當(dāng)關(guān)系表達(dá)式成立時,其值為“真”,不成立時,其值為“假”。 C語言中
30、沒有邏輯型數(shù)據(jù),而是用“1”表示“真”,用“0”表示“假”。在判斷一個值是否為真時,只有“0”被認(rèn)為是假,所有非“0”值均被認(rèn)為是“真”。4-337 4.2.1 4.2.1 邏輯運算符邏輯運算符 C語言的邏輯運算符一共有3種。4-4 4.2 邏輯運算符和邏輯表達(dá)式邏輯運算符和邏輯表達(dá)式 高低x100邏輯或|(雙目)x=10&x=100邏輯與&(雙目)!(a字符串2,則strcmp()函數(shù)的返回值大于0; 若字符串1=字符串2,則strcmp()函數(shù)的返回值等于0; 若字符串1字符串2,則strcmp()函數(shù)的返回值小于0。6-1065第第7 7章章 函數(shù)函數(shù) 一個C程序往往由多
31、個函數(shù)組成,每個函數(shù)具有一定的功能,通過函數(shù)之間的調(diào)用來完成整個程序的任務(wù)。 本章主要介紹函數(shù)的概述、函數(shù)的定義、函數(shù)參數(shù)和函數(shù)值、函數(shù)的調(diào)用、函數(shù)的嵌套調(diào)用和遞歸調(diào)用、數(shù)組作函數(shù)的參數(shù)、局部變量和全局變量、動態(tài)存儲變量和靜態(tài)存儲變量。7-1返回目錄667.1 7.1 概述概述 7.1.1 C語言程序結(jié)構(gòu)語言程序結(jié)構(gòu)一個C程序由一個或多個源程序文件組成,一個源程序文件由一個或多個函數(shù)組成;每個源程序以一個文件形式存儲,并以文件為單位進(jìn)行編譯。在C語言中,所有函數(shù)定義,包括main()函數(shù)在內(nèi),都是平行的,獨立的。 函數(shù)之間可以相互調(diào)用,也可以嵌套調(diào)用,函數(shù)還可以自己調(diào)用自己。習(xí)慣上把調(diào)用者稱為
32、主調(diào)函數(shù),把被調(diào)用者稱為被調(diào)函數(shù)。main()函數(shù)是主函數(shù),是系統(tǒng)定義的,它可以調(diào)用其他函數(shù),但不允許被其他函數(shù)調(diào)用。C程序的執(zhí)行總是從main()函數(shù)開始,調(diào)用其他的函數(shù)后返回main()函數(shù),并在main()函數(shù)中結(jié)束整個程序的執(zhí)行。 7.1.2 7.1.2 函數(shù)的分類函數(shù)的分類庫函數(shù)和用戶定義函數(shù)有返回值函數(shù)和無返回值函數(shù)無參函數(shù)和有參函數(shù)7-2677.2 7.2 函數(shù)的定義函數(shù)的定義 7.2.1 7.2.1 無參函數(shù)的定義無參函數(shù)的定義 定義格式如下: 類型標(biāo)識符 函數(shù)名() 函數(shù)首部 聲明部分 函數(shù)體 語句 7.2.2 7.2.2 有參函數(shù)的定義有參函數(shù)的定義 定義格式如下: 類型標(biāo)
33、識符 函數(shù)名(形式參數(shù)列表) 聲明部分 語句 7-3687.3 7.3 函數(shù)參數(shù)和函數(shù)的值函數(shù)參數(shù)和函數(shù)的值 7.3.17.3.1 函數(shù)參數(shù)函數(shù)參數(shù) 形參必須是具有某種類型的變量,而實參可以是常量、 變量或表達(dá)式,但當(dāng)程序執(zhí)行到函數(shù)調(diào)用語句時實參一定要有確定的值。形參在未出現(xiàn)函數(shù)調(diào)用時,并不占內(nèi)存的存儲單元,只有在函數(shù)調(diào)用時,才給形參分配存儲單元,在函數(shù)調(diào)用結(jié)束時,形參所占的存儲單元也隨之被釋放。實參與形參的個數(shù)應(yīng)相等,類型應(yīng)一致或賦值兼容。實參與形參按順序?qū)?yīng),一一傳遞數(shù)據(jù),實參對形參變量的數(shù)據(jù)傳遞是單向的“值傳遞”。 7.3.2 7.3.2 函數(shù)的返回值函數(shù)的返回值 C通過return語句
34、返回函數(shù)的值,return語句的一般格式如下: return (表達(dá)式); 或 return 表達(dá)式 ; 其功能是將表達(dá)式的值作為函數(shù)的返回值帶回主調(diào)函數(shù),并結(jié)束被調(diào)函數(shù)的執(zhí)行,返回到主調(diào)函數(shù)。 如果函數(shù)值的類型和return語句中表達(dá)式的值的類型不一致,則以函數(shù)類型為準(zhǔn)。 7-4697.4 7.4 函數(shù)的調(diào)用函數(shù)的調(diào)用 7.4.1 7.4.1 函數(shù)調(diào)用的一般形式函數(shù)調(diào)用的一般形式1. 無參函數(shù)調(diào)用的一般形式: 函數(shù)名()2. 有參函數(shù)調(diào)用的一般形式: 函數(shù)名(實參列表) 7.4.2 7.4.2 函數(shù)調(diào)用的方式函數(shù)調(diào)用的方式 按函數(shù)調(diào)用出現(xiàn)在語句中的位置,將函數(shù)調(diào)用方式分為三種。1函數(shù)語句:把
35、函數(shù)調(diào)用作為一條語句。2函數(shù)表達(dá)式:函數(shù)調(diào)用出現(xiàn)在一個表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá)式。這時要求函數(shù)帶回一個確定的值以參加表達(dá)式的運算,最常見的是賦值表達(dá)式,如:c=sum(a,b)。3函數(shù)參數(shù):把函數(shù)的返回值作為另一個函數(shù)或下一次函數(shù)調(diào)用的實參。7-570 調(diào)用自定義函數(shù)時,自定義函數(shù)必須存在,一般還應(yīng)在主函數(shù)中對被調(diào)函數(shù)作聲明,聲明方式如下: 類型標(biāo)識符 被調(diào)函數(shù)名(類型說明 變量名); 當(dāng)被調(diào)用函數(shù)的定義出現(xiàn)在主函數(shù)之前,函數(shù)聲明可省略。 調(diào)用庫函數(shù)時,一定要將包含該函數(shù)的頭文件包含到程序中。例如: 調(diào)用printf()函數(shù),則應(yīng)在程序中包含stdio.h頭文件; 調(diào)用數(shù)學(xué)函數(shù)sqrt
36、(),則應(yīng)在程序中包含math.h頭文件。7-6717.5 7.5 函數(shù)設(shè)計示例函數(shù)設(shè)計示例 設(shè)計函數(shù)的原則: 一個函數(shù)不應(yīng)處理太多的功能,要保持函數(shù)的小型化,功能單一化。 一個函數(shù)要保持自己的獨立性,如同一個黑匣子一樣,有進(jìn)有出,進(jìn)指函數(shù)的入口,通過函數(shù)名和實際參數(shù)進(jìn)入函數(shù);出指函數(shù)的出口,通過return或“”結(jié)束函數(shù)的執(zhí)行返回主調(diào)函數(shù)。 在函數(shù)中應(yīng)多使用復(fù)合語句,使函數(shù)具有結(jié)構(gòu)化,并可提高執(zhí)行效率和節(jié)省存儲單元。 一般在主調(diào)函數(shù)中定義變量,輸入和輸出數(shù)據(jù),而把對數(shù)據(jù)的處理用函數(shù)來完成。 7-7727.6 7.6 函數(shù)的嵌套調(diào)用和遞歸調(diào)用函數(shù)的嵌套調(diào)用和遞歸調(diào)用 7.6.1 7.6.1 函
37、數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用 在C語言中函數(shù)的定義都是相互平行、相互獨立的。在定義函數(shù)時,函數(shù)不能嵌套定義,但可以嵌套調(diào)用函數(shù),即調(diào)用一個函數(shù)的過程中,又調(diào)用另一個函數(shù)。 7.6.2 7.6.2 函數(shù)的遞歸調(diào)用函數(shù)的遞歸調(diào)用 函數(shù)的遞歸調(diào)用是指一個函數(shù)在它的函數(shù)體內(nèi),直接或間接的調(diào)用它自身。 在遞歸調(diào)用中,函數(shù)反復(fù)調(diào)用自身,每調(diào)用一次進(jìn)入新的一層。為了防止遞歸調(diào)用無終止地進(jìn)行,必須在函數(shù)體內(nèi)有終止遞歸調(diào)用的手段,常用的手段是加入條件判斷,滿足條件后就不再遞歸調(diào)用,然后逐層返回。7-8737.7 7.7 數(shù)組作函數(shù)的參數(shù)數(shù)組作函數(shù)的參數(shù) 7.7.1 7.7.1 數(shù)組元素作函數(shù)的參數(shù)數(shù)組元素作函數(shù)的
38、參數(shù) 數(shù)組元素就是下標(biāo)變量,在使用上與普通變量并無區(qū)別。在函數(shù)調(diào)用時,數(shù)組元素只能做函數(shù)的實參,把數(shù)組元素的值傳送給形參,實現(xiàn)單向值傳送。 7.7.2 7.7.2 數(shù)組名作函數(shù)的參數(shù)數(shù)組名作函數(shù)的參數(shù) 數(shù)組名作函數(shù)參數(shù)時,既可以作形參,也可以作實參。要求形參和相對應(yīng)的實參都必須是類型相同的數(shù)組,并在主調(diào)函數(shù)和被調(diào)函數(shù)中分別定義。 用數(shù)組名作函數(shù)的參數(shù),實參和形參傳遞的是“地址”,即將實參數(shù)組的首地址賦值給形參數(shù)組名,那么實參數(shù)組和形參數(shù)組在內(nèi)存中就占用同一存儲單元。因此形參數(shù)組的值發(fā)生變化時實參數(shù)組的值也跟著變化。 7.7.3 7.7.3 二維數(shù)組作函數(shù)的參數(shù)二維數(shù)組作函數(shù)的參數(shù) 二維數(shù)組元素
39、可以作函數(shù)的實參,和一維數(shù)組元素、普通變量作函數(shù)的實參相同。 二維數(shù)組名可以作函數(shù)的實參和形參,在調(diào)用函數(shù)時和一維數(shù)組名作函數(shù)的參數(shù)相同。 注意: 在被調(diào)用函數(shù)中對形參數(shù)組定義時可以指定每一維的大小,可以也只可以省 略第一維的大小說明。 實參數(shù)組和形參數(shù)組的第二維的大小必須相同。 7-9747.8 7.8 局部變量和全局變量局部變量和全局變量 7.8.1 7.8.1 局部變量局部變量 在一個函數(shù)內(nèi)部定義的變量稱為局部變量,它只在該函數(shù)范圍內(nèi)有效。 7.8.2 7.8.2 全局變量全局變量 在函數(shù)外部定義的變量稱為全局變量,其作用域是:從變量定義位置開始,到本文件結(jié)束為止。 7-10757.9
40、7.9 動態(tài)存儲變量與靜態(tài)存儲變量動態(tài)存儲變量與靜態(tài)存儲變量 7.9.17.9.1 局部變量的存儲方式局部變量的存儲方式 局部變量一般是動態(tài)分配存儲單元,也稱為自動變量,用auto說明,調(diào)用時分配,結(jié)束時釋放,不保留結(jié)果。如果希望保留局部變量的值,可以將其定義為靜態(tài)局部變量,用static說明,定義格式為: static 數(shù)據(jù)類型 局部變量表; 在定義靜態(tài)局部變量時,如果不初始化,則自動賦以0(整型和實型)或0(字符型);且每次調(diào)用它們所在的函數(shù)時,變量不再重新賦初值,而是保留上次調(diào)用結(jié)束時的值。 7.9.2 7.9.2 全局變量的存儲方式全局變量的存儲方式 全局變量,生存期從程序開始到結(jié)束,
41、在程序運行期間始終占有內(nèi)存單元,屬于靜態(tài)存儲。 全局變量如果允許其它文件使用,應(yīng)在引用它的文件中用extern說明;如果只限本文件使用,在定義時加static。 7-1176第第8 8章章 指針指針 指針是C語言中的一個重要概念,也是C語言的一個重要特色。正確靈活地運用指針可以有效的表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),能動態(tài)分配內(nèi)存,能方便地使用字符串,有效而方便地使用數(shù)組,在調(diào)用函數(shù)時能得到多于一個的值,能直接處理內(nèi)存地址等。本章主要介紹地址和指針的概念、指針變量的定義與應(yīng)用、數(shù)組的指針和指向數(shù)組的指針變量、字符串的指針和指向字符串的指針變量、函數(shù)的指針和指向函數(shù)的指針變量、 返回指針值的函數(shù)。 8-1返回
42、目錄778.1 地址和指針的概念地址和指針的概念 8.1.1 8.1.1 地址地址 8.1.1.1 8.1.1.1 內(nèi)存地址內(nèi)存地址 內(nèi)存中存儲單元的編號。8.1.1.2 8.1.1.2 變量地址變量地址 系統(tǒng)分配給變量的存儲單元的起始地址稱為變量地址。 8.1.2 8.1.2 數(shù)據(jù)的存取方式數(shù)據(jù)的存取方式 8.1.2.1 8.1.2.1 直接訪問方式直接訪問方式 直接利用變量的地址進(jìn)行存取8.1.2.2 8.1.2.2 間接訪問方式間接訪問方式 通過一個變量訪問另一個變量的值。8.1.2.3 8.1.2.3 兩種訪問方式的比較兩種訪問方式的比較直接訪問:甲知道乙在何處,直接去找。間接訪問:甲
43、通過丙(指針變量)找乙。 8.1.3 8.1.3 指針與指針變量指針與指針變量 變量的指針:變量的地址稱為變量的指針。通過變量的指針能夠找到變量。指針變量:專門用于存儲其它變量地址的變量稱為指針變量。 8-2788.2 指針變量的定義與應(yīng)用指針變量的定義與應(yīng)用 8.2.1 指針變量的定義和相關(guān)運算指針變量的定義和相關(guān)運算 8.2.1.1 指針變量的定義指針變量的定義 定義格式: 基類型 *指針變量名; 說明:星號“*”稱為指針變量的定義標(biāo)識符,表示后面的變量為指針變量;“基類型”表示指針變量所指向的變量的類型。 8.2.1.28.2.1.2 指針變量的相關(guān)運算指針變量的相關(guān)運算 1. 取地址運
44、算符:& 格式: &變量 功能:得到變量的地址。2. 指針運算符(或稱間接訪問運算符):* 格式:*指針變量 功能:訪問指針變量所指向的變量。 8.2.28.2.2 指針變量作函數(shù)參數(shù)指針變量作函數(shù)參數(shù) 指針變量既可以作函數(shù)的形參,也可以作函數(shù)的實參。指針變量作實參時,與普通變量一樣,也是“值傳遞”,將指針變量的值(一個地址)傳遞給被調(diào)用函數(shù)的形參(必須是一個指針變量)。8-3798.3 8.3 數(shù)組的指針和指向數(shù)組的指針變量數(shù)組的指針和指向數(shù)組的指針變量 8.3.1 8.3.1 指向數(shù)組元素的指針指向數(shù)組元素的指針 指向數(shù)組元素的指針變量的定義,與指向普通變量的指針變量的定義
45、方法一樣。 8.3.2 8.3.2 通過指針引用數(shù)組元素通過指針引用數(shù)組元素 在C語言中數(shù)組元素的引用,既可用下標(biāo)法,也可用指針法。 如果有“int a10,*p=a;”,則 p是數(shù)組的首地址,也是數(shù)組元素a0的地址; *p和a0等價。 p+1指向數(shù)組的下一個元素,而不是簡單地使指針變量p的值加1。 p+i和a+i都是數(shù)組元素ai的地址;而*(p+i)和*(a+i)就是數(shù)組元素ai。 指向數(shù)組的指針變量,也可以看作是數(shù)組名,可按下標(biāo)法來使用。pi等價于*(p+i)等價于ai。 8-480 8.3.38.3.3 數(shù)組作函數(shù)參數(shù)數(shù)組作函數(shù)參數(shù) 數(shù)組名作形參時,接收實參數(shù)組首元素的地址;作實參時,將
46、數(shù)組首元素的地址傳遞給形參數(shù)組。 引入指向數(shù)組的指針變量后,數(shù)組及指向數(shù)組的指針變量作函數(shù)參數(shù)時,可有種等價形式: 形參、實參都用數(shù)組名; 形參、實參都用指針變量; 形參用指針變量、實參用數(shù)組名; 形參用數(shù)組名、實參用指針變量; 8-5818.4 8.4 字符串的指針和指向字符串的指針變量字符串的指針和指向字符串的指針變量 8.4.1 8.4.1 使用字符指針表示和引用字符串使用字符指針表示和引用字符串 字符串在內(nèi)存中的起始地址稱為字符串的指針,可以定義一個字符指針變量指向一個字符串。 定義字符指針變量的形式如下: char *指針變量名; 8.4.2 8.4.2 字符串指針做函數(shù)參數(shù)字符串指
47、針做函數(shù)參數(shù) 用字符串指針做函數(shù)的參數(shù)傳遞的是地址 。8-68.5 8.5 返回指針值的函數(shù)返回指針值的函數(shù) 一個函數(shù)可以返回一個int型、float型、char型的數(shù)據(jù),也可以返回一個指針類型的數(shù)據(jù)。返回指針值的函數(shù)(簡稱指針函數(shù))的定義格式如下: 函數(shù)類型 *函數(shù)名(形參表) 828.6 8.6 函數(shù)的指針和指向函數(shù)的指針變量函數(shù)的指針和指向函數(shù)的指針變量 8.6.1 8.6.1 函數(shù)指針的概念函數(shù)指針的概念 一個函數(shù)在編譯時,也被分配一塊內(nèi)存單元,這個內(nèi)存單元的起始地址稱為該函數(shù)的指針。 8.6.2 8.6.2 指向函數(shù)的指針變量指向函數(shù)的指針變量定義格式:函數(shù)類型 (*指針變量)( )
48、;注意:“*指針變量”外的括號不能缺,否則就變成返回指針值的函數(shù)了。 賦值格式:指向函數(shù)的指針變量&函數(shù)名;注意:函數(shù)名后不能帶括號和參數(shù);函數(shù)名前的“&”符號是可選的。調(diào)用格式:(*函數(shù)指針變量)(實參表) 8.6.3 8.6.3 指向函數(shù)的指針變量作函數(shù)參數(shù)指向函數(shù)的指針變量作函數(shù)參數(shù) 指向函數(shù)的指針變量的常用用途之一,就是將函數(shù)指針作參數(shù),傳遞到其它函數(shù)。 8-783第第9 9章章 結(jié)構(gòu)體與共用體結(jié)構(gòu)體與共用體 本章主要介紹結(jié)構(gòu)體類型的定義、結(jié)構(gòu)體變量的定義、結(jié)構(gòu)體變量的引用和初始化、結(jié)構(gòu)體數(shù)組、共用體。9-1返回目錄849.1 9.1 結(jié)構(gòu)體類型的定義結(jié)構(gòu)體類型的定義
49、定義結(jié)構(gòu)體類型的一般形式為: struct 結(jié)構(gòu)體名 成員表列 ; 其中,成員表列是對結(jié)構(gòu)體數(shù)據(jù)中每一項數(shù)據(jù)項的聲明,其格式與聲明普通變量相同。 9.29.2 結(jié)構(gòu)體變量的定義結(jié)構(gòu)體變量的定義 9.2.1 9.2.1 先定義結(jié)構(gòu)體類型、再定義結(jié)構(gòu)體變量先定義結(jié)構(gòu)體類型、再定義結(jié)構(gòu)體變量 9.2.2 9.2.2 在定義結(jié)構(gòu)體類型的同時,定義結(jié)構(gòu)體變量在定義結(jié)構(gòu)體類型的同時,定義結(jié)構(gòu)體變量 9-2859.3 9.3 結(jié)構(gòu)體變量的引用和初始化結(jié)構(gòu)體變量的引用和初始化 9.3.1 9.3.1 結(jié)構(gòu)體變量的引用結(jié)構(gòu)體變量的引用 結(jié)構(gòu)體作為若干成員的集合是一個整體。在引用結(jié)構(gòu)體變量時,不僅要對結(jié)構(gòu)體變量整
50、體進(jìn)行操作,而且更多的是要訪問結(jié)構(gòu)體變量中的每個成員。引用結(jié)構(gòu)體變量成員的方法是: 結(jié)構(gòu)體變量名.成員名 “.”為成員運算符,其優(yōu)先級最高,結(jié)合性為從左到右。 對結(jié)構(gòu)體變量進(jìn)行輸入輸出時,只能以成員引用的方式進(jìn)行,不能對結(jié)構(gòu)體變量進(jìn)行整體的輸入輸出。9.3.2 9.3.2 結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化 在初始化時,按照所定義的結(jié)構(gòu)體類型的數(shù)據(jù)結(jié)構(gòu),依次寫出各成員的初始值,在編譯時,就將它們賦給此結(jié)構(gòu)體變量中各成員。格式與一維數(shù)組相似。 9-3869.4 結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組 數(shù)組元素是結(jié)構(gòu)體類型的數(shù)組,稱為結(jié)構(gòu)體數(shù)組。 定義結(jié)構(gòu)體數(shù)組的方法與定義結(jié)構(gòu)體變量的方法類似,只是要多用一個方括
51、號以說明它是一個數(shù)組。 結(jié)構(gòu)體數(shù)組的初始化和普通數(shù)組的初始化相同,規(guī)則也相同。 9-4879.59.5 共用體共用體 9.5.1 9.5.1 共用體類型定義共用體類型定義共用體數(shù)據(jù)類型,是指將不同的數(shù)據(jù)項存放于同一段內(nèi)存單元的一種構(gòu)造數(shù)據(jù)類型。定義形式如下: union 共用體名 成員表列 ;9.5.2 9.5.2 共用體變量的定義共用體變量的定義 定義共用體變量的方法與結(jié)構(gòu)體變量很相似,形式如下: union 共用體名 成員列表; union 共用體名 變量列表; 或者 union 共用體名 成員列表變量列表;9.5.3 9.5.3 共用體變量的引用共用體變量的引用 引用一個共用體變量中的某
52、一個成員項,引用方式與引用結(jié)構(gòu)體變量中的成員很相似。 9-588第第1010章章 文件文件 在程序設(shè)計中,文件是一個重要的概念,對文件的操作是高級語言必須具備的功能。 本章主要介紹介紹C語言文件概述、文件的打開和關(guān)閉、文件的讀寫操作。10-1返回目錄8910.1 C語言文件概述語言文件概述 10.1.1 10.1.1 文件的概念文件的概念 文件是指存放在外部存儲介質(zhì)上的數(shù)據(jù)集合。 10.1.2 10.1.2 文件的分類文件的分類 10.1.2.1 10.1.2.1 從用戶的角度看,文件可分為普通文件和設(shè)備文件。從用戶的角度看,文件可分為普通文件和設(shè)備文件。 10.1.2.2 10.1.2.2
53、從文件編碼的方式來看,文件可分為從文件編碼的方式來看,文件可分為ASCIIASCII碼文件和二進(jìn)制碼文件。碼文件和二進(jìn)制碼文件。 10.1.3 C10.1.3 C語言處理文件的機制語言處理文件的機制 C語言將文件看作是由一個一個的字符(ASCII碼文件)或字節(jié)(二進(jìn)制文件)組成的,并不區(qū)分類型,都看成是字符流,按字節(jié)進(jìn)行處理。輸入輸出字符流的開始和結(jié)束只由程序控制而不受物理符號(如回車符)的控制,把這種文件稱作“流式文件”。 C系統(tǒng)對文件的一般操作過程如下:打開文件操作文件關(guān)閉文件。 10-29010.2 文件的打開與關(guān)閉文件的打開與關(guān)閉 10.2.1 10.2.1 文件類型指針文件類型指針
54、定義文件型指針變量的一般形式為: FILE *變量名; 10.2.2 10.2.2 文件的打開文件的打開fopenfopen函數(shù)函數(shù) C語言用fopen()函數(shù)打開一個文件,fopen函數(shù)的調(diào)用方式: FILE *fp; fp=fopen(文件名“,操作方式); 功能:返回一個指向指定文件的指針。 其中“文件名”是指要打開(或創(chuàng)建)的文件名,如果使用字符數(shù)組(或字符指針),則不使用雙引號; “操作方式”如下表所示。 10-391文件操作方式作用r只讀,為讀打開文本文件w只寫,為寫打開文本文件a追加,向文本文件尾增加數(shù)據(jù)rb只讀,為讀打開二進(jìn)制文件wb只寫,為寫打開二進(jìn)制文件ab追加,向二進(jìn)制文件尾增加數(shù)據(jù)r+讀寫,為讀/寫打開文本文件w+讀寫,為讀/寫建立并打開新的文本文件a+讀寫,為讀/寫打開文本文件rb+或r+b讀寫,為讀/寫打開二進(jìn)制文件wb+或w+b讀寫,為讀/寫建立并打開新的二進(jìn)制文件ab+或a+b讀寫,為讀/寫打開二進(jìn)制文件10-492 10.2.310.2.3 文件的關(guān)閉文件的關(guān)閉fclose()fclose()函數(shù)函數(shù) 在使用完一個文件后應(yīng)該關(guān)閉該文件,以防止文件被誤用。“關(guān)閉”就是通知C系統(tǒng),將此指針指向的文件關(guān)閉,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于尋找贊助的咨詢服務(wù)行業(yè)經(jīng)營分析報告
- 腳踏車踏板項目營銷計劃書
- 醫(yī)用恒溫箱產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 電話答錄機市場分析及投資價值研究報告
- 廢物氣化技術(shù)行業(yè)市場調(diào)研分析報告
- 外科醫(yī)生用鏡產(chǎn)品供應(yīng)鏈分析
- 蠟紙成品項目運營指導(dǎo)方案
- 卸妝用薄紙產(chǎn)品供應(yīng)鏈分析
- 商業(yè)戰(zhàn)略計劃服務(wù)行業(yè)經(jīng)營分析報告
- 個人私有云服務(wù)行業(yè)營銷策略方案
- 金融科技對商業(yè)銀行盈利能力影響的研究
- 小學(xué)生德育素質(zhì)教育評價表
- 電影類型之恐怖片
- 醫(yī)院培訓(xùn)課件:《面部年輕化》
- 環(huán)境溫度、相對濕度、露點對照表
- 2023版設(shè)備管理體系標(biāo)準(zhǔn)
- 第一講土木工程的歷史、現(xiàn)狀和未來課件
- 專業(yè)學(xué)位碩士研究生英語智慧樹知到課后章節(jié)答案2023年下黑龍江中醫(yī)藥大學(xué)
- “危急值”報告登記表
- 包頭市第二十九中學(xué)2023-2024學(xué)年八年級上學(xué)期期中數(shù)學(xué)試卷
- 冠心病血運重建后心臟猝死預(yù)防(EPCI)
評論
0/150
提交評論