《C語(yǔ)言程序設(shè)計(jì)II》期末復(fù)習(xí)_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)II》期末復(fù)習(xí)_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)II》期末復(fù)習(xí)_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)II》期末復(fù)習(xí)_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)II》期末復(fù)習(xí)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言程序設(shè)計(jì)II期末復(fù)習(xí)一、 復(fù)習(xí)內(nèi)容:n 第14講 指針l 指針的概念:內(nèi)存單元的排列方式、地址的概念、不同數(shù)據(jù)類(lèi)型內(nèi)存單元的個(gè)數(shù)、存儲(chǔ)方式不同,兩種變量的存取方式,指針即是地址,NULL;l 指針變量:概念和定義方法(空懸指針、空類(lèi)型與空指針),指針的兩個(gè)特殊運(yùn)算符(*與&),指針變量作為函數(shù)參數(shù)(通過(guò)函數(shù)調(diào)用得到個(gè)要改變的值);l 指針運(yùn)算:指針與整數(shù)的運(yùn)算、+(-)、比較、相減;l 指針與一維數(shù)組:對(duì)數(shù)組名的理解,指針與一維數(shù)組(指向數(shù)組元素的指針、引用數(shù)組元素時(shí)的指針運(yùn)算、通過(guò)指針引用數(shù)組元素的幾種方法、用數(shù)組名作函數(shù)參數(shù));l 指針與二維數(shù)組:理解二維數(shù)組中行指針、列指針

2、的類(lèi)型,加減1所移動(dòng)的字節(jié)數(shù),如何利用它們?cè)L問(wèn)二維數(shù)組元素,用作函數(shù)參數(shù)參數(shù)時(shí)在主調(diào)函數(shù)中如何給出實(shí)參。l 通過(guò)指針引用字符串:字符串的引用方式,字符指針作函數(shù)參數(shù),使用字符指針變量和字符數(shù)組的比較;l 指向函數(shù)的指針:什么是函數(shù)指針,怎樣定義和使用指向函數(shù)的指針變量,用指向函數(shù)的指針作函數(shù)參數(shù);l 返回指針值的函數(shù):函數(shù)的返回值是一個(gè)地址,定義格式,使用;l 指針數(shù)組和多重指針:什么是指針數(shù)組,指向指針數(shù)組的指針,指針數(shù)組作main函數(shù)的形參;l 動(dòng)態(tài)內(nèi)存分配:動(dòng)態(tài)內(nèi)存分配的概念、必要性,與動(dòng)態(tài)內(nèi)存分配相關(guān)的4個(gè)函數(shù),動(dòng)態(tài)數(shù)組的建立;l 有關(guān)指針的小結(jié):指針、指向、指針變量,void *類(lèi)型

3、與NULL的比較,指針與數(shù)組的關(guān)系,各類(lèi)指針類(lèi)型的比較,指針的幾類(lèi)運(yùn)算;l 結(jié)構(gòu)體指針:什么是結(jié)構(gòu)體指針,用結(jié)構(gòu)體指針訪問(wèn)成員的簡(jiǎn)便寫(xiě)法,指向結(jié)構(gòu)體數(shù)組的指針,結(jié)構(gòu)體變量與結(jié)構(gòu)體指針作函數(shù)參數(shù);l 用指針處理鏈表:什么是鏈表,建立靜態(tài)鏈表,建立動(dòng)態(tài)鏈表,輸出鏈表。(理解鏈表的概念,本次考試不包含這一部分內(nèi)容)。n 第5講 位運(yùn)算和預(yù)處理指令l 位運(yùn)算與位運(yùn)算符:位運(yùn)算概念,6種基本的位運(yùn)算符(&、|、<<、>>),&和運(yùn)算符的一些用法,位運(yùn)算的復(fù)合賦值運(yùn)算符;l 位段:?jiǎn)栴}的提出,位段的概念與定義,位段的使用,注意事項(xiàng);(這一部分內(nèi)容不考)l 預(yù)處理:概

