c語言程序設計等級考試_第1頁
c語言程序設計等級考試_第2頁
c語言程序設計等級考試_第3頁
c語言程序設計等級考試_第4頁
c語言程序設計等級考試_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第13章 編譯預處理和動態(tài)存儲分配 13.1 宏定義(不帶參數(shù)的宏定義,帶參數(shù)的宏定義) n 1.編譯預處理就是對C源程序進行編譯前,由編譯預處理程序?qū)︻A處理命令行進行處理的過程。n 2.C語言中,凡是以#開頭的行,都稱為編譯預處理命令行。C語言中的編譯預處命令有:#define,#undef,#include,#if,#else,#elif,#endif,#ifdef,#ifndef,#line,#pragma,#error。這些預處理命令組成的預處理命令行必須在一行的開頭以#號開始,每行的未尾不得加;號,以區(qū)別于C語句、定義和說明語句。n3.不帶參數(shù)的宏定義:命令的一般形式為: #defi

2、ne 標識符 字符串 定義中的標識符為用戶定義的標識符,稱為宏名。在預編譯時,C預編譯程序?qū)⒊霈F(xiàn)的宏名替換成字符串的內(nèi)容,這一過程也稱為宏展開。n4.帶參數(shù)的宏定義:命令的一般形式為 #define宏名(形式參數(shù)) 字符串 定義中的字符串應包含括號中所指定的形式參數(shù)。注意宏名與括號之間不要加空格,否則就成為不帶參數(shù)的宏定義了。 n5.預編譯時,遇到帶實參的宏名,則按命令行中指定的字符串從左到右進行置換,原則是:遇到實參則以實參代替,非形參字符原樣保留,從而成展開后的內(nèi)容。 13.2 “文件包含”處理 n1.文件包含的一般形式為: #include頭文件名 #include 頭文件名一般由C語言

3、提供,也可以是用戶自己編寫的,頭文件通常用.h作為后綴。n 2.當頭文件名用雙引號括起來時,系統(tǒng)首先在使用此命令的文件所在的目錄中查找被包含的文件,找不到時,再按系統(tǒng)指定的標準方式檢索其它目錄;當頭文件名用尖括號括起來時,則直接按系統(tǒng)指定的標準檢索方式查找被包含的文件。n 3.預編譯時,將被包含文件的內(nèi)容全部復制到包含文件中,這就是文件包含處理。13.3 條件編譯 C語言中的條件編譯命令可對源程序代碼的各部分有選擇地進行編譯。條件編譯主要有如下3種使用格式: 使用格式使用格式1: #ifdef標識符 程序段1 #else 程序段2 #endif 使用格式使用格式2: #ifndef標識符 程序

4、段1 #else 程序段2 #endif 使用格式使用格式3: #if表達式 程序段1 #else 程序段2 #endif 使用格式1表示如果已定義了“標識符”,則編譯“程序段1”,否則編譯“程序段2”;使用格式2表示如沒有定義了“標識符”,則編譯“程序段1”,否則編譯“程序段2”;使用格式3表示如“表達式”的值為“真”時,則編譯“程序段1”,否則編譯“程序段2”。第14章 結(jié)構(gòu)體、共同體和用戶定義類型 14.1 結(jié)構(gòu)體與共用體類型數(shù)據(jù)的定義方法和引用方法 u 1.結(jié)構(gòu)體類型數(shù)據(jù)的定義方法:可以采用下面三種方法來定義: (1)先定義結(jié)構(gòu)體類型再定義變量名 先定義一個結(jié)構(gòu)體類型,一般形式為: s

5、truct 結(jié)構(gòu)體名 成員列表; (2)在定義類型的同時定義變量:一般形式為: struct 結(jié)構(gòu)體名 成員列表 變量名列表; (3)直接定義結(jié)構(gòu)類型變量:一般形式: struct 成員列表 變量名列表; 即不出現(xiàn)結(jié)構(gòu)體名。u 2.結(jié)構(gòu)體類型變量的引用:在定義了結(jié)構(gòu)體變量后,可以采用下列方法引用結(jié)構(gòu)體類型的變量: 結(jié)構(gòu)體變量名.成員名 這里.是成員(分量)運算符,它在所有的運算符中優(yōu)先級最高。u3.共用體類型變量的定義形式為: union共用體名 成員列表 變量列表;u4.共用體變量的引用:可以用下面的形式引用共用體變量: 共用體變量名.成員名14.2 用指針和結(jié)構(gòu)體構(gòu)成鏈表,單向鏈表的建立、

