省二級(C語言)考試真題重點題型分類總結(jié)!2_第1頁
省二級(C語言)考試真題重點題型分類總結(jié)!2_第2頁
省二級(C語言)考試真題重點題型分類總結(jié)!2_第3頁
省二級(C語言)考試真題重點題型分類總結(jié)!2_第4頁
省二級(C語言)考試真題重點題型分類總結(jié)!2_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言二級真題總結(jié)真題匯總小結(jié)省二級考試C語言真題重點題型分類 一、線性表建立、刪除、插入 二、文件操作文件翻開、讀、寫 三、遞歸問題 四、字符串操作問題 五、變量作用域與靜態(tài)變量問題 六、數(shù)列或數(shù)字處理問題 七、排序問題 八、上機試題 線性表是n 個數(shù)據(jù)元素的有限序列。通常記作a1, a2, a3, , an 。 姓名 電話號碼 蔡穎 63214444 陳紅 63217777 劉建平 63216666 王小林 63218888 張力 63215555 .一、線 性 表例1、數(shù)學(xué)中的數(shù)列11,13,15,17,19,21例2、英文字母表A, B, C, D, E Z 。例3、某單位的 號碼簿。

2、一 線性表的邏輯結(jié)構(gòu) 號碼簿是數(shù)據(jù)元素的有限序列,每一數(shù)據(jù)元素包括兩個數(shù)據(jù)項,一個是用戶姓名,一個是對應(yīng)的 號碼。說明:設(shè) A=a1, a2, . , ai -1, ai , ai+1, , an 是一線性表1 均勻性:線性表的數(shù)據(jù)元素可以是各種各樣的,但同一線性表中的元素必須是同一類型的;2 相鄰性:每個元素至少有一個元素與之相鄰。在表中 ai-1 領(lǐng)先于ai ,ai 領(lǐng)先于ai+1 ,稱ai-1 是ai 的直接前趨,ai+1 是ai 的直接后繼; a1,無前驅(qū),an無后繼。3 有限性:線性表中元素的個數(shù)n稱為線性表的長度,n=0時稱為空表4 有序性:ai是線性表的第i 個元素,稱i 為數(shù)據(jù)

3、元素ai 的序號,每一個元素在線性表中的位置,僅取決于它的序號;二 線性表根據(jù)其存儲結(jié)構(gòu)不同可分為: 鏈式存儲結(jié)構(gòu)的鏈表 順序存儲結(jié)構(gòu)的順序表一 線性鏈表的概念1 線性鏈表1、 線性鏈表a4a3a1a2 0101010241014101010121014101610181020102210241026 用一組任意的存儲單元存儲線性表中的數(shù)據(jù)元素,對每個數(shù)據(jù)元素除了保存自身信息外,還保存了直接后繼元素的存儲位置。 用線性鏈表存儲線性表時,數(shù)據(jù)元素之間的關(guān)系 是通過保存直接后繼元素的存儲位置來表示的線性鏈表圖示ai-1aia2a1ai+1nan 用線性鏈表存儲線性表時,數(shù)據(jù)元素之間的關(guān)系 是通過保

4、存直接后繼元素的存儲位置來表示的2 線性鏈表圖示 一般來說,我們并不需要寫出直接后繼的實際地址,為直觀起見,通常用如下所示的圖表示鏈表,其中,箭頭表示相應(yīng)單元中保存的是它所指向結(jié)點的存儲地址。head是頭指針head結(jié)點:數(shù)據(jù)元素及直接后繼的存儲位置地址組成一個數(shù)據(jù)元素的存儲結(jié)構(gòu),稱為一個結(jié)點;結(jié)點的數(shù)據(jù)域 :結(jié)點中用于保存數(shù)據(jù)元素的局部;結(jié)點的指針域 :結(jié)點中用于保存數(shù)據(jù)元素直接后繼存儲地址的局部;3 線性鏈表有關(guān)術(shù)語存儲數(shù)據(jù)元素存儲后繼結(jié)點 存儲地址結(jié)點數(shù)據(jù)域指針域頭指針:用于存放線性鏈表中第一個結(jié)點的存儲地址;空指針:不指向任何結(jié)點,線性鏈表最后一個結(jié)點的指針通常是空指針,空指針一般用N

