第 1 頁:選擇題 |
點擊查看:2018年3月全國計算機二級C語言練習題及答案匯總
一、選擇題(每小題1分,共40分)
1[單選題] 有以下程序(注:字符a的ASCII碼值為97):
程序運行后的輸出結果是( )。
A.789
B.abe
C.7890
D.979899
參考答案:A
參考解析:因為小寫字符a,b,c的ASCII碼值分別為97,98,99,而在do while循環(huán)語句中,每次對字符的ASCII碼值取余數(shù)并輸出,所以分別輸出7,8,9。
2[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.7
B.10
C.8
D.9
參考答案:D
參考解析:調用f(a,b)函數(shù)返回3,調用f(a,c)函數(shù)返回6,所以外層調用f(f(a,b),f(a,c));即調用f(3,6)函數(shù)返回9。
3[單選題] 下面敘述中錯誤的是( )。
A.軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤
B.對被調試的程序進行“錯誤定位”是程序調試的必要步驟
C.程序調試通常也稱為Debug
D.軟件測試應嚴格執(zhí)行測試計劃,排除測試的隨意性
參考答案:A
參考解析:軟件測試的目的是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,并不涉及改正錯誤,所以選項A錯誤。程序調試的基本步驟有:錯誤定位、修改設計和代碼,以排除錯誤、進行回歸測試,防止引進新的錯誤。程序調試通常稱為Debug,即排錯。軟件測試的基本準則有:所有測試都應追溯到需求、嚴格執(zhí)行測試計劃,排除測試的隨意性、充分注意測試中的群集現(xiàn)象、程序員應避免檢查自己的程序、窮舉測試不可能、妥善保存測試計劃等文件。
4[單選題] 以下關于結構化程序設計的敘述中正確的是( )。
A.結構化程序使用goto語句會很便捷
B.在C語言中,程序的模塊化是利用函數(shù)實現(xiàn)的
C.一個結構化程序必須同時由順序、分支、循環(huán)三種結構組成
D)由三種基本結構構成的程序只能解決小規(guī)模的問題
參考答案:B
參考解析:濫用goto語句將使程序的流程毫無規(guī)律,可讀性差,對于初學者來說盡量不要使用,所以A錯誤。一個結構化程序可以包含順序、分支、循環(huán)結構中的一種或多種,所以C錯誤。由三種基本結構構成的程序可以解決任何復雜的問題,所以D錯誤。
5[單選題] 若變量已正確定義為int型,要通過語句:
scanf("%d,%d,%d",&a,&b,&c);
給a賦值1、給b賦值2、給c賦值3,以下輸入形式中錯誤的是( )。(注:口代表一個空格符)
ABCD參考答案:D
參考解析:scanf()的格式控制串可以使用其他非空白字符,如本題中的逗號,但在輸入時必須輸入這些字符,以保證匹配。所以逗號必須輸入。
6[單選題] 以下四個程序中,完全正確的是( )。
ABCD參考答案:B
參考解析:C語言中注釋語句的注釋方法是:/*注釋內(nèi)容*/或//注釋一行。所以A與C錯誤,D選項中預編譯命令indade前丟掉了”#”號。所以選擇B。
7[單選題] 算法的空間復雜度是指( )。
A.算法在執(zhí)行過程中所需要的計算機存儲空間
B.算法所處理的數(shù)據(jù)量
C.算法程序中的語句或指令條數(shù)
D.算法在執(zhí)行過程中所需要的臨時工作單元數(shù)
參考答案:A
參考解析:算法的空間復雜度是指算法在執(zhí)行過程中所需要的內(nèi)存空間。所以選擇A。
8[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.1,2,3,4,5,6,7,8,9,0,
B.2,1,4,3,6,5,8,7,0,9,
C.0,9,8,7,6,5,4,3,2,1,
D.0,1,2,3,4,5,6,7,8,9,
參考答案:A
參考解析:函數(shù)調用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實參的值傳送給形參而不能把形參的值反向地傳送給實參。因此在函致調用過程中,形參的值發(fā)生改變,而實參中的值不會變化,所以數(shù)組C中的元素的值并沒有變化,選擇A。
9[單選題] 若變量x,y已正確定義并賦值,以下符合C語言語法的表達式是( )。
A.x+1=y
B.++x,y=x- -
C.x=z+10=z+y
D.double(x)/10
參考答案:B
參考解析:A選項中不能將變量Y賦給表達式,C選項中錯誤與A選項一樣,D選項中強制類型轉換表達式應寫成(double)x/10。
10[單選題] 若有以下函數(shù)首部:
則下面針對此函數(shù)的函數(shù)聲明語句中正確的是( )。
ABCD參考答案:B
參考解析:函數(shù)聲明的一般形式為:“類型說明符被調函數(shù)名(類型形參,類型形參,……);"或"類型說明符被調函數(shù)名(類型,類型,……);”由于函數(shù)首部為int fun(double x[10],int * n),因此B選項正確。
11[單選題] 設有以下語句:
執(zhí)行后,c的值為( )。
A.7
B.9
C.8
D.6
參考答案:B
參考解析:b為2,二進制為00000010,執(zhí)行左移兩位操作后為00001000,然后與a 00000001做異或操作結果為00001001,即十進制的9。
12[單選題] 數(shù)據(jù)庫應用系統(tǒng)中的核心問題是( )。
A.數(shù)據(jù)庫設計
B.數(shù)據(jù)庫系統(tǒng)設計
C.數(shù)據(jù)庫維護
D.數(shù)據(jù)庫管理員培訓
參考答案:A
參考解析:數(shù)據(jù)庫應用系統(tǒng)中的核心問題是數(shù)據(jù)庫的設計。
13[單選題] 以下定義語句中正確的是( )。
ABCD參考答案:B
參考解析:A選項語句中b變量還沒有定義不能直接用于給a變量賦值。c選項語句中*b、* c表示的是一個實型變量的地址,不能再將&b賦值給指針型變量c。D選項語句中a=0.0后面應該為逗號,不能是分號。
14[單選題] 下列敘述中正確的是( )。
A.在switch語句中,不一定使用break語句
B.在switch語句中必須使用default
C.break語句必須與switch語句中的case配對使用
D.break語句只能用于switch語句
參考答案:A
參考解析:default語句在switch語句中可以省略,所以B錯誤;switch語句中并非每個case后都需要使用break語句,所以C錯誤;break語句還可以用于for等循環(huán)結構中,所以D錯誤。
15[單選題] 對于一個正常運行的C程序,以下敘述中正確的是( )。
A.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結束
B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結束
C.程序的執(zhí)行總是從main函數(shù)開始
D.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結束
參考答案:C
參考解析:任何一個c程序都是從主函數(shù)main開始,至主函數(shù)main結束,所以選擇c選項。
16[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.7
B.5
C.3
D.9
參考答案:C
參考解析:向switch語句塊傳送參數(shù)后,編譯器會先尋找匹配的case語句塊,找到后就執(zhí)行該語句塊,遇到break跳出;如果沒有匹配的語句塊,則執(zhí)行default語句塊。case與default沒有順序之分。所以第一次循環(huán)k的值為1,執(zhí)行c+=k,c的值為l,再執(zhí)行case 2后的語句c++,c的值為2,遇到break語句跳出循環(huán);第二次循環(huán)k的值為2,執(zhí)行case 2后面的語句c++,c的值為3,跳出循環(huán)。
17[單選題] 以下定義數(shù)組的語句中錯誤的是( )。
A.int num[][3]={{1,2},3,4,5,6};
B.int num[2][4]={{1,2},{3,4},{5,6}};
C.int num[]={1,2,3,4,5,6};
D.int hum[][4]={1,2,3,4,5,6};
參考答案:B
參考解析:B)選項中定義的數(shù)組為2行4列,而賦值時賦成了3行所以出錯。
18[單選題] 下列語句組中,正確的是( )。
ABCD參考答案:A
參考解析:字符型指針變量可以用選項A的賦值方法:char*s;s="Olympic",選項C的寫法:char*s,s={"Olympic"};是錯誤的。字符數(shù)組可以在定義的時候初始化:char s[]={"Olympic"};?或者char s[]="Olympic",都是正確的。但是不可以在定義字符數(shù)組后,對數(shù)組名賦值。(數(shù)組名是常量,代表數(shù)組首地址)所以選項B和選項D都是錯誤的。對于本例,選項B、D中字符數(shù)組8的大小至少為8,才能存放下字符串。(字符串的末尾都有結束標識‘\0’)。
19[單選題] 以下關于typedef的敘述錯誤的是( )。
A.用typedef可以增加新類型
B.typedef只是將已存在的類型用一個新的名字來代替
C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名
D.用typedef為類型說明一個新名,通?梢栽黾映绦虻目勺x性
參考答案:A
參考解析:typedef并不是增加了新類型,而是用一個新名字替代已存在的類型,不能為變量說明一個新名,使用typedef可以增強程序的可移植性。所以A選項錯誤。
20[單選題] 在E-R圖中,用來表示實體聯(lián)系的圖形是( )。
A.橢圓形
B.矩形
C.菱形
D.三角形
參考答案:C
參考解析:在E-R圖中實體集用矩形,屬性用橢圓,聯(lián)系用菱形。
21[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.Zhao,m,85,90,Qian,f,95,92
B.Zhao,m,85,90,Zha0,m,85,90
C.Qian,f,95,92,Qian,f,95,92
D.Qian,f,95,92,Zha0,m,85,90
參考答案:A
參考解析:本題考查的是函數(shù)調用時的參數(shù)傳遞問題。程序在調用函數(shù)f時,傳給函數(shù)f的參數(shù)只是結構變量c在棧中的一個拷貝,函數(shù)f所做所有操作只是針對這個數(shù)據(jù)拷貝進行的修改,這些都不會影響變量c的值。
22[單選題] 耦合性和內(nèi)聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是( )。
A.提高耦合性降低內(nèi)聚性有利于提高模塊的獨立性
B.降低耦合性提高內(nèi)聚性有利于提高模塊的獨立性
C.耦合性是指一個模塊內(nèi)部各個元素間彼此結合的緊密程度
D.內(nèi)聚性是指模塊問互相連接的緊密程度
參考答案:B
參考解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟件設計,應盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性,所以A錯誤,B正確。耦合性是模塊間互相連接的緊密程度的度量而內(nèi)聚性是指一個模塊內(nèi)部各個元素問彼此結合的緊密程度,所以C與D錯誤。
23[單選題] 以下不能輸出字符A的語句是( )。(注:字符A的ASCII碼值為65,字符a的ASCII碼值為97)
ABCD參考答案:B
參考解析:B選項輸出的格式為%d,即為整型格式,所以輸出字符A的ASCII碼值65,而不是字符A。由于大寫字母比與其對應的小寫字母的ASCII碼值小32,所以A正確。字符A的ASCII碼值就是65,所以以%c格式輸出可以輸出字符A,所以C正確。由于字符A的ASCII碼值比字符B的小1,所以D正確。
24[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.120
B.11
C.6
D.21
參考答案:D
參考解析:fun函數(shù)中的變量x為靜態(tài)局部變量,占用固定的內(nèi)存單元,下一次調用時仍可以保留上次調用時的值。也就是說,如果多次調用fun函數(shù),s的定義只在第一次調用時有效,從第二次調用開始,X的定義相當于不存在,直接使用上次x的值。fun函數(shù)被調用了5次,每次調用后的返回值累加到s上。5次調用后,x的值為6,s的值為1+2+3+4+5+6=21。因此D選項正確。
25[單選題] 軟件設計中劃分模塊的一個準則是( )。
A.低內(nèi)聚低耦合
B.高內(nèi)聚低耦合
C.低內(nèi)聚高耦合
D.高內(nèi)聚高耦合
參考答案:B
參考解析:一般較優(yōu)秀的軟件設計,應盡量做到高內(nèi)聚,低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性。
26[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.2,3,1,6,8.7,5,4,10,9,
B.10,9,8,7,6,5,4,3,2,1,
C.1,2,3,4,5,6,7,8,9,10,
D.10,9,8,7,6,1,2,3,4,5,
參考答案:C
參考解析:本題的子函數(shù)f的功能是對結構體變量8中第二個成員數(shù)組中所有的數(shù)據(jù)進行從小到大的冒泡排序,所以結果是C。
27[單選題] 有三個關系R、S和T如下:
其中關系T由關系R和S通過某種操作得到,該操作為( )。
A.選擇
B.投影
C.交
D.并
參考答案:D
參考解析:關系T中包含了關系R與S中的所有元組,所以進行的是并的運算。
28[單選題] 有以下程序:
程序執(zhí)行后的輸出結果是( )。
A.20
B.25
C.45
D.36
參考答案:B
參考解析:統(tǒng)計1~9九個數(shù)中的奇數(shù)和,此題考察指向數(shù)組的指針。C語言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個元素的地址。因此*(t+i)代表數(shù)組的第i+1個元素。程序運行的結果是l+3+5+7+9=25。
29[單選題] 下列數(shù)據(jù)結構中,能夠按照“先進后出”原則存取數(shù)據(jù)的是( )。
A.循環(huán)隊列
B.棧
C.隊列
D.二叉樹
參考答案:B
參考解析:棧是按先進后出的原則組織數(shù)據(jù)的。隊列是先進先出的原則組織數(shù)據(jù)。
30[單選題] 以下敘述中錯誤的是( )。
A.gets函數(shù)用于從終端讀入字符串
B.getchar函數(shù)用于從磁盤文件讀入字符
C.fput,函數(shù)用于把字符串輸出到文件
D.fwrite函數(shù)用于以二進制形式輸出數(shù)據(jù)到文件
參考答案:B
參考解析:本題考查字符處理函數(shù)和文件操作函數(shù),屬于基礎知識,其中B選項getehar函數(shù)是用于從終端讀入一個字符。
31[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.33
B.197
C.143
D.28
參考答案:C
參考解析:本題考查帶參數(shù)的宏定義,s為帶參數(shù)的宏定義,運行S(k+j)為4*(k+j)*k+j+1=143,選項C正確。
32[單選題] 以下選項中能表示合法常量的是( )。
A.1,200
B.1.5E2.0
C.'\'
D."\007"
參考答案:D
參考解析:A選項中整型常量應表示為1200,不能包含“,”。B選項中E后面的指數(shù)必須為整數(shù)。C選項中轉義字符以“\”開始,若要表示字符“\”,應寫為“\\”。
33[單選題] 設有如下函數(shù)定義:
若執(zhí)行調用語句“n=fun(3);”,則函數(shù)fun總共被調用的次數(shù)是( )。
A.2
B.3
C.4
D.5
參考答案:B
參考解析:首先n=fun(3),3被當作參數(shù)傳遞進去,這就進行了一次調用,3被當作參數(shù)傳進去后,程序會執(zhí)行這句else returnfun(k-1)+1;這就調用了第二次,而參數(shù)是3-l也就是2。2被當作參數(shù)傳進去后,程序會執(zhí)行這句elsereturn fun(k-1)+1;這就調用了第三次,而參數(shù)是2-1也就是1。1被當作參數(shù)傳進去后,程序會執(zhí)行這句else if(k==1)return 1;不再遞歸調用,所以最終結果為3次。
34[單選題] 若有定義語句:
char s[10]="1234567\0\0";
則strlen(S)的值是( )。
A.7
B.8
C.9
D.10
參考答案:A
參考解析:strlen()函數(shù)在計算字符串長度時,遇到結束標識為止,且長度不包括結束標識。本題中字符串,從第一個字符開始,遇到第一個結束標識‘\0’為止,注意‘\0’不占字符串長度,所以字符串長度為7。因此A選項正確。
35[單選題] C源程序中不能表示的數(shù)制是( )。
A.十六進制
B.八進制
C.十進制
D.二進制
參考答案:D
參考解析:在C語言中整型常量可以用十進制、八進制和十六進制等形式表示,但不包括二進制,所以選擇D。
36[單選題] 若有以下定義:
則對x數(shù)組元素的正確引用是( )。
A.pt+3
B.*&x[10]
C.*(pt+10)
D.*(x+3)
參考答案:D
參考解析:沒有A選項的引用形式。*與&放在一起作用抵消,所以B選項錯誤,最大只能引用到x[9]。*(pt+i)表示引用指針pt所指元素后的第i個元素,所以c選項錯誤,最大只能為*(pt+9)。因此D選項正確。
37[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.A B E F
B.C D E F
C.A B C D
D.C D A B
參考答案:B
參考解析:本題考察的是變量的作用范圍。如果在同一個源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量被“屏蔽”,即不起作用。本題中,在funl()和main()函數(shù)內(nèi)訪問的是全局變量a和b,在fun2()函數(shù)中訪問的是形參變量a和b。所以,main()函數(shù)中的printf()函數(shù)輸出的是在fun1()函數(shù)中被改變的全局變量a和b的值C、D,而fun2()函數(shù)中輸出的是傳遞給它的實參值E、F。因此B選項正確。
38[單選題] 有以下程序:
若運行時輸入:246<回車>,則輸出結果為( )。
A.204
B.200
C.240
D.246
參考答案:A
參考解析:奉題中輸入的3個數(shù)據(jù)2,4,6分別賦值給了x[0][0],x[1][0],x[2][0]。x[0][1]仍為初始時的0,所以打印輸出時的結果為A選項。
39[單選題] 設有定義:
int a=1,b=2,e=3;
以下語句中執(zhí)行效果與其他三個不同的是( )。
A.if(a>b) c=a,a=b,b=c;
B.if(a>b) {e=a,a=b,b=e;}
C.if(a>b)e=a;a=b;b=C;
D.if(a>b) {c-7-a;a=b;b=e;}
參考答案:C
參考解析:由于a小于b,所以所有選項中的條件都為假,c選項中實際執(zhí)行了a=b;b=c;兩個操作。而A、B、D選項由于條件不成立.所以什么也沒有做,所以選擇C選項。
40[單選題] 軟件按功能可以分為:應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是( )。
A.編譯程序
B.操作系統(tǒng)
C.教務管理系統(tǒng)
D.匯編程序
參考答案:C
參考解析:編譯軟件、操作系統(tǒng)、匯編程序都屬于系統(tǒng)軟件,只有C教務管理系統(tǒng)才是應用軟件。
二、程序填空題(共18分)
41[填空題]
下列給定程序中,函數(shù)fun的功能是進行數(shù)字字符轉換。若形參ch中是數(shù)字字符‘0’~‘9’,則將‘0’轉換成‘9’,‘1’轉換成‘8’,‘2’轉換成‘7’,……,‘9’轉換成‘0’;若是其他字符則保持不變;并將轉換后的結果作為函數(shù)值返回。
請在程序的下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結果。
注意:部分源程序在文件BLANKl.C中。
不得增行或刪行,也不得更改程序的結構!
參考解析:【參考答案】 (1)char
(2)eh<='9'
(3)'0'
【考點分析】
本題考查:函數(shù)定義,注意函數(shù)定義的一般形式以及有參函數(shù)和無參函數(shù)的區(qū)別;if語句條件表達式,本題的條件表達式是判斷數(shù)字字符;函數(shù)返回值,其一般形式為“return表達式;”。
【解題思路】
填空l:函數(shù)定義時,類型標識符指明了本函數(shù)的類型,函數(shù)的類型實際上是函數(shù)返回值的類型,所以此處應該填char。
填空2:通過if條件語句判斷字符串中字符是否是數(shù)字字符,既大于等于字符‘0’,同時小于等于字符‘9’。
填空3:return語句完成函數(shù)返回操作,要實現(xiàn)字符轉換,應填入return'9'-(ch-'0')。
【解題寶典】
有參函數(shù)定義,其一般形式為:類型標識符函數(shù)名(形式參數(shù)表列)
{聲明部分
語句
在形參表中給出的參數(shù)稱為形式參數(shù),它們可以是各種類型的變量,各參數(shù)之間用逗號間隔。在進行函數(shù)調用時,主調函數(shù)將賦予這些形式參數(shù)實際的值。形參既然是變量,必須在形參列表中給出類型說明。
三、程序修改題(共18分)
42[簡答題]
下列給定程序中,函數(shù)fun的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼值升序排序后輸出。例如,若輸入“edcba”,則應輸出“abcde”。
請改正程序中的錯誤,使它能得出正確的結果。
注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!
試題程序:
參考解析:【參考答案】
【解題思路】
(1)本題是利用選擇法對數(shù)組元素進行比較排序。所謂選擇法,是依次用當前取得的元素和其后面的元素進行比較,在第一個元素和其后面的元素順次比較時,可以借助中間變量來對兩個數(shù)進行交換,要保證第一個元素始終存放數(shù)組中的最大數(shù),以后依次挑選出次大數(shù),這樣最終的數(shù)組就是有序的。strlen函數(shù)所求得的字符串長度包括字符串結束符,所以要減1。
(2)這里是一個分析邏輯錯誤,題中要求按升序排序,所以應改為
四、程序設計題(共24分)
43[簡答題]
m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun,它的功能是:將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分數(shù)放在below所指的數(shù)組中。
例如,當score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、印、70、80、90時,函數(shù)返回的人數(shù)應該是4,below中的數(shù)據(jù)應為10、20、30、40。
注意:部分源程序在文件PROG1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
試題程序:
參考解析:【參考答案】
【解題思路】
要計算低于平均分的人數(shù),首先應該求出平均分,然后通過for循環(huán)語句和if條件語句找出低于平均分的分數(shù)。該題第1個循環(huán)的作用是求出平均分av,第2個循環(huán)的作用是找出低于平均分的成績記錄并存入below數(shù)組中。
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關推薦:
2018全國計算機等級考試備考經(jīng)驗及應試技巧匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |