吉林藝術(shù)學(xué)院《面向?qū)ο驝程序設(shè)計2》2023-2024學(xué)年第一學(xué)期期末試卷_第1頁
吉林藝術(shù)學(xué)院《面向?qū)ο驝程序設(shè)計2》2023-2024學(xué)年第一學(xué)期期末試卷_第2頁
吉林藝術(shù)學(xué)院《面向?qū)ο驝程序設(shè)計2》2023-2024學(xué)年第一學(xué)期期末試卷_第3頁
吉林藝術(shù)學(xué)院《面向?qū)ο驝程序設(shè)計2》2023-2024學(xué)年第一學(xué)期期末試卷_第4頁
吉林藝術(shù)學(xué)院《面向?qū)ο驝程序設(shè)計2》2023-2024學(xué)年第一學(xué)期期末試卷_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

自覺遵守考場紀律如考試作弊此答卷無效密自覺遵守考場紀律如考試作弊此答卷無效密封線第1頁,共3頁吉林藝術(shù)學(xué)院《面向?qū)ο驝程序設(shè)計2》

2023-2024學(xué)年第一學(xué)期期末試卷院(系)_______班級_______學(xué)號_______姓名_______題號一二三四總分得分一、單選題(本大題共35個小題,每小題1分,共35分.在每小題給出的四個選項中,只有一項是符合題目要求的.)1、在C語言中,對于指針和數(shù)組的關(guān)系,假設(shè)有一個數(shù)組

intarr[10]

,同時有一個指針

int*ptr=arr;

,那么

ptr+2

指向的是什么?()A.

arr[2]

B.

arr[3]

C.

arr[1]

D.不確定2、C語言中,關(guān)于動態(tài)內(nèi)存分配,若使用

int*p=(int*)malloc(sizeof(int)*10);

,以下描述正確的是:()A.分配的內(nèi)存空間會自動初始化為0B.如果內(nèi)存分配失敗,

malloc

函數(shù)返回

NULL

C.可以使用

free(p)

釋放部分已分配的內(nèi)存D.不需要釋放通過

malloc

分配的內(nèi)存,程序結(jié)束時會自動釋放3、在C語言中,設(shè)有以下宏定義

#defineMAX(a,b)((a)>(b)?(a):(b))

,那么

MAX(3+2,5)

的值是多少?()A.5B.6C.8D.不確定4、在C語言的內(nèi)存管理中,

malloc

free

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

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

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

free(arr);

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

malloc

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

malloc

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

NULL

5、假設(shè)在C語言中有如下代碼段

inta=5;int*p=&a;

,以下關(guān)于指針運算的描述,正確的是:()A.

p+1

指向的是下一個整數(shù)的地址B.對指針進行乘法運算(如

p*2

)是合法的C.可以直接將兩個指針相加(如

p+p

)D.指針的減法運算(如

p1-p2

)結(jié)果的單位是字節(jié)6、若有定義:inta[5]={1,2,3,4,5},*p=a;則以下不能表示數(shù)組a中元素a[3]的是()A.*(p+3)B.p[3]C.*(a+3)D.p+37、假設(shè)在C語言中有以下結(jié)構(gòu)體定義

structstudent{intid;charname[20];floatscore;};

,以下關(guān)于結(jié)構(gòu)體的描述,正確的是:()A.可以直接將一個結(jié)構(gòu)體變量賦值給另一個結(jié)構(gòu)體變量B.結(jié)構(gòu)體成員的訪問可以使用

struct.student.id

的形式C.結(jié)構(gòu)體數(shù)組中的元素不能通過指針進行訪問D.結(jié)構(gòu)體變量所占的內(nèi)存空間是其各成員所占空間之和8、若有定義:charstr1[]="hello",str2[]="world";則執(zhí)行strcat(str1,str2);后,str1的內(nèi)容是()A."hello"B."world"C."helloworld"D."worldhello"9、在C語言中,若有函數(shù)定義

voidfun(inta[],intn)

,以下調(diào)用正確的是()A.

fun(10);

B.

fun({1,2,3},3);

C.

fun(1,2,3);

D.

fun(a,3);

(假設(shè)

inta[]={1,2,3};

)10、C語言中的字符串比較函數(shù)

strcmp

用于比較兩個字符串。假設(shè)我們有兩個字符串

charstr1[]="Hello";

charstr2[]="HelloWorld";