5、ULL表示;頭結(jié)點:線性鏈表的第一元素結(jié)點前面的一個附加結(jié)點,稱為頭結(jié)點;帶頭結(jié)點的線性鏈表:第一元素結(jié)點前面增加一個附加結(jié)點的線性鏈表稱為 帶頭結(jié)點的線性鏈表;帶頭結(jié)點的線性鏈表圖示head是頭指針ai-1aia2a1ai+1nan 頭結(jié)點 空指針head線性鏈表的每個結(jié)點中只有一個指針域故也稱為單鏈表ai-1aia2a1ai+1nanhead是頭指針head注:從以往二級考試來看都是用沒有附加頭結(jié)點的鏈表,如下圖結(jié)點變量圖示struct node int x; struct node *next; ; node:結(jié)構(gòu)體類型名; node類型結(jié)構(gòu)變量有兩個域: x:用于存放線性表的數(shù)據(jù)元素,

6、 next:用于存放元素直接后繼結(jié)點的地址; 該類型結(jié)構(gòu)變量用于表示線性鏈表中的一個結(jié)點; h和head:指向結(jié)構(gòu)體結(jié)點的指針變量,用于存放node類型結(jié)構(gòu)變量的地址; 數(shù)據(jù)域指針域 x next node類型 結(jié)構(gòu)變量h結(jié)構(gòu)體結(jié)點 指針變量h4 線性鏈表的結(jié)點類型定義及指向結(jié)點的指針類型定義struct node *h;或struct node *head;結(jié)構(gòu)體指針變量定義結(jié)構(gòu)體類型定義常用的引用格式(一般格式): 指針變量名-結(jié)構(gòu)體成員名如: h-x=10; h=h-next;注意:在引用過程中,數(shù)據(jù)類型還是成員的數(shù)據(jù)類型。 如:h-x為成員x的數(shù)據(jù)類型即整形5 怎樣利用結(jié)構(gòu)體指針變量來

7、引用結(jié)構(gòu)體成員struct node *h;或struct node *head;不常用引用格式: *指針變量名. 結(jié)構(gòu)體成員名如: (*h). x=10; *h=(*h).next; 設(shè)head是指向鏈表第一個結(jié)點的指針變量,head用來保存線性鏈表中第一個結(jié)點的地址。ai-1aia2a1ai+1nanheadHead指向的鏈表二 線性鏈表根本操作的算法 假設(shè)線性表用不帶頭結(jié)點的線性鏈表head的存儲。下面討論在這種存儲方式下,線性表各種根本操作的算法。當線性表用線性鏈表存儲時,對線性表各種根本操作實際上就是對存儲在內(nèi)存中的線性鏈表進行操作。如何在線性鏈表head上實現(xiàn)線性表的根本操作?如何

8、建空表?如何插入?刪除?1 取元素操作 從鏈表中找到與輸入的值m相等的元素功能:1、將線性鏈表中第i 個元素賦值給 e 2、從鏈表中找到與輸入的值m相等的元素,并將其指針返回取元素操作主要步驟:1查找鏈表的第 i個元素結(jié)點;2) 將第i個元素結(jié)點中的數(shù)據(jù)元素賦值給e;或?qū)⑵渲羔樂祷? 取元素操作圖示ai-1aia2a1ai+1nanheadp1p注:p、p1為工作指針2 插入操作 功能:在線性鏈表head的第i個元素結(jié)點之前插入一個新元素結(jié)點; 插入操作圖示:插入前插入后 ai-1aia2a1ai+1nanheadai-1aia2a1ai+1nanehead插入操作主要步驟:1查找鏈表L的第

9、i-1個元素結(jié)點;2為新元素建立結(jié)點;3修改第 i-1個元素結(jié)點的指針域和新元素結(jié)點指針域,從而完成插入;3 刪除操作 功能:在線性鏈表L中刪除第i個元素,并且用e 返回其值 刪除操作圖示: 刪除前刪除后ai-1aia2a1ai+1nanheadai-1aia2a1ai+1nanhead刪除操作主要步驟:1查找鏈表的第 i-1個元素結(jié)點;2修改第 i-1個元素結(jié)點指針域,使其指向第i+1個結(jié)點,從而刪除第i個元素結(jié)點;3) 將第i個元素結(jié)點中的數(shù)據(jù)元素賦值給e;4回收被刪除結(jié)點空間;用free(指針變量)函數(shù)釋放刪除結(jié)點的空間4 線性鏈表歸并操作圖示131n542n6papb歸并31n6pap