4、念,主要工作,功能類(lèi)型,書(shū)寫(xiě)要求;l 宏定義:不帶參數(shù)的宏定義,帶參數(shù)的宏定義;l “文件包含”處理:格式,作用,帶<>與”的差別;l 條件編譯:概念,好處,幾種基本格式。(理解條件編譯的概念,本次考試不包含這一部分內(nèi)容)。n 第68講 文件操作與綜合案例l C文件的有關(guān)基本知識(shí):文件的概念與組成,文件的分類(lèi),讀文件與寫(xiě)文件,緩沖文件系統(tǒng),文件類(lèi)型指針;l 文件的打開(kāi)與關(guān)閉:文件打開(kāi)與關(guān)閉的含義,文件打開(kāi)的多種方式,打開(kāi)文件出錯(cuò)時(shí)處理,fopen()、fclose()的使用;l 順序讀寫(xiě)數(shù)據(jù)文件:順序讀寫(xiě)的概念,文件操作的主要步驟,fputc()與fgetc()、 fputs()與

5、fgets()、 fprintf()與fscanf()、 fread()與fwrite()的使用,文件是否結(jié)束的判斷(EOF和feof();l 隨機(jī)讀寫(xiě)數(shù)據(jù)文件:文件讀寫(xiě)位置指針,文件定位函數(shù)(rewind()、fseek()和ftell()的用法;l 文件讀寫(xiě)出錯(cuò)檢測(cè)函數(shù) (ferror()和clearerr()的用法;(這一部分內(nèi)容不考)l 綜合案例:設(shè)計(jì)與實(shí)現(xiàn)的基本思路二、 考核的知識(shí)點(diǎn):l 考核的主要知識(shí)點(diǎn):指針、結(jié)構(gòu)體、位運(yùn)算、預(yù)處理、文件操作、綜合案例l 涉及的知識(shí)點(diǎn):程序結(jié)構(gòu)、表達(dá)式、程序控制結(jié)構(gòu)、數(shù)給、字符串、函數(shù)等三、 樣題單選題:1、變量的指針,其含義是該變量的【 】A)值

6、B)地址C)名D)一個(gè)標(biāo)志2、下面程序段的運(yùn)行結(jié)果是【 】 char *s=”abcde”; s+=2; printf(“%d”,s);A)cdeB)字符cC)字符c的地址D)無(wú)確定的輸出結(jié)果是3、現(xiàn)有定義:int (*p)4;下列關(guān)于標(biāo)識(shí)符中,正確的是【 】A) 定義不合法 B) 是一個(gè)指向整型變量的指針C) 是一個(gè)指針,它指向一個(gè)函數(shù),該函數(shù)的形參、返回值均為int類(lèi)型 D) 是一個(gè)指針變量,該變量指向由4個(gè)int型元素組成的一維數(shù)組4、數(shù)字9與14進(jìn)行“位異或”運(yùn)算(即914)的結(jié)果是【 】A) 9B) 15C) 7D) 8填空題1、設(shè)變量a的二進(jìn)制數(shù)是11010010,若想通過(guò)運(yùn)算ab

7、使結(jié)果中高四位是a對(duì)應(yīng)位取反、低四位不變,則b的二進(jìn)制數(shù)應(yīng)是_。2、能使用兩字節(jié)變量x的低8位全置1、高8位不變的表達(dá)式是_。3、一個(gè)函數(shù)的原型是 void func(int),現(xiàn)要求定義一個(gè)函數(shù)指針p指向該函數(shù),那么p的正確定義格式是_ _。寫(xiě)出下列程序的運(yùn)行結(jié)果#include <stdio.h>int main() int i, a10 ; int *p;p = a; for (i=0 ; i<10 ; i+ ) scanf ("%d" , p+ ); for (p=a; p<a+10; p+ )if(*p)%3=0) printf (&quo