,當(dāng)使用

strcmp(str1,str2)

進行比較時,結(jié)果是什么?()A.0(表示相等)B.負數(shù)(表示

str1

小于

str2

)C.正數(shù)(表示

str1

大于

str2

)D.不確定11、在C語言中,關(guān)于字符串的操作,設(shè)有兩個字符串

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

,要將這兩個字符串連接起來,以下哪個函數(shù)可以實現(xiàn)?()A.

strcat(str1,str2);

B.

strcpy(str1,str2);

C.

strcmp(str1,str2);

D.

strlen(str1+str2);

12、設(shè)有定義:charstr[]="HelloWorld";,則數(shù)組str的長度是()A.10B.11C.12D.不確定13、若有定義:inta[4]={1,2,3,4},p=a;則表達式

(p++)的值是()A.1B.2C.3D.414、若有定義:chars[10]="China";要將字符串"World"連接到字符串s后面,正確的語句是()A.strcat(s,"World");B.strcpy(s,"World");C.s=strcat(s,"World");D.s=strcpy(s,"World");15、C語言中的自增(

++

)和自減(

--

)運算符需要注意運算順序。假設(shè)有

inta=5;intb=++a;

,那么

b

的值是多少?()A.5B.6C.7D.不確定16、在C語言的指針函數(shù)中,以下關(guān)于返回指針的函數(shù)的描述,不正確的是()A.返回指針的函數(shù)可以返回靜態(tài)分配的內(nèi)存地址,也可以返回動態(tài)分配的內(nèi)存地址B.如果返回的是動態(tài)分配的內(nèi)存地址,調(diào)用者需要使用free函數(shù)釋放C.返回的指針不能指向函數(shù)內(nèi)部的局部變量,因為函數(shù)結(jié)束后局部變量的存儲空間會被釋放D.返回指針的函數(shù)一定比返回值的函數(shù)效率高17、若有以下C語言代碼:charstr1[]="Hello";char*str2="World";以下說法正確的是:()A.str1和str2存儲方式相同B.str1可以修改其內(nèi)容,str2不行C.str2可以修改其內(nèi)容,str1不行D.str1和str2都可以修改其內(nèi)容18、在C語言中,關(guān)于函數(shù)的默認返回值類型,如果沒有明確指定,默認是什么類型?()A.

void

B.

int

C.

float

D.沒有默認類型,必須指定19、C語言中的選擇結(jié)構(gòu)

if-else

用于根據(jù)條件執(zhí)行不同的代碼塊。假設(shè)有以下代碼:

intnum=15;if(num>10&&num<20){printf("Numberisinrange\n");}else{printf("Numberisoutofrange\n");}

,以下關(guān)于這段代碼的輸出,正確的是:()A."Numberisinrange"B."Numberisoutofrange"C.程序會產(chǎn)生運行時錯誤,因為條件判斷不正確D.沒有輸出,因為

if-else

結(jié)構(gòu)的條件不完整20、若有定義:intx=3,y=2;則表達式x=(y++)+x的值是()A.5B.6C.7D.821、若有定義:inta=5,b=3;則表達式a/b的值是()A.1B.1.666667C.1.0D.222、在C語言中,關(guān)于靜態(tài)變量的使用,假設(shè)有函數(shù)

voidincrement(){staticintcount=0;count++;printf("%d",count);}

,連續(xù)調(diào)用這個函數(shù)3次,輸出結(jié)果是什么?()A.111B.123C.333D.程序出錯23、在C語言中,關(guān)于數(shù)組作為函數(shù)參數(shù)的傳遞,假設(shè)有函數(shù)

voidprocessArray(intarr[],intsize){...}

,以下哪種調(diào)用方式是正確的?()A.

processArray({1,2,3},3);

B.

processArray(1,2,3,3);

C.

processArray(int[3]={1,2,3},3);

D.

processArray(intarr[]={1,2,3},3);

24、C語言中的位運算可以對二進制位進行操作,實現(xiàn)一些特殊的功能。假設(shè)有兩個整數(shù)

inta=5;intb=3;

,以下對于位運算的描述,哪一項是不準確的?()A.

a&b

執(zhí)行按位與操作,結(jié)果是1B.

a|b

執(zhí)行按位或操作,結(jié)果是7C.

a^b

執(zhí)行按位異或操作,結(jié)果是6D.

~a