10、cpb524以前考過的線性鏈表的題目P10 13題即2000年秋的填空題中的13題此題是鏈表歸并問題: 首先要搞清楚每個指針的用途。 如pt指針變量就是用來指向建立的新結(jié)點; pc為新鏈表的頭結(jié)點; pcr為工作結(jié)點,也是新鏈表的尾結(jié)點指針,即它始終指針新鏈表的最后一個結(jié)點。P60 13題即2000年秋的填空題中的13題PNODE *paddPNODE *pa, PNODE *pb)PNODE *pcr , *pt , *pc; pc=NULL; while( (23) ) if(pa-y=pb-y) pt=( (24) )malloc(sizeof(PNODE); pt-x=pa-x+pb-

11、x; pt-y=pa-y; pt-next=NULL; if (pc=NULL) pc=pcr=pt; else pcr-next=pt; (25) ; pa=pa-next; pb=pb-next; else if( (26) ) pb=pb-next; else pa=pa-next; Return pc;本空顯然是控制結(jié)束的,只有當pa、pb兩個鏈表中都沒有元素時才會結(jié)束分配的空間類型判斷papb中當前元素y成員的值誰大將新增的結(jié)點連到工作指針pcr上P10 13題答案PNODE *paddPNODE *pa, PNODE *pb)PNODE *pcr , *pt , *pc; pc=N

12、ULL; while( (23) ) if(pa-y=pb-y) pt=( (24) )malloc(sizeof(PNODE); pt-x=pa-x+pb-x; pt-y=pa-y; pt-next=NULL; if (pc=NULL) pc=pcr=pt; else pcr-next=pt; (25) ; pa=pa-next; pb=pb-next; else if( (26) ) pb=pb-next; else pa=pa-next; Return pc;pa&pbPNODE *pa-ypb-ypcr=ptP21 14題即2001年春的填空題中的14題PNODE *paddPNODE

13、 *pa)PNODE *p1 , *p2, *p; p1=p2=pa; while(p1) if(p1-x%2=0& (27) ) p=p1; p1=p1-next; (28) =p1; P-next=pa; (29) else p2=p1; p1=p1-next; Main() PNODE a10=1,2,3,4,5,6,7,8,9,10, *ha=a, *p; int i; for(i=0; i, p-x); p=p-next; 鏈表結(jié)尾的指針NULL如果p1指向的結(jié)點就是第一個結(jié)點,那么不用移本行是從鏈表中刪除結(jié)點將p指向的結(jié)點插到鏈表的頭部沒找著偶數(shù)值結(jié)點時,指針向后移,P2一直在P1

14、的前一個結(jié)點P21 14題答案PNODE *paddPNODE *pa)PNODE *p1 , *p2, *p; p1=p2=pa; while(p1) if(p1-x%2=0& (27) ) p=p1; p1=p1-next; (28) =p1; P-next=pa; (29) else p2=p1; p1=p1-next; Main() PNODE a10=1,2,3,4,5,6,7,8,9,10, *ha=a, *p; int i; for(i=0; i, p-x); p=p-next; NULLp1!=pap2-next=p1pa=pP31 14題即2001年秋的填空題中的14題Str

15、uct node *deladdstruct node *h, int value)struct node *p1 , *p2; int flage=0; p1=p2=h; while(p1&flage=0) if(p1-x=value) flage=1; if(p1=h) h= (27) ; free(p1); else p2-next= (28) ; free(p1); else p2=p1; p1= (29) ; If(flage=0) p1=(struct node *)malloc(sizeof(struct node); p1-x=value; p1-next=0; if(h=0)

16、 h=p1; else (30) ; 鏈表結(jié)束或找到結(jié)點不執(zhí)行循環(huán)Flage是一個標志變量用來標志是否找到結(jié)點如果找到符合每件的結(jié)點,就刪除結(jié)點如果沒找到適合每件的結(jié)點,那么指針后移如果沒找到結(jié)點構(gòu)造一個新結(jié)點如果鏈表為空就直接將構(gòu)造的結(jié)點作為鏈表的第一個結(jié)點,否那么將其插入到鏈表最后P31 14題答案Struct node *deladdstruct node *h, int value)struct node *p1 , *p2; int flage=0; p1=p2=h; while(p1&flage=0) if(p1-x=value) flage=1; if(p1=h) h= (27)