8、t;%3d",*p); return 0;運(yùn)行時(shí)假定鍵盤(pán)輸入數(shù)據(jù)為:1 3 5 7 9 11 13 1517 21則程序運(yùn)行后的輸出結(jié)果是 程序填空以下程序的功能是:將一個(gè)已經(jīng)存在的文本文件內(nèi)容復(fù)制到一個(gè)目標(biāo)文件中,即進(jìn)行文本文件拷貝。 #include <stdio.h>#include <stdlib.h>int main()FILE *in, *out;char ch,infile80,outfile80;printf("請(qǐng)輸入源文件名:");gets(infile);printf("請(qǐng)輸入目標(biāo)文件名:");get

9、s(outfile);in = fopen(infile,"r");if (in=NULL)printf("不能打開(kāi)源文件!n");exit(0);out =fopen(outfile, (1) );if (out=NULL)printf("不能打開(kāi)目標(biāo)文件!n");exit(0);ch=fgetc(in);while ( (2) ) /判斷是否到源文件尾 (3) (ch, out);/將讀取的源文件內(nèi)容寫(xiě)入目標(biāo)文件中ch=fgetc(in);printf("n文件復(fù)制完畢!nn");fclose(in); fcl

10、ose(out);return 0;編程題:(說(shuō)明:加顏色的題目與考題相似度大一些)1、課件第1講 例3:對(duì)輸入的兩個(gè)整數(shù)按大小順序輸出。現(xiàn)用函數(shù)處理,而且用指針類(lèi)型的數(shù)據(jù)作函數(shù)參數(shù)。2、課件第1講 例4: 對(duì)輸入的兩個(gè)整數(shù)按大小順序輸出3、課件第1講 例5: 輸入3個(gè)整數(shù)a,b,c,要求按由大到小的順序?qū)⑺鼈冚敵觯煤瘮?shù)實(shí)現(xiàn)。4、實(shí)驗(yàn)_1 5、(基礎(chǔ)題)請(qǐng)參考教材P226-229圖示,請(qǐng)說(shuō)明下列函數(shù)中,哪些能實(shí)現(xiàn)主函數(shù)的實(shí)參數(shù)據(jù)交換功能,哪些不能實(shí)現(xiàn)或程序存在問(wèn)題,為什么?(最好上機(jī)驗(yàn)證)(1)void swap1(int *p1,int *p2)int temp;temp=*p1;*p1=

11、*p2;*p2=temp;(2)void swap2(int *p1,int *p2)int *temp;*temp=*p1;*p1=*p2;*p2=*temp;(3)void swap3(int x,int y) int temp; temp=x; x=y; y=temp;(4)void swap4(int *p1,int *p2)int *p;p=p1;p1=p2;p2=p;5、課件第2講 例1: 驗(yàn)證不同數(shù)據(jù)類(lèi)型,每一數(shù)據(jù)單元所占用的存儲(chǔ)空間不同6、課件第2講 例2: 用自增運(yùn)算改寫(xiě)前一程序(部分)7、課件第2講 例4: 將數(shù)組a中n個(gè)整數(shù)按相反順序存放。8、課件第2講 例5: 用指針?lè)?/p>

12、法對(duì)10個(gè)整數(shù)按由大到小順序排序。9、課件第2講 例6: 有一個(gè)3×4的二維數(shù)組,要求用指向元素的指針變量輸出二維數(shù)組各元素的值。10、課件第2講 例7: 有一個(gè)3×4的二維數(shù)組,要求用指向一維數(shù)組元素的指針變量輸出任一行任一列元素的值11、課件第2講 例8: 有一個(gè)班,3個(gè)學(xué)生,各學(xué)4門(mén)課,計(jì)算總平均分?jǐn)?shù)以及第n個(gè)學(xué)生的成績(jī)。 12、實(shí)驗(yàn)_2 、(基礎(chǔ)題)使用指針編程實(shí)現(xiàn):輸入3個(gè)正整數(shù),按由小到大順序輸出。程序運(yùn)行結(jié)果如下所示:13、實(shí)驗(yàn)_2 3、(基礎(chǔ)題)分析、運(yùn)行下列程序,理解二維數(shù)組“行指針”、“列指針”的類(lèi)型,加減1所移動(dòng)的字節(jié)數(shù),熟悉二維數(shù)組元素的間接訪問(wèn)方法