執(zhí)行按位取反操作,結(jié)果是-6,并且取反后的數(shù)在所有位上的值都與原數(shù)相反25、在C語言中,關(guān)于指針的使用是一個重要且復(fù)雜的概念。假設(shè)我們有一個函數(shù),它接受一個整數(shù)指針作為參數(shù),并嘗試通過指針修改所指向的整數(shù)的值。以下哪種方式是正確地在函數(shù)內(nèi)部修改指針?biāo)赶虻闹??()A.直接對指針進行賦值B.通過解引用指針并對其賦值C.創(chuàng)建一個新的指針并賦值D.以上都不對26、若有定義:floatx=1.5;inty;,則以下表達式的值為1的是()A.(int)xB.(int)(x+y)C.(int)x+yD.x+(int)y27、C語言中,對于預(yù)處理器指令

#include

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

#include

指令只能包含.c文件B.包含的頭文件可以寫在程序的任意位置C.重復(fù)包含同一個頭文件會導(dǎo)致編譯錯誤D.可以使用尖括號

<>

和雙引號

""

來指定包含的文件,它們的區(qū)別在于搜索路徑不同28、在C語言的內(nèi)存管理中,以下關(guān)于動態(tài)內(nèi)存分配的描述,不正確的是()A.使用malloc函數(shù)分配的內(nèi)存空間,如果不再使用,需要使用free函數(shù)釋放,否則會造成內(nèi)存泄漏B.calloc函數(shù)與malloc函數(shù)的功能相同,只是在分配內(nèi)存時會將內(nèi)存初始化為0C.realloc函數(shù)可以用于調(diào)整已分配內(nèi)存的大小,但可能會導(dǎo)致數(shù)據(jù)丟失D.動態(tài)分配的內(nèi)存位于代碼段,其生命周期與程序的運行周期相同29、在C語言中,若有定義

charstr[20]="Hello";

,以下能正確將字符串

str

輸出的是()A.

printf("%s",&str);

B.

printf("%s",str);

C.

printf("%c",&str);

D.

printf("%c",str);

30、C語言中,關(guān)于字符串的操作,若有

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

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

str1=str2;

來將

str2

的內(nèi)容復(fù)制到

str1

B.

strlen(str1)

返回的是字符串

str1

所占的內(nèi)存空間大小C.可以使用

strcpy(str1,str2);

str2

復(fù)制到

str1

,但要確保

str1

有足夠的空間D.字符串比較可以直接使用關(guān)系運算符(如

==

)31、在C語言中,以下不能將字符串"hello"賦給數(shù)組s的語句是()A.chars[10]="hello";B.chars[]="hello";C.char*s="hello";D.chars[6]={'h','e','l','l','o'};32、對于以下C語言代碼:typedefstruct{intx;inty;}Point;Pointp1={10,20};以下訪問p1中x成員的方式正確的是:()A.p1.xB.p1->xC.(*p1).xD.以上都正確33、若有定義:inta=10,b=20,c=30;以下語句執(zhí)行后a、b、c的值是()if(a>b)c=a;a=b;b=c;A.10,20,30B.20,30,30C.20,30,20D.20,20,3034、在C語言中,關(guān)于結(jié)構(gòu)體的使用是一種組織和管理數(shù)據(jù)的有效方式。假設(shè)有一個結(jié)構(gòu)體

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

,以下對于結(jié)構(gòu)體的描述,哪一項是不準確的?()A.可以使用

structStudents;

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

s

B.可以通過

、

s.age

s.score

的方式訪問結(jié)構(gòu)體成員并進行賦值操作C.結(jié)構(gòu)體變量之間不能直接進行賦值操作,需要逐個成員進行復(fù)制D.結(jié)構(gòu)體只能包含基本數(shù)據(jù)類型,不能包含其他結(jié)構(gòu)體或數(shù)組35、以下C語言代碼段的輸出結(jié)果是什么?intnum=5;int*ptr=#*ptr=10;printf("%d",num);()A.5B.10C.0D.程序報錯二、判斷題(本大題共10小題,每小題2分,共20分.有多個選項是符合題目要求的.)1、

charstr[10];strcpy(str,"hello");

是合法的字符串復(fù)制操作。()2、

double

類型的精度至少為10位有效數(shù)字。()3、C語言中的宏定義中可以使用#if等條件編譯指令。()4、C語言中

溫馨提示

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

評論

0/150

提交評論