17、 ; free(p1); else p2-next= (28) ; free(p1); else p2=p1; p1= (29) ; If(flage=0) p1=(struct node *)malloc(sizeof(struct node); p1-x=value; p1-next=0; if(h=0) h=p1; else (30) ; p1-nextp1-nextp1-nextp2-next=p1P42 14題即2002年春的填空題中的14題 (27) createint n)struct node *p, *p1 , *p2, *h=NULL; int i=0; if(nx); p

18、-next=NULL; if(h=NULL) (29) ; else p1=p2=h; while(p2&p-x=p2-x) p1=p2; p2=p2-next; if(p2=h) (30) ; h=p; else p-next=p2; p1-next=p; i+; Return h;函數(shù)返回值類型如果找到的插入位置是第一個結(jié)點創(chuàng)立結(jié)點個數(shù)的控制如果鏈表為空,直接插入結(jié)點作為首結(jié)點如果找到的插入位置不是第一個結(jié)點就在找到的位置插入P42 14題答案 (27) createint n)struct node *p, *p1 , *p2, *h=NULL; int i=0; if(nx); p-n

19、ext=NULL; if(h=NULL) (29) ; else p1=p2=h; while(p2&p-x=p2-x) p1=p2; p2=p2-next; if(p2=h) (30) ; h=p; else p-next=p2; p1-next=p; i+; Return h;struct node *p-next=p2inext=NULL) return head; if(dir=0) while(p1-next) p2=p1; p1= p1-next ; (23) =NULL; p1-next= (24) ; head=p1; else head= (25) ; p2=head; wh

20、ile(p2-next) p2=p2-next; (26) ; p1-next=NULL; return head;右移一次如果是空鏈表或只有一個結(jié)點的鏈表左移一次找到最后一個結(jié)點使得p1指向最后一個結(jié)點P2指向倒數(shù)第二個結(jié)點將最后一個結(jié)點p1指向的移到鏈表頭找到最后一個結(jié)點P2指向最后一個結(jié)點P51 14題答案Struct node *loopstruct node *head, int dir)struct node *p1 , *p2; p1=head; if(p1=NULL|p1-next=NULL) return head; if(dir=0) while(p1-next) p2=p

21、1; p1= p1-next ; (23) =NULL; p1-next= (24) ; head=p1; else head= (25) ; p2=head; while(p2-next) p2=p2-next; (26) ; p1-next=NULL; return head;p1-nextp2-nextheadp2-next=p1P60 14題即2003年春的填空題中的14題Struct node *find_delstruct node *head, int *pm)struct node *p1 , *p2 , *pmax , *pre; if(head=NULL) return N

22、ULL; pmax= (23) ; p2=p1=pmax; while(p1) if(p1-x (24) ) pre=p2; pmax=p1; p2=p1; p1=p1-next; if(pmax=head ) head =pmax-next; else (25) =pmax-next; (26) =pmax;Return head; 如果是空鏈表就結(jié)束函數(shù),并返回空指針首先認為第一個結(jié)點是x值最大的結(jié)點Pmax始終指向當前x值最大的結(jié)點P1為工作指針活動指針如果首結(jié)點的x值最大就刪除首結(jié)點刪除pmax指向的結(jié)點將x值最大的結(jié)點地址保存到pm指向的指針變量中P60 14題即2003年春的填空題

23、中的14題Struct node *find_delstruct node *head, int *pm)struct node *p1 , *p2 , *pmax , *pre; if(head=NULL) return NULL; pmax= (23) ; p2=p1=pmax; while(p1) if(p1-x (24) ) pre=p2; pmax=p1; p2=p1; p1=p1-next; if(pmax=head ) head =pmax-next; else (25) =pmax-next; (26) =pmax;Return head; headpmax-xpre-next