13、,并回答相關(guān)問(wèn)題14、課件第3講例1: 通過(guò)字符指針變量輸出一個(gè)字符串。 15、課件第3講例3: 用函數(shù)調(diào)用實(shí)現(xiàn)字符串的復(fù)制16、課件第3講例7:將若干字符串按字母順序(由小到大)輸出。17、課件第3講 例9: 有一個(gè)指針數(shù)組,其元素分別指向一個(gè)整型數(shù)組的元素,用指向指針數(shù)據(jù)的指針變量,輸出整型數(shù)組各元素的值。18、實(shí)驗(yàn)_3 1、(基礎(chǔ)題)以下程序的功能是:在主函數(shù)中定義一個(gè)int型4行5列的數(shù)組并初始化,然后調(diào)用print_array()、change_values()來(lái)輸出、修改數(shù)組元素的值,請(qǐng)根據(jù)題意填寫(xiě)所缺代碼,再運(yùn)行程序,體會(huì)數(shù)組元素的不同訪問(wèn)方法。程序運(yùn)行結(jié)果如下所示:#inclu

14、de <stdio.h>#include <stdlib.h>#include <time.h>int main()int a45=0;void change_values(int *p, int n);void print_array(int (*p)5,int m);printf("修改前,二維數(shù)組各行各列元素:n"); (1) (2) /調(diào)用change_values函數(shù)修改數(shù)組元素的值printf("修改后,二維數(shù)組各行各列元素:n"); (3) return 0;/函數(shù)change_values功能:生成1-

15、100之間的隨機(jī)整數(shù)修改數(shù)組各元素的值/形參:p是數(shù)組的首地址,n是數(shù)組元素個(gè)數(shù)void change_values(int *p, int n)srand(time(0);/代碼段1 /函數(shù)print_array功能:輸出二維數(shù)組各行各列元素的值/形參:p是數(shù)組的首行地址,m是數(shù)組的行數(shù)(列數(shù)為5,以下不再重復(fù))void print_array(int (*p)5,int m)int i,j;/代碼段2 printf("n");19、實(shí)驗(yàn)_3 4、(基礎(chǔ)題)指針數(shù)組的應(yīng)用:學(xué)院現(xiàn)有10系2部,建立一個(gè)char型指針數(shù)組指向這些單位名稱(chēng),之后用冒泡排序法排序,并輸出排序后的

16、單位名稱(chēng),如下圖所示:補(bǔ)充程序所缺代碼:#include <stdio.h>#include <string.h>int main()void bubble_sort(char *name ,int n);/函數(shù)聲明,下同void print(char *name ,int n);char *dept ="管理系","國(guó)際經(jīng)貿(mào)系","財(cái)會(huì)系","計(jì)算機(jī)系","電子系","數(shù)碼媒體系","外語(yǔ)系","軟件工程系",

17、"網(wǎng)絡(luò)技術(shù)系","游戲系","基礎(chǔ)部","思政部" (1) ;/調(diào)用冒泡排序函數(shù) (2) ;/調(diào)用輸出多個(gè)字符串函數(shù)printf("n");return 0;void bubble_sort(char *name ,int n)/冒泡排序函數(shù)/程序代碼段1void print(char *name ,int n)/輸出多個(gè)字符串函數(shù)/程序代碼段220、課件第4講 例1: 建立動(dòng)態(tài)數(shù)組,輸入5個(gè)學(xué)生的成績(jī),另外用一個(gè)函數(shù)檢查其中有無(wú)低于60分的,輸出不合格的成績(jī)。21、課件第4講 例2: 通過(guò)指向

18、結(jié)構(gòu)體變量的指針變量輸出結(jié)構(gòu)體變量中成員的信息。22、課件第4講 例4: 有n個(gè)結(jié)構(gòu)體變量,內(nèi)含學(xué)生學(xué)號(hào)、姓名和3門(mén)課程的成績(jī)。要求輸出平均成績(jī)最高的學(xué)生的信息(包括學(xué)號(hào)、姓名、3門(mén)課程成績(jī)和平均成績(jī))23、課件第5講 例2: 輸入一個(gè)整數(shù),使它擴(kuò)大16倍,不允許用乘法。24、課件第5講 例4: 取一個(gè)整數(shù)a從右端開(kāi)始的47位。25、課件第5講 例5: 循環(huán)移位。要求將a進(jìn)行右循環(huán)移n位26、課件第5講 例7: 輸入半徑,計(jì)算圓的周長(zhǎng)、面積和球體的體積。27、實(shí)驗(yàn)_5 1、(基礎(chǔ)題) 編寫(xiě)程序?qū)崿F(xiàn):先輸入兩個(gè)整數(shù)x、y,然后計(jì)算出x&y、x|y、xy、x、x<<3、x>