6、輸出、刪除與插入 n 1.鏈表是一種常用的重要的數(shù)據(jù)結(jié)構(gòu),它是動態(tài)地進行存儲分配的一種結(jié)構(gòu)。n 2.所謂建立鏈表是指從無到有地建立起一個鏈表,即一個一個地輸入各結(jié)點數(shù)據(jù),并建立起前后相鏈的關系。n 3.所謂輸出鏈表就是將鏈表各結(jié)點的數(shù)據(jù)依次輸出。n 4.所謂刪除鏈表事實上就是刪除鏈表中的某個結(jié)點。n 5.所謂插入鏈表就是在鏈表中某個位置插入一個或幾個結(jié)點。第15章 位 運 算 15.1 位運算的含義及應用 n 1.位的概念 大多數(shù)計算機系統(tǒng)的內(nèi)存儲器是由眾多的存儲單元構(gòu)成的。在微機中,每個存儲單元是1個字節(jié),它由8位二進制數(shù)構(gòu)成,可以表示28=256種信息,各位的編號從07,最左邊的位(第7位

7、)是最高位,最右邊的位(第0位)是最低位。由于二進制本身的特點,各位上的數(shù)字不是1,就是0。 本章中的位就是指上述提到的二進制位,本章中的位運算就是指對這些二進制的位進行邏輯運算、移位運算等操作。2.數(shù)的編碼 數(shù)在計算機中是以二進制表示的,但是它并不是簡單地以它本身的數(shù)值的二進制形式來直接表示,而要進行一定的編碼,以方便計算機進行處理。常用的編碼有原碼、反碼、補碼三種。3.真值與原碼 我們將一個十進制數(shù)的二進制表示稱為這個十進制數(shù)的真值,它代表了這個十進制數(shù)本身的數(shù)值。 用真值表示的數(shù)只能是正數(shù),對于負數(shù),要用“一”號標明,例如: -7的真值為-0000000000000111 這勢必造成用計

8、算機表示數(shù)時的不便,故引入了原碼表示法。 在原碼表示法中,最高位代表符號位,用“1”表示負數(shù),“0”表示正數(shù);余下的數(shù)位用來表示真值的絕對值。 數(shù)字零存在著兩種表示方法:+0與-0。 4.反碼 若采用反碼表示,則對應的原碼應按照以下方法進行轉(zhuǎn)換: (1)如果真值為正,則它的反碼與原碼相同; (2)如果真值為負,則反碼的符號位為1,其余各位就是對原碼取反(即原碼的1變?yōu)?,原碼的0變?yōu)?)。 5.補碼 (1)為什么要引入補碼 補碼具有許多獨特的優(yōu)點:首先它可以變減法運算為加法運算,使得計算時步驟統(tǒng)一,速度提高;其次,在這種系統(tǒng)下的“0”只有惟一的一種表示方法,這就是現(xiàn)代的計算機系統(tǒng)中大多采用補碼

9、的原因。 (2)補碼的規(guī)定 正數(shù)的原碼、補碼、反碼均相同; 計算負數(shù)的補碼時,先置符號位為1,再對剩余原碼的位數(shù)逐位取反,最后對整個數(shù)加1。 在微機上以8位二進制數(shù)為一字節(jié)的存儲單元中采用補碼系統(tǒng),它可以存放的最小整數(shù)為-128,最大整數(shù)為+127。若采用兩個字節(jié)來表示一個整數(shù),則可表示的最小整數(shù)為-32768,最大整數(shù)為+32767。15.2 簡單的位運算 C語言提供了位(bit)運算的功能,這使它像匯編語言一樣用來編寫系統(tǒng)程序。位運算符共有六種: 位運算符位運算符位運算符含義位運算符含義&位與位與位或位或位異或位異或位取反位取反位右移位右移 本節(jié)介紹前四種運算,即位的邏輯運算。 1