24、*pmc 2.2 線性表的順序表示和實現(xiàn) 一 線性表的順序存儲結(jié)構(gòu)順序表 1 線性表的順序存儲結(jié)構(gòu) 2 順序表的類型定義 二 順序表的根本操作算法 三 利用根本操作實現(xiàn)線性表的其他操作2、順序鏈表2、順序鏈表為了存儲線性表,至少要保存兩類信息:1線性表中的數(shù)據(jù)元素;2線性表中數(shù)據(jù)元素的順序關(guān)系; 在計算機內(nèi)部可以采用不同的方式來存儲一個線性表,其中最簡單的方式就是本節(jié)要講的線性表的順序存儲結(jié)構(gòu)。 線性表的順序存儲結(jié)構(gòu),就是用一組連續(xù)的內(nèi)存單元依次存放線性表的數(shù)據(jù)元素。用順序表存儲線性表時,數(shù)據(jù)元素之間的邏輯關(guān)系, 是通過數(shù)據(jù)元素的存儲順序反映出來的a1a2ai-1aiai+1an 線性表a1,

25、a2, a3, . an 的順序存儲結(jié)構(gòu)用順序存儲結(jié)構(gòu)存儲的線性表稱為順序表一 線性表的順序存儲結(jié)構(gòu)順序表1 線性表的順序存儲結(jié)構(gòu)說明: 在順序存儲結(jié)構(gòu)下,線性表元素之間的邏輯關(guān)系,可通過元素的存儲順序反映表示出來,所以只需存儲數(shù)據(jù)元素的信息; 假沒線性表中每個數(shù)據(jù)元素占用 k 個存儲單元,那么,在順序存儲結(jié)構(gòu)中,線性表的第i個元素的存儲位置與第1個元素的存儲位置的關(guān)系是: Loc(ai ) = Loc( a1 )+ ( i 1) k 這里 Loc(ai)是第 i 個元素的存儲位置, Loc( a1 ) 是第1個元素的存儲位置,也稱為線性表的基址;怎樣在計算機上實現(xiàn)線性表的順序存儲結(jié)構(gòu)?2、順

26、序表的類型定義 以上用自然語言描述了線性表的順序存儲結(jié)構(gòu),怎樣將這種存儲方式在計算機上實現(xiàn)?為此,我們用C語言對這種存儲方式進行描述,我們知道C語言一維數(shù)組的機內(nèi)表示也是順序結(jié)構(gòu),因此,可借用C語言的一維數(shù)組實現(xiàn)線性表的順序存儲。順序表的類型定義#define LIST_INIT_SIZE 100 / 線性表存儲空間的初始分配量#define LISTINCREMENT 10 / 線性表存儲空間的分配增量typedef structElemType * elem; /線性表存儲空間基址int length; /當前線性表長度int listsize; /當前分配的線性表存儲空間大小 /以siz

27、eof(ElemType)為單位SqList;SqList :類型名,SqList類型的變量是結(jié)構(gòu)變量,它的三個域分別是: *elem:存放線性表元素的一維數(shù)組基址;其存儲空間在初始化操作建空表時動態(tài)分配; length:存放線性表的表長; listsize:用于存放當前分配存放線性表元素的存儲空間的大小。順序表圖示a1a2ai-1aiai+1anL.lengthL.listsizeL.elemnLIST_INIT_SIZE存放線性表元素 的一維數(shù)組設(shè) A = a1,a2 , a3 , . an 是一線性表,L是SqList 類型的結(jié)構(gòu)變量,用于存放線性表A,那么L在內(nèi)存中的狀態(tài)如下圖:如何在

28、順序表上實現(xiàn)線性表的根本操作?如何建空表?如何求表長?如何插入?刪除? 設(shè)線性表用順序表L存儲,下面我們介紹用順序表存儲線性表時,各種根本操作的算法。當線性表用順序表存儲時,對線性表各種根本操作實際上就是對存儲在內(nèi)存中的順序表進行操作。二、順序表的根本操作算法取元素操作圖示 1 取元素操作 GetElem_Sq ( SqList L, int i, ElemType &e )功能:將順序表中第i 個元素賦值給 e算法:Status GetElem_Sq ( SqList &L, int i, ElemType &e ) If (i L.length -1) return ERROR; / i