19、;>2 六種基本的位運(yùn)算的結(jié)果,并輸出。28、課件第6講 例1:從鍵盤(pán)輸入一些字符,逐個(gè)把它們送到磁盤(pán)上去,直到用戶輸入一個(gè)“”為止29、課件第6講 例2: 編寫(xiě)一個(gè)程序,實(shí)現(xiàn)文本文件的復(fù)制功能。30、課件第6講 例5: 編程序構(gòu)成一個(gè)九九表,寫(xiě)入文件file99.txt。再?gòu)脑撐募丫啪疟碇械臄?shù)據(jù)讀入二維數(shù)組a99,并顯示輸出。 31、課件第6講 例6: 從鍵盤(pán)輸入10個(gè)學(xué)生的有關(guān)數(shù)據(jù),然后把它們轉(zhuǎn)存到磁盤(pán)文件上去32、課件第6講 例7: 將上題生成的f:stu.dat文件內(nèi)容讀出,然后在屏幕上顯示33、實(shí)驗(yàn)_6 1、(基礎(chǔ)題)以下程序的功能是從鍵盤(pán)輸入一個(gè)文件名,然后再輸入一些字符,

20、依次存放到該文件中,用作為輸入結(jié)束標(biāo)志。請(qǐng)先填充程序所缺代碼,之后按要求操作,最后回答問(wèn)題:#include <stdio.h>#include <_(1)_>int main()FILE * fp;char ch,fname51;printf("請(qǐng)輸入文件名: ");_(2)_;if(fp=_(3)_)=NULL)printf("文件不能打開(kāi)!n");exit(0);while(_(4)_)fputc(_(5)_);printf("文件保存完畢!nn");_(6)_;/關(guān)閉文件return 0;操作要求:(1

21、)文件指定為F:盤(pán)根目錄下test.txt,請(qǐng)輸入以下內(nèi)容:1234567890abcdefghijC語(yǔ)言(2)請(qǐng)查看test.txt文件的長(zhǎng)度,用“記事本”打開(kāi)該文件,再用UltraEdit查看該文件各字節(jié)的內(nèi)容;問(wèn)題:(1)文件操作的順序是什么?怎樣打開(kāi)、關(guān)閉文件?(2)文件類(lèi)型指針有什么作用?(3)當(dāng)打開(kāi)文件不成功時(shí),該如何處理?(4)怎樣向文件寫(xiě)入字符?34、實(shí)驗(yàn)_6 2、(基礎(chǔ)題)以下文件的功能是進(jìn)行文本文件的復(fù)制。源文件名、目標(biāo)文件名由鍵盤(pán)輸入。請(qǐng)將程序所缺代碼補(bǔ)充完整,之后按要求操作,最后回答問(wèn)題:#include <stdio.h>#include <stdl

