(21)有以下程序:
程序運行后的輸出結(jié)果是( )。
(22)有以下程序:
程序運行后的輸出結(jié)果是( )。
A.02356
B.0235
C.235
D.2356
以下關(guān)于retllm語句的敘述中正確的是( )。
A.一個自定義函數(shù)中必須有一條return語句
B.一個自定義函數(shù)中可以根據(jù)不同情況設(shè)置多條retum語句
C.定義成void類型的函數(shù)中可以有帶返回值的return語句
D.沒有return語句的自定義函數(shù)在執(zhí)行結(jié)束時不能返回到調(diào)用處
(24)已定義以下函數(shù):
fun函數(shù)的返回值是( )。
一個整數(shù)
B.不確定的值
C.形參P中存放的值
D.形參P的地址值(25)以下程序段完全正確的是( )。
int * p;scanf(”%d”,&p);
B.int*p;scanf(”%d”,P);
C.int k,* P:&k;scanf(’’%d”,P);
D.int k,*p;*P=&k;scanf(”%d”,P);
(26)設(shè)有定義:
double a[10],*s=a;
以下能夠代表數(shù)組元素a[3]的是( )。
A.($s)[3]
B.}(s+3)
C.*s[3]
D.}s+3
27、有以下程序
程序運行后的輸出結(jié)果是( )。
A.6,2,3,4,5,
B.2,2,3,4,5,
C.1,2,3,4,5,
D.2,3,4,5,6,
(28)有以下程序:
程序運行后的輸出結(jié)果是( )。
A.4
B.34
C.31
D.32
(29)以下選項中正確的語句組是( )。
A.char*s;8={1.BOOK!”}i
B.char*s;8=”BOOK!”;
C.char S[10];S=”BOOK!”;
D.char S[];S=”BOOK!”;
(30)若有定義語句:
char}sl=‘’0K”,:It s2=”ok”;
以下選項中,能夠輸出“OK”的語句是( )。
A.if(strcmp(sl,s2)!=0)puts(s2);
B.if(strcmp(sl,s2)!=0)puts(s1);
C.if(strcmp(sl,s2)==1)puts(s1);
D.if(strcmp(sl,s2)==0)puts(s1);
(31)有以下程序:
程序運行后的輸出結(jié)果是( )。
A.11
B.9
C.6
D.7
(32)有以下程序(說明:字母A的ASCIl碼值是65):
程序運行后的輸出結(jié)果是( )。
A.BT
B.YE
C.YT
D.BY
(33)有以下程序:
程序運行后的輸出結(jié)果是( )。
A.120
B.11
C.6
D.21
(34)有以下程序:
程序運行后的輸出結(jié)果是( )。、
A.A B E F
B.C D E F
C.A B C D
D.C D A B
(35)以下關(guān)于typedef的敘述錯誤的是( )。
A.用typedef可以增加新類型
B.typedef只是將已存在的類型用一個新的名字來代替
C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名
D.用typedef為類型說明一個新名,通?梢栽黾映绦虻目勺x性
(36)程序中已構(gòu)成如下圖所示的不帶頭結(jié)點的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表結(jié)點,指針變量s總是作為指針指向鏈表的第一個結(jié)點。
若有以下程序段:
該程序段實現(xiàn)的功能是( )。
A.刪除尾結(jié)點
B.尾結(jié)點成為首結(jié)點
C.刪除首結(jié)點
D.首結(jié)點成為尾結(jié)點
(37)有以下程序:
程序運行后的輸出結(jié)果是( )。
A.33
B.197
C.143
D.28
(38)若有以下程序段:
程序運行后的輸出結(jié)果是( )。
A.16
B.8
C.4
D.2
(39)以下敘述中錯誤的是( )。
A.gets函數(shù)用于從終端讀人字符串
B.getehar函數(shù)用于從磁盤文件讀人字符
C.fputs函數(shù)用于把字符串輸出到文件
D.fwrite函數(shù)用于以二進制形式輸出數(shù)據(jù)到文件
(40)有以下程序:
以上程序執(zhí)行后abc.dat文件的內(nèi)容是( )。
A.China
B.Chinang
C.ChinaBeijing
D.BeijingChina
(21)B【解析】第一次執(zhí)行外循環(huán),i的值為3,第一次執(zhí)行內(nèi)循環(huán)j的值為1,j<=2條件成立,打印i+j的值,即4;第二次執(zhí)行內(nèi)循環(huán)J的值為2,j<=2條件成立,打印i+j的值,即5;再判斷條件不成立,打印回車換行符,跳出內(nèi)循環(huán)。第二次執(zhí)行外循環(huán),i的值為2,內(nèi)循環(huán)的執(zhí)行同第一次一樣,所以打印3和4,打印回車換行,結(jié)束內(nèi)循環(huán)。第三次執(zhí)行外循環(huán)i的值為1,同理內(nèi)循環(huán)中打印2和3,打印回車換行符,結(jié)束內(nèi)循環(huán)。
(22)C【解析】k的值為5,逐個對caBe語句進行匹配,均不匹配,執(zhí)行defau1t下的語句n=0;k一一。再執(zhí)行case2:ca804:后面的語句n+=2;k一一;。執(zhí)行break語句跳出switch判斷,打印n的值,即2。經(jīng)過第一次循環(huán)后,k的值為3,然后進行k>0&&11<5條件判斷為真。第二次執(zhí)行循環(huán)體,執(zhí)行case3:后面的語句n+=1;k一一;。再執(zhí)行break語句跳出循環(huán),此時打印n的值3,此時k的值為2。第三次執(zhí)行循環(huán)體k的值為2,滿足條件,執(zhí)行case2:case4:后面的語句n+=2;k一一;。執(zhí)行break語句跳出循環(huán)體。打印n的值5。此時n不滿足條件k>0&&n<5,所以結(jié)束循環(huán)。整個程序的打印結(jié)果為235。
(23)B【解析】在函數(shù)中允許有多個Iett1r11語句,但每次調(diào)用只能有一個return語句被執(zhí)行,因此只能返回一個函數(shù)值。定義成void類型的函數(shù),不允許從該函數(shù)取得返回值,也不允許使用return語句,c選項描述錯誤。沒有return語句的函數(shù)在執(zhí)行到函數(shù)的最后一條語句后會自動返回到調(diào)用處,A、D選項描述錯誤。因此B選項正確。
(24)A【解析】返回值為指針變量指向的數(shù)據(jù),該數(shù)據(jù)已被定義為整型。因此A選項正確。
(25)C【解析】A選項中錯在沒有對指針進行初始化,是無效指針,并且在scanf(”%d”,&p)中無需再進行取地址操作;B選項中沒有對指針進行初始化,是無效指針;D選項中語句+P=&k;的左端t pt是指針?biāo)竷?nèi)存空間的值,&k是地址,應(yīng)為P=&k。因此C選項正確。
(26)B【解析】語句·s=a;表示指針變量s指向一維數(shù)
組a的首地址。a[3]表示引用數(shù)組a的第4個元素,+(s+i)表示引用指針8所指數(shù)組a的第i+1個元素,選項A、C、D的表示方法錯誤,只有B選項正確。
(27)A【解析】本題考查的是函數(shù)的地址調(diào)用,將數(shù)組名作為數(shù)組首地址進行傳遞,然后取首個數(shù)組元素值進行加1運算,循環(huán)5次。因此A選項正確。
(28)C【解析】本題重點考察二維數(shù)組名作為實參進行參數(shù)傳遞,在主函數(shù)中調(diào)用了fun函數(shù),實參為二維數(shù)組名a和兩個整數(shù)4.0,這樣對應(yīng)定義fun函數(shù)首部有三種形式,這里采用了第一種形式——行指針,這樣在fun函數(shù)對s[i][j]進行操作實際上就是對主函數(shù)中的a[i][j]進行操作,再分析fun函數(shù)的作用便可知,是求二維數(shù)組第0列中的那個元素。因此C選項正確。
(29)B【解析】A選項去掉大括號就正確了;c選項和D選項應(yīng)在定義時賦初值。因此B選項正確。
(30)B【解析】strcmp(s1,s2)是字符串比較函數(shù),比較規(guī)則是兩個字符串自左向右逐個字符相比(按照ASCI1碼值大小),-以第一個不相同的字符的大小作為比較結(jié)果。因為。O。<10.,所以strcmp(s1,s2)為負值,只有B選項正確。
(31)C【解析】strcpy:字符串拷貝函數(shù);str1en:求字符串長度函數(shù)(注意:不包含字符串結(jié)束標(biāo)識符‘、0’);strcat:字符串連接函數(shù)。執(zhí)行完語句strcat(P,r);后,P數(shù)組中存儲的元素為a,b,c,d,a,b,C,d,8;執(zhí)行語句strcpy(P+str1en(q),q);得到的結(jié)果是將q所指向的字符串拷貝至P+str1en(q)開始的存儲位置,因為str1en的值為3,即從P+3開始存儲q中的元素。所以執(zhí)行完strcpy(P+str|en(q),q)語句后,字符數(shù)組P[20]的存儲元素為a,b,c,a,b,o;所以str1en(P)的結(jié)果為6。因此C選項正確。
(32)B【解析】本題中執(zhí)行fun(a)時,會取字符串a(chǎn)的第一個字母B,因為字母B的ASCI1碼值為66,所以不會輸出字母8,函數(shù)只會輸出ASCI1碼值為奇數(shù)的字母,字母Y的ASCI1碼值為89,字母T的ASCI1碼值為84,字母E的ASCII碼值為69。因此B選項正確。
(33)D【解析】fun函數(shù)中的變量X為靜態(tài)局部變量,占用固定的內(nèi)存單元,下一次調(diào)用時仍可以保留上次調(diào)用時的值。也就是說,如果多次調(diào)用fun函數(shù),x的定義只在第一次調(diào)用時有效,從第二次調(diào)用開始,x的定義相當(dāng)于不存在,直接使用上次X的值。fun函數(shù)被調(diào)用了5次,每次調(diào)用后的返回值累加到s上。5次調(diào)用后,x的值為6,8的值為1+2+3+4+5+6=21。因此D選項正確。
(34)B【解析】本題考察的是變量的作甩范圍。如果在同一個源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量被“屏蔽”,即不起作用:奉題中,在fun1()和main()函數(shù)內(nèi)訪問的是全局變量a和b,在fun2()函數(shù)中訪問的是形參變量a和b。所以,main()函數(shù)中的prinff()函數(shù)輸出的是在fun1()函數(shù)中被改變的全局變量a和b的值c、D,而fun2()函數(shù)中輸出的是傳遞給它的實參值E、F。因此B選項正確。
(35)A【解析】typedef并不是增加了新類型,面是用一個新名字替代已存在的類型,不能為變量說明一個新名,使用typedef可以增強程序的可移植性。所以A選項錯誤:
(36)D【解析】本題考查鏈表的操作,本題中首先是s指向了它的下個結(jié)點,題目中說明了s總是指向鏈表的第一個結(jié)點,然后whi1e循環(huán)找到鏈表的最后一個元素,然后最后一個元素指向了之前鏈表的頭結(jié)點,之前頭結(jié)點指向了空結(jié)點,所以本題實現(xiàn)的功能是使首結(jié)點成為尾結(jié)點。選項D正確。(37)C【解析】本題考查帶參數(shù)的宏定義,s為帶參數(shù)的宏定義,運行S(k+j)為4*(k+j)*k+j+1=143,選項C正確。
(38)C【解析】本題考查位運算,屬于基礎(chǔ)知識,題目中將整型變量8,二進制表達為00(301000,右移一位為00000100,即4,選項c正確。
(39)B【解析】本題考查字符處理函數(shù)和文件操作函數(shù)。屬于基礎(chǔ)知識,其中B選項9etchar函數(shù)是用于從終端讀人一個字符。
(40)B【解析】本題考查文件操作函數(shù),fwrite和rewind函數(shù),題目中先是將s2字符串寫入adc.dat中,然后將寫指針回到文件開頭,然后寫入s1字符串,那么s1字符串就將前5個字符覆蓋,所以最終結(jié)果為Chinan9,選項B正確。