1[填空題]下列給定程序中,函數fun的功能是:求ss所指字符串數組中長度最短的字符串所在的行下標,作為函數值返回,并把其串長放在形參n所指的變量中。ss所指字符串數組中共有M個字符串,且串長小于N。
請在程序的下畫線處填入正確的內容并將下畫線刪除,使程序得出正確的結果。
注意:部分源程序給出如下。
不得增行或刪行,也不得更改程序的結構!
試題程序:
參考解析:
【參考答案】
(1)M (2)< (3)k
【考點分析】
本題考查:for循環語句的循環條件;if語句條件表達式;return語句完成函數值的返回。
【解題思路】
填空l:題目指出88所指字符串數組中共有M個字符串,所以for循環語句的循環條件是i
填空2:要求求長度最短的字符串,*n中存放的是已知字符串中長度最短的字符串的長度,將當前字符串長度與+n比較,若小于*n,則將該長度值賦給*n,因此if語句的條件表達式為len<*n。
填空3:將最短字符串的行下標作為函數值返回,變量k存儲行下標的值。
2[單選題] 若有定義語句:int m[][3]={1,2,3,4,5,6,7};,則與該語句等價的是
A.int m[][3j={{1,2,3},{4,5,6},{i 7}};
B.int m[][3]={{1,2},{3,4},{5,6,7}};
C.int m[][3]={{1,2,3},{4,5},{6,7}};
D.int nl[][3]={{1},{2,3,4},{5,6,7}};
參考答案:A
參考解析:二維數組的初始化有兩種方式,一種是分行初始化,方式為:數據類型數組名[行下標表達式][列下標表達式]={{第0行初值},{第1行初值表},…{最后l行初值表}};,如果初值表只對部分元素賦初值,沒有被賦初值的元素將被自動賦值為0。另一種是按二維數組在內存中的排列順序給各元素賦初值,這種方式就是不分行將所有數據依次列在一個花括號里,方式為:數據類型數組名[行下標表達式][列下標表達式]={初值表};,這種方式的賦值就是將初值表的數據依次賦予數組的每個元素,其中賦值是按照數組元素在內存中的位置進行的。題目中的初始化語句是第二種方法,如果用第一種方法應該是int m[][3]={{1,2,3},{4,5,6{,{7{};,這里應該保證除了最后一行,每一行都滿列有3個元素,A選項正確。
3[單選題] 若有以下說明,則( )不是對strcpy庫函數正確的調用。
A.strcpy(str2,str1)B.
B.strcpy(str3,str1)
C.strcpy(str1,str2)
D.strcpy(str5,str1)
參考答案:C
參考解析:strcpy(s1,s2)函數的功能是將字符串s2復制到字符串s1中。要保證sl存儲區能容納下s2字符串。
4[單選題]下列關于棧的描述中錯誤的是( )。
A.棧是先進后出的線性表
B.棧只能順序存儲
C.棧具有記憶作用
D.對棧的插入刪除操作中,不需要改變棧底指針
參考答案:B
參考解析:棧是線性表的一種,它的特點是先進后出,并且只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都在棧頂進行,因此具有記憶作用。棧可以采用順序存儲,也可以采用鏈式存儲。
5[單選題]下列敘述中正確的是( )。
A.線性表的鏈式存儲結構與順序存儲結構所需要的存儲空間是相同的
B.線性表的鏈式存儲結構所需要的存儲空間一般要多于順序存儲結構
C.線性表的鏈式存儲結構所需要的存儲空間一般要少于順序存儲結構
D.線性表的鏈式存儲結構與順序存儲結構在存儲空間的需求上沒有可比性
參考答案:B
參考解析:線性鏈式存儲結構中每個結點都由數據域與指針域兩部分組成,增加了存儲空間,所以一般要多于順序存儲結構。
6[單選題] 以下程序段完全正確的是( )。
A.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);
參考答案:C
參考解析:A選項中錯在沒有對指針進行初始化,是無效指針,并且在scanf(”%d”,&p)中無需再進行取地址操作;B選項中沒有對指針進行初始化,是無效指針;D選項中語句+P=&k;的左端t pt是指針所指內存空間的值,&k是地址,應為P=&k。因此C選項正確。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |