中國(guó)計(jì)量大學(xué)現(xiàn)代科技學(xué)院《C程序設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷_第1頁(yè)
中國(guó)計(jì)量大學(xué)現(xiàn)代科技學(xué)院《C程序設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷_第2頁(yè)
中國(guó)計(jì)量大學(xué)現(xiàn)代科技學(xué)院《C程序設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷_第3頁(yè)
中國(guó)計(jì)量大學(xué)現(xiàn)代科技學(xué)院《C程序設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷_第4頁(yè)
中國(guó)計(jì)量大學(xué)現(xiàn)代科技學(xué)院《C程序設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

裝訂線裝訂線PAGE2第1頁(yè),共3頁(yè)中國(guó)計(jì)量大學(xué)現(xiàn)代科技學(xué)院《C程序設(shè)計(jì)》

2021-2022學(xué)年第一學(xué)期期末試卷院(系)_______班級(jí)_______學(xué)號(hào)_______姓名_______題號(hào)一二三四總分得分批閱人一、單選題(本大題共20個(gè)小題,每小題1分,共20分.在每小題給出的四個(gè)選項(xiàng)中,只有一項(xiàng)是符合題目要求的.)1、C語(yǔ)言中的內(nèi)存對(duì)齊是為了提高內(nèi)存訪問效率。假設(shè)有以下結(jié)構(gòu)體定義:

structexample{charc;inti;};

,以下關(guān)于結(jié)構(gòu)體

example

大小的描述,正確的是:()A.結(jié)構(gòu)體的大小為5字節(jié),因?yàn)?/p>

char

占1字節(jié),

int

占4字節(jié)B.結(jié)構(gòu)體的大小為8字節(jié),由于內(nèi)存對(duì)齊的原因C.結(jié)構(gòu)體的大小取決于編譯器,不同編譯器可能有不同的結(jié)果D.結(jié)構(gòu)體的大小一定是成員大小的簡(jiǎn)單相加2、在C語(yǔ)言中,關(guān)于結(jié)構(gòu)體的嵌套使用,假設(shè)有以下定義:

structPoint{intx;inty;};structRectangle{structPointtopLeft;structPointbottomRight;};

,以下關(guān)于訪問結(jié)構(gòu)體

Rectangle

成員的方式,正確的是:()A.

rectangle.topLeft.x

B.

rectangle->topLeft->x

C.

(*rectangle).topLeft.x

D.以上都不正確3、C語(yǔ)言中,關(guān)于預(yù)處理指令

#pragma

,以下描述正確的是:()A.

#pragma

指令是標(biāo)準(zhǔn)的C語(yǔ)言預(yù)處理指令,所有編譯器都支持相同的功能B.它主要用于為編譯器提供特定的指令或選項(xiàng)C.

#pragma

指令的作用范圍是整個(gè)程序D.不同的編譯器對(duì)

#pragma

指令的支持和解釋完全相同4、C語(yǔ)言中的文件操作是常見的操作之一。假設(shè)我們要從一個(gè)文本文件中讀取數(shù)據(jù),并將其存儲(chǔ)到一個(gè)數(shù)組中。文件中的數(shù)據(jù)每行都是一個(gè)整數(shù),以下哪種方式是正確且高效的讀取方式?()A.使用

fscanf

函數(shù)逐行讀取B.使用

fgets

函數(shù)讀取整行,然后進(jìn)行字符串處理C.使用

fread

函數(shù)一次性讀取整個(gè)文件D.以上方式都不正確5、在C語(yǔ)言中,函數(shù)指針為函數(shù)的調(diào)用和操作提供了一種靈活的方式。假設(shè)有兩個(gè)函數(shù)

intadd(inta,intb){returna+b;}

intsubtract(inta,intb){returna-b;}

,并定義了

int(*func_ptr)(int,int);

,以下對(duì)于函數(shù)指針的描述,哪一項(xiàng)是不準(zhǔn)確的?()A.可以通過

func_ptr=add;

將函數(shù)指針指向

add

函數(shù),然后通過

func_ptr(2,3)

來調(diào)用

add

函數(shù)B.函數(shù)指針可以指向不同的函數(shù),根據(jù)需要在運(yùn)行時(shí)動(dòng)態(tài)地改變所指向的函數(shù)C.函數(shù)指針的類型必須與所指向的函數(shù)的參數(shù)類型和返回值類型完全一致,否則會(huì)導(dǎo)致編譯錯(cuò)誤D.函數(shù)指針只能指向具有相同參數(shù)個(gè)數(shù)和參數(shù)類型的函數(shù),不能指向參數(shù)不同的函數(shù)6、若有定義:int*p,a=4;p=&a;以下均代表地址的是()A.a,pB.&a,&*pC.&a,pD.*p,&a7、若有定義:chars[10]="program";則以下不能將字符串"language"賦給數(shù)組s的語(yǔ)句是()A.strcpy(s,"language");B.strncpy(s,"language",8);C.s="language";D.memcpy(s,"language",8);8、設(shè)有定義:charstr[]="HelloWorld";,則數(shù)組str的長(zhǎng)度是()A.10B.11C.12D.不確定9、C語(yǔ)言中的字符串處理需要特別注意。假設(shè)有兩個(gè)字符串

charstr1[]="Hello";charstr2[]="World";

,要將它們連接起來,以下哪個(gè)函數(shù)可以實(shí)現(xiàn)?()A.

strcat(str1,str2);

B.

strcpy(str1,str2);

C.

strcmp(str1,str2);

D.以上都不對(duì)10、C語(yǔ)言中的字符串處理是常見的操作。假設(shè)定義了兩個(gè)字符串

charstr1[]="Hello";

char*str2="World";

,以下關(guān)于字符串操作的描述,哪一項(xiàng)是錯(cuò)誤的?()A.可以使用

strcpy

函數(shù)將一個(gè)字符串復(fù)制到另一個(gè)字符串B.可以使用

strcmp

函數(shù)比較兩個(gè)字符串的大小C.字符串以

'\0'

作為結(jié)束標(biāo)志D.對(duì)字符串指針進(jìn)行加減運(yùn)算,可以直接操作字符串的內(nèi)容11、若有定義:inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};,則((a+1)+2)的值是()A.5B.6C.8D.912、設(shè)有以下C語(yǔ)言代碼:

for(inti=0;i<5;i++){if(i==2)continue;printf("%d",i);}

,輸出結(jié)果是什么?()A.01234B.0134C.0124D.程序會(huì)出錯(cuò)13、C語(yǔ)言中的指針數(shù)組是指針的一種特殊用法。假設(shè)有以下定義:

int*ptrArr[3];

,以下關(guān)于指針數(shù)組的描述,正確的是:()A.這是一個(gè)可以存儲(chǔ)3個(gè)整數(shù)的數(shù)組B.這是一個(gè)可以存儲(chǔ)3個(gè)指針的數(shù)組,每個(gè)指針指向一個(gè)整數(shù)C.這是一個(gè)錯(cuò)誤的定義,C語(yǔ)言中不允許這樣定義指針數(shù)組D.這是一個(gè)指針,指向一個(gè)包含3個(gè)整數(shù)的數(shù)組14、C語(yǔ)言中,若有以下代碼段

uniondata{inti;floatf;};uniondatad;

,以下描述正確的是:()A.聯(lián)合體

data

的大小是其成員大小的總和B.可以同時(shí)給聯(lián)合體的多個(gè)成員賦值C.在同一時(shí)刻,聯(lián)合體中只有一個(gè)成員的值是有效的D.聯(lián)合體成員的訪問方式與結(jié)構(gòu)體相同15、在C語(yǔ)言的函數(shù)調(diào)用中,參數(shù)傳遞的方式有值傳遞和地址傳遞。假設(shè)有以下函數(shù)定義:

voidswap(int*a,int*b){inttemp=*a;*a=*b;*b=temp;}

,以及主函數(shù)中的調(diào)用

intx=3,y=5;swap(&x,&y);

。以下關(guān)于函數(shù)

swap

的作用,正確的是:()A.函數(shù)

swap

不能交換

x

y

的值,因?yàn)槭侵祩鬟fB.函數(shù)

swap

可以交換

x

y

的值,并且這種交換在主函數(shù)中是有效的C.函數(shù)

swap

可以交換

x

y

的值,但這種交換只在函數(shù)內(nèi)部有效,主函數(shù)中的

x

y

值不變D.函數(shù)

swap

會(huì)導(dǎo)致程序運(yùn)行錯(cuò)誤,因?yàn)橹羔樀氖褂貌徽_16、設(shè)有定義:inta[5]={1,2,3,4,5},*p=a;,則不能表示數(shù)組a中元素的是()A.*aB.*pC.a[0]D.p[5]17、在C語(yǔ)言中,關(guān)于結(jié)構(gòu)體的使用是一種組織和管理數(shù)據(jù)的有效方式。假設(shè)有一個(gè)結(jié)構(gòu)體

structStudent{charname[50];intage;floatscore;};

,以下對(duì)于結(jié)構(gòu)體的描述,哪一項(xiàng)是不準(zhǔn)確的?()A.可以使用

structStudents;

的方式定義一個(gè)結(jié)構(gòu)體變量

s

B.可以通過

s.age

、

s.score

的方式訪問結(jié)構(gòu)體成員并進(jìn)行賦值操作C.結(jié)構(gòu)體變量之間不能直接進(jìn)行賦值操作,需要逐個(gè)成員進(jìn)行復(fù)制D.結(jié)構(gòu)體只能包含基本數(shù)據(jù)類型,不能包含其他結(jié)構(gòu)體或數(shù)組18、在C語(yǔ)言的內(nèi)存管理中,

malloc

free

函數(shù)用于動(dòng)態(tài)分配和釋放內(nèi)存。假設(shè)需要為一個(gè)整數(shù)數(shù)組動(dòng)態(tài)分配內(nèi)存,以下關(guān)于內(nèi)存管理的描述,哪一項(xiàng)是不準(zhǔn)確的?()A.使用

int*arr=(int*)malloc(sizeof(int)*5);