10、.按位與運算 概念 “按位與”運算符“&”是雙目運算符,其功能是將參與運算兩數(shù)的各對應二進位相與。只能對應的兩個二進位均為1時,結(jié)果位才為1,否則為0。 “按位與”與運算的特殊用途 .清零 如果想將一個存儲單元清零,即使其全部二進位為0,可按這樣的方法計算: 找一個數(shù),它的補碼形式中各位的值符合如下條件:原來的數(shù)中為1的位,新數(shù)中相應位為0(注意,并不要求原數(shù)為0的位上,新數(shù)相應位為1,新數(shù)相應位可以是0或1);對二者進行&運算。 .取一個數(shù)中某些字節(jié) 對于一個整數(shù)a(占2個字節(jié)),如要想得到其中的低字節(jié),只需將a與特定的一個數(shù)按位與即可。 要想將一個數(shù)的某一位保留下來,可將該

11、數(shù)與一個特定的數(shù)進行&處理。 2.按位或運算 “按位或”運算符“”是雙目運算符,其功能是將參與運算兩數(shù)的各對應的二進位相或。只要對應的兩個二進位有一個為1時,結(jié)果位就為1。參與運算的整數(shù)均以補碼出現(xiàn)。 3.按位異或運算 概念 “按位異或”運算符“”是雙目運算符,其功能是將參與運算兩數(shù)的各對應位相異或,當兩對應的二進位相異時,結(jié)果為1,否則為0。參與運算整數(shù)仍以補碼出現(xiàn)。 “異或”運算的特殊應用 .使特定位翻轉(zhuǎn) .與0相“異或”,保留原值。 .交換兩個值。 4.“取反”運算 “”是一個一元運算符,即它的運算量只有一個,用來對一個二進制數(shù)按位取反,即將0變1,1變0。比如說,025就是對八

12、進制數(shù)25(即二進制數(shù)000000000010101)按位求反。15.3 移位運算 n 1.移位運算符 移位運算是對操作數(shù)以二進制位為單位進行左移或右移。移位操作 運算符 名 稱 例 子 運算功能 右移位 b3 b右移3位 左移位 c2 c左移2位 n2.左移運算 左移運算符“”是雙目運算符,其功能把“”左邊的運算數(shù)的各二進位全部左移若干位,由“”右邊的數(shù)指定移動的位數(shù),高位丟棄,低位補0。例如; a”是雙目運算符,其功能是把“”左邊的運算數(shù)的各二進位全部右移若干位,“”右邊的數(shù)指定移動的位數(shù)。例如: a=15,a2 表示把000001111右移為00000011(十進制3)。應該說明的是,對

13、于有符號數(shù),在右移時,符號位將隨同移動。當為正數(shù)時,最高位補0;而為負數(shù)時,符號位為1,最高位是補0或1取決于編譯系統(tǒng)的規(guī)定。Turbo C 規(guī)定補1。 右移運算相當于將運算對象除2. 15.4 位賦值運算 運算符 名 稱 例 子 等價于 &= 位與賦值 a&=b a=2&b = 位或賦值 a=b a=ab = 位異或賦值 a=b a=ab = 右移賦值 ab a=ab = 左移賦值 a=b a=a 位賦值運算的過程為: (1)先對兩個操作數(shù)進行位操作; (2)然后把結(jié)果賦予第一個操作數(shù),因此第一個操作數(shù)必須是變量。 位賦值運算與算術賦值運算相似,它們都統(tǒng)稱復合賦值運算。第16章 文 件 16.1 文件類型指針(FILE類型指針) C語言中的文件分緩沖型文件和非緩沖型文件兩種,此處只討論緩沖型文件。對于緩沖型文件,每個被使用的文件都在內(nèi)存中開辟一個區(qū),用來存放文件的有關信息(如文件名字、文件狀態(tài)及文件當前位置等)。這些信息保存在有關結(jié)構(gòu)體類型的變量中。該結(jié)構(gòu)體類型由系統(tǒng)定義,取名為FI

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論