22、ib.h>int main( )FILE *in,*out;char ch,infile60,outfile60;printf("輸入源文件的名字:");scanf("%s",infile); printf("輸入目標(biāo)文件的名字:");scanf("%s",outfile); if(in=fopen(_(1)_)=NULL) / 打開(kāi)輸入文件 printf("無(wú)法打開(kāi)源文件n");exit(0);if(out=fopen(_(2)_)=NULL) / 打開(kāi)輸出文件 printf("

23、;無(wú)法打開(kāi)目標(biāo)文件n");exit(0);ch=fgetc(_(3)_);while(_(4)_) fputc(_(5)_);ch=fgetc(in);printf("n文件復(fù)制完畢nn");_(6)_; / 關(guān)閉輸入文件 _(7)_; / 關(guān)閉輸出文件 return 0;操作要求:(1)請(qǐng)將實(shí)驗(yàn)6目錄下的文件myfile.txt、test.exe拷貝到F:目錄中;(2)運(yùn)行程序,輸入源文件名:F:myfile.txt,目標(biāo)文件名:F:myfile2.txt。查看myfile.txt與myfile2.txt是否完全相同?(可通過(guò)比較文件大小、用UltraEdit比

24、較兩文件的內(nèi)容來(lái)判定);(3)再次運(yùn)行程序,輸入源文件名:F:test.exe,目標(biāo)文件名:F:test2.exe。這兩個(gè)文件完全相同嗎?請(qǐng)分析其中的原因,并加以改進(jìn)。問(wèn)題:(1)打開(kāi)源文件、目標(biāo)文件時(shí),打開(kāi)方式各是什么?(2)文本文件、二進(jìn)制文件的打開(kāi)方式有什么不同?(3)對(duì)于文本文件、二進(jìn)制文件,如何判斷遇到了文件尾? 35、實(shí)驗(yàn)_6 3、(基礎(chǔ)題)分析、運(yùn)行下列程序,指出其功能,熟悉文件讀寫(xiě)函數(shù)的使用:(1)#include <stdio.h>#include <stdlib.h>#include <string.h>int main() FILE *

25、fp;char str101; int i,n=5;if(fp=fopen("F:strings.txt","w")=NULL) printf("不能打開(kāi)此文件!n");exit(0);printf("請(qǐng)輸入幾個(gè)字符串:n");while(strlen(gets(str)>0)fputs(str,fp);fputs("n",fp); printf("n字符串內(nèi)容已保存!n");fclose(fp);if(fp=fopen("F:strings.txt"

26、;,"r")=NULL) printf("不能打開(kāi)此文件!n");exit(0);printf("n文件中保存的字符串有:n");while(fgets(str,101,fp)!=NULL)printf("%s",str);fclose(fp);printf("n");return 0;(2)#include <stdio.h>#include <stdlib.h>int main()FILE *fp;int i,k;int num=100,101,102,103,104

27、,105,106,107,108,109;if(fp=fopen("F:myarray.txt", "w")=NULL)printf("不能將數(shù)據(jù)保存到myarray.txt文件中!n");exit(0);for(i=0; i<=9; i+)fprintf(fp,"%5d", numi);fprintf(fp,"n");fclose(fp); if(fp=fopen("F:myarray.txt", "r")=NULL)printf("不能打開(kāi)myarray.txt文件!n");exit(0);for (i=0; i<=9; i+)fscanf(fp, "%d", &k);printf("%-5d",k);printf("nn");fclose(fp);return 0; (3)#include <stdio.h>#include <stdlib.h&g

溫馨提示

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

評(píng)論

0/150

提交評(píng)論