可以分配5個(gè)整數(shù)大小的內(nèi)存空間B.分配的內(nèi)存使用完后,必須使用

free(arr);

釋放,否則會(huì)導(dǎo)致內(nèi)存泄漏C.多次使用

malloc

分配的內(nèi)存空間是連續(xù)的D.

malloc

函數(shù)可能會(huì)分配失敗,此時(shí)返回

NULL

19、在C語(yǔ)言的內(nèi)存管理中,

malloc

free

函數(shù)用于動(dòng)態(tài)分配和釋放內(nèi)存。假設(shè)有以下代碼:

int*ptr=(int*)malloc(sizeof(int)*5);

,使用完這塊內(nèi)存后,應(yīng)該如何正確釋放?()A.

deleteptr;

B.

free(ptr);

C.

ptr=NULL;

D.不需要釋放,程序結(jié)束時(shí)自動(dòng)釋放20、C語(yǔ)言中的

volatile

關(guān)鍵字用于修飾變量,其主要作用是什么?()A.提高變量的訪問速度B.防止變量被優(yōu)化器優(yōu)化C.使變量可以被多個(gè)線程同時(shí)訪問D.以上都不對(duì)二、判斷題(本大題共15小題,每小題2分,共30分.有多個(gè)選項(xiàng)是符合題目要求的.)1、在C語(yǔ)言中,浮點(diǎn)數(shù)的精度和取值范圍由其類型(如

float

、

double

)決定。()2、在C語(yǔ)言中,若定義了一個(gè)函數(shù)

voidfun(int*ptr)

,在函數(shù)內(nèi)部對(duì)

ptr

所指向的內(nèi)存進(jìn)行修改,那么在函數(shù)調(diào)用結(jié)束后,這些修改在調(diào)用處仍然有效,因?yàn)橹羔槀鬟f的是地址。()3、在C語(yǔ)言中,使用

fseek

函數(shù)可以在文件中任意移動(dòng)文件指針的位置。()4、在C語(yǔ)言中,

sizeof

操作符用于獲取變量或數(shù)據(jù)類型所占用的字節(jié)數(shù)。()5、在C語(yǔ)言中,

break

語(yǔ)句不僅可以用于

switch

語(yǔ)句,還可以用于跳出循環(huán)語(yǔ)句。()6、C語(yǔ)言中的函數(shù)參數(shù)可以是值傳遞或地址傳遞,值傳遞時(shí)函數(shù)內(nèi)部對(duì)參數(shù)的修改不會(huì)影響到函數(shù)外部的實(shí)參,而地址傳遞時(shí)則可以通過指針修改實(shí)參的值。()7、在C語(yǔ)言中,使用remove函數(shù)可以刪除一個(gè)指定的文件。()8、C語(yǔ)言中,定義了一個(gè)指針數(shù)組

char*arr[]={"apple","banana","cherry"};

,可以通過改變指針的值來修改數(shù)組中字符串的內(nèi)容。()9、在C語(yǔ)言中,使用typedef定義新的類型名后,新的類型名完全等同于原來的類型,包括在內(nèi)存中的存儲(chǔ)方式和操作方式。()10、C語(yǔ)言中的預(yù)處理器指令可以定義宏函數(shù),宏函數(shù)可以像普通函數(shù)一樣接受參數(shù)并進(jìn)行計(jì)算。()11、C語(yǔ)言中的字符串比較函數(shù)strcmp區(qū)分大小寫,如果要進(jìn)行不區(qū)分大小寫的比較,需要自行編寫相應(yīng)的函數(shù)。()12、

charstr1[]="Hello";charstr2[]="Hello";str1=str2;

,這樣直接對(duì)字符數(shù)組進(jìn)行賦值的操作是錯(cuò)誤的,因?yàn)閿?shù)組名不能直接被賦值。()13、

strcpy

函數(shù)會(huì)自動(dòng)為目標(biāo)字符串分配內(nèi)存空間。()14、在C語(yǔ)言中,通過

typedef

定義的新類型名只是給已有的類型起了一個(gè)別名,不會(huì)創(chuàng)建新的數(shù)據(jù)類型,其本質(zhì)仍然是原來的類型。()15、C語(yǔ)言中的指針可以指向函數(shù),這種指針稱為函數(shù)指針,通過函數(shù)指針可以調(diào)用所指向的函數(shù)。()三、編程題(本大題共6個(gè)小題,共30分)1、(本題5分)用C語(yǔ)言編寫程序,用戶輸入一個(gè)字符串,程序?qū)⑵渲械拇髮懽帜皋D(zhuǎn)換為小寫字母,小寫字母轉(zhuǎn)換為大寫字母,其他字符保持不變,然后輸出轉(zhuǎn)換后的字符串。2、(本題5分)設(shè)計(jì)一個(gè)C語(yǔ)言程序,實(shí)現(xiàn)從用戶輸入的多個(gè)字符串中找出最長(zhǎng)的字符串并輸出。3、(本題5分)寫一個(gè)C語(yǔ)言程序,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Trie樹,支持插入、查找和前綴匹配操作。4、(本

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論