29、非法 e = L.elem i-1 ; /將順序表中第i 個元素賦值給 e return OK;/ GetElem_Sq 算法2.4 由于C語言的一維數(shù)組下標從0開始, 故線性表的第一個元素放在L.elem0,第i個素放L.elemi-1中,最后一個元素放在 L.elemL.length-1中。 取元素操作 nLIST_INIT_SIZEL.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1aiai+1ann LIST_INIT_SIZE-1eai 再演示一次2 插入操作 ListInsert_Sq ( &L, i, e ) 參數(shù):L :順序表 ,

30、 i 插入位置, e 被插入元素; 因為插入操作對順序表進行修改,所以用了引用參數(shù)&L; 功能:在順序表L的第i個元素之前插入一個新元素e; 插入操作示意圖: 插入操作圖示插入操作主要步驟:1i 是否合法,假設(shè)合法轉(zhuǎn)2,否那么算法結(jié)束,并返回ERROR;2L是否已滿, 假設(shè)未滿轉(zhuǎn)3,否那么算法結(jié)束,并返回ERROR;3將順序表ai 及之后的所有元素后移一個位置;4) 將新元素寫入空出的位置;5表長+1 ; 用鼠標單擊圖中的綠字 插入元素操作eL.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1aiai+1ann LIST_INIT_SIZE-1

31、插入元素操作L.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1eaiann+1 LIST_INIT_SIZE-1Status ListInsert_Sq(SqList &L, int i , ElemType e) /在順序表L中第i個位置之前插入新的元素e,/ i的合法值為1iL.length+1,當i =L.length+1時/ e插在表尾if (iL.length+1) return ERROR; / i值不合法if (L.length=L.listsize) return ERROR; /順序表已滿for ( j=L.length-1

32、; j= i-1; -j) L.elemj+1= L.elem j; /插入位置及之后的元素后移一個位置 L.elemi-1 =e; /插入e+L.length; /表長增1return OK;/ListInsert_Sq 算法2.5a 插入操作算法為初學(xué)者易于理解插入算法,這里通過下標引用L.elem中的元素。3 刪除操作 ListDelete_sq ( SqList &L, int i, ElemType &e ) 功能:刪除順序表L的第i個元素,并用e返回刪除操作圖示 刪除操作主要步驟 :1i 不合法或表空,算法結(jié)束,并返回ERROR;否那么轉(zhuǎn)22將ai賦值給e; 3將順序表中ai后面的

33、元素依次向前移動一個位置;4表長-1 刪除操作圖示用鼠標單擊圖中的綠字 刪除元素操作L.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1aiai+1ann LIST_INIT_SIZE-1 刪除元素操作L.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1ai+1ann-1 LIST_INIT_SIZE-1刪除操作算法Status ListDelete_Sq(SqList &L, int i, ElemType &e) /在順序表L中刪除第 i個元素,并用e返回其值 / i的合法值為 1iL.leng

34、th, / 表空L.length=0 那么i L.length if (iL.length) return ERROR; / i值不合法或表空 e = L.elemi-1; / 被刪除元素的值賦給e for ( j= i; j= L.length-1; +j) L.elemj-1 = L.elem j /被刪除元素之后的元素前移 -L.length; /表長減1 return OK;/ListDelete_Sq 算法2.56a為初學(xué)者易于理解插入算法,這里通過下標引用L.elem中的元素。二級考試以往出現(xiàn)的順序表試題P61 2003春15題 順序表排序P49 2002秋12題 順序表插入元素P

35、40 2002春11題 順序表處理P29 2001秋12題 順序表處理P20 2001春12題 順序表排序二、文件操作 1、文件類型指針變量的定義格式: FILE 如:FILE *fp;、文件翻開與關(guān)閉翻開文件-fopen()函數(shù)如:FILE *fp; if(fp=fopen(“c:tc2example1.txt,w)= =NULL) printf(“File can noet be opened!n); exit(0); 文件翻開方式:MODE文件類型處理方式指定文件不存在時指定文件存在時“r”文本文件讀取出錯正常打開“r+”文本文件讀取/寫入出錯正常打開“rb”二進制文件讀取出錯正常打開“

36、rb+”二進制文件讀取/寫入出錯正常打開“w”文本文件寫入建立新文件文件原有內(nèi)容丟失“w+”文本文件寫入/讀取建立新文件文件原有內(nèi)容丟失“wb”二進制文件寫入建立新文件文件原有內(nèi)容丟失“wb+”二進制文件寫入/讀取建立新文件文件原有內(nèi)容丟失“a”文本文件追加建立新文件在文件原有內(nèi)容后追加“a+”文本文件讀取/追加建立新文件在文件原有內(nèi)容后追加“ab”二進制文件追加建立新文件在文件原有內(nèi)容后追加“ab+”二進制文件讀取/追加建立新文件在文件原有內(nèi)容后追加關(guān)閉文件-fclose()函數(shù)關(guān)閉文件的功能:是將寫入到內(nèi)容文件指針位置的內(nèi)容存儲到硬盤上的文件中,并關(guān)閉文件,釋放文件指針。在程序終止前必須關(guān)

37、閉文件。否那么,向文件中存入的內(nèi)容全部沒有存入。使用格式:fclose(文件指針);文件的相關(guān)函數(shù)文件所有的讀寫,輸入輸出函數(shù)在使用時,必須包含頭文件:stdio.h 即:#include 1、feof文件指針變量本函數(shù)是判斷文件是否結(jié)束。如果返回值為:真,那么表示已到文件尾;如果返回值為:假,那么表示未到文件尾。、fgetc(文件指針變量從文件中讀出一個字符,并將文件當前位置移到下一位置。返回值:讀出的值;EOF讀出出錯、fputc(字符,文件指針變量將字符常量或變量寫入文件指針指向的文件當前位置。返回值:寫入的值;EOF寫入出錯字符串輸入輸出函數(shù)、fgets(字符串變量名,n,文件指針變量

38、從文件中讀出一個長度為n-1的字符串,放到字符串變量。返回值:讀出字符串的長度;EOF讀出出錯、fputs(字符串,文件指針變量將字符串常量或變量寫入文件指針指向的文件當前位置。返回值:寫入的字符數(shù);EOF寫入出錯格式化輸入輸出函數(shù)6、fscanf(fp,“輸入格式串,輸入項完成從文件中讀入操作的函數(shù)。7、fprintf(fp,“輸出格式串,輸出項 向文件輸出數(shù)據(jù)的函數(shù)。向fp指向的文件按“輸出格式串中規(guī)定,輸出到文件中。塊輸入輸出函數(shù)8、fread(buffer,size,count,fp9、fwrite(buffer,size,count ,fp 參數(shù)說明: buffer是一個指針,對于f

39、read來說是讀入數(shù)據(jù)塊的存放地址;對fwrite來說,它是輸出數(shù)據(jù)塊的地址。這里的地址是指數(shù)據(jù)塊的首地址,通常用數(shù)據(jù)名或數(shù)組指針或結(jié)構(gòu)體數(shù)組來代表。 size 是要讀/寫數(shù)據(jù)塊的字節(jié)數(shù) count 的值是要讀/寫多少個 size 字節(jié)的數(shù)據(jù)塊 fp 是一個文件指針,指示已經(jīng)翻開的文件由fopen()函數(shù)翻開的文件定位函數(shù)8、rewind(fp)將文件讀寫位置重新設(shè)置在文件頭部。9、fseek(fp,long offset ,int origin) 參數(shù)說明: 1fp 是指向要進行讀寫操作的文件結(jié)構(gòu)指針,該文件已由fopen()函數(shù)翻開; 2origin是計算文件指針位置的起始點; 文件指針的

40、起始點可以設(shè)置在三個不同的位置上,用三個符號常量或數(shù)字代表: SEEK_SET 或 0 代表文件頭 SEEK_CUR 或 1 代表文件當前位置 SEEK_END 或 2 代表文件尾 3offset是距起始點的偏移位置,以字節(jié)為單位。二級考試以往出現(xiàn)的文件操作試題P10 2000秋14題 在文件中查找并替換P19 2001春10題 從文件讀入/向文件輸出P29、30 2001秋11、13題 從文件讀入P40 2002春11題 從文件讀入在每次的上機題中,編寫的程序輸出內(nèi)容必須輸出到文件中三、遞歸問題P7、 P8 2000秋5題、8題 P20 2001春12題 用遞歸實現(xiàn)排序冒泡排序P28 2001秋8題P49 2002秋11題P59 2003 春11題四、字符串操作問題P9 2000秋12題 從字符串中刪除子串P20 2001春13題 插入子串P30 2001秋13題 讀子串P39 2002春10題 字符串加密P51 2002秋15題 在

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論