點(diǎn)擊查看:2015年計(jì)算機(jī)二級(jí)考試C++過(guò)關(guān)練習(xí)題及答案匯總
1[判斷題]常數(shù)據(jù)成員在常成員函數(shù)中的值是不允許改變的,而在非常成員函數(shù)中是允許改變的。
參考答案:錯(cuò)
2[單選題]有如下程序:
該程序段的輸出結(jié)果是 ( )。
A.987B.876C.8765D.9876
參考答案:B
參考解析:注意到n--的運(yùn)算順序,知道第一次輸出的應(yīng)是8,據(jù)此就可以很快排除A和D。然后判斷循環(huán)幾次結(jié)束,由于當(dāng)n-6時(shí),while的條件判斷已經(jīng)不成立了,直接跳過(guò)循環(huán)體結(jié)束程序了。故當(dāng)n=9,8,7時(shí)執(zhí)行了循環(huán)體,故答案為B。
3[單選題]
參考答案:A
4[單選題] 在公有派生情況下,有關(guān)派生類對(duì)象和基類對(duì)象的關(guān)系,下列敘述不正確的是( )。
A.派生類的對(duì)象可以賦給基類的對(duì)象
B.派生類的對(duì)象可以初始化基類的引用
C.派生類的對(duì)象可以直接訪問(wèn)基類中的成員
D.派生類的對(duì)象的地址可以賦給指向基類的指針
參考答案:C
參考解析:公有繼承的派生類和基類是子類型的關(guān)系,所謂子類型是類型間一般和特殊的關(guān)系,即派生類是基類的子類型或者說(shuō)基類的操作可以被用于操作派生類的對(duì)象。
5[單選題]
A.
B.
C.
D.
參考答案:B
6[單選題]下列關(guān)于線性鏈表的描述中,正確的是( )。
、瘛⒅缓幸粋(gè)指針域來(lái)存放下一個(gè)元素地址
、颉⒅羔樣蛑械闹羔樣糜谥赶蛟摻Y(jié)點(diǎn)的前一個(gè)或后一個(gè)結(jié)點(diǎn)(即前件或后件l
、蟆⒔Y(jié)點(diǎn)由兩部分組成:數(shù)據(jù)域和指針域。
A.僅Ⅰ、ⅡB.僅Ⅰ、ⅢC.僅Ⅱ、ⅢD.全部
參考答案:D
參考解析:在定義的鏈表中,若只含有一個(gè)指針域來(lái)存放下一個(gè)元素地址,稱這樣的鏈表為單鏈表或線性鏈表。
在鏈?zhǔn)酱鎯?chǔ)方式中,要求每個(gè)結(jié)點(diǎn)由兩部分組成:一部分用于存放數(shù)據(jù)元素值,稱為數(shù)據(jù)域;另一部分用于存放指針,稱為指針域。其中指針用于指向該結(jié)點(diǎn)的前一個(gè)或后一個(gè)結(jié)點(diǎn)(即前件或后件)。
7[單選題] 下列關(guān)于類和對(duì)象的敘述中,錯(cuò)誤的是( )。
A.一個(gè)類只能有一個(gè)對(duì)象
B.對(duì)象是類的具體實(shí)例
C.類是對(duì)某一類對(duì)象的抽象
D.類和對(duì)象的關(guān)系是一種數(shù)據(jù)類型與變量的關(guān)系
參考答案:A
參考解析:本題考查類和對(duì)象的概念。類是用戶定義的一種類型,程序員可以使用這個(gè)類型來(lái)說(shuō)明多個(gè)變量,即對(duì)象。
8[單選題] 下列有關(guān)類繼承的敘述中,錯(cuò)誤的是( )。
A.繼承可以實(shí)現(xiàn)軟件復(fù)用
B.虛基類可以解決由多繼承產(chǎn)生的二義性問(wèn)題
C.派生類構(gòu)造函數(shù)要負(fù)責(zé)調(diào)用基類的構(gòu)造函數(shù)
D.派生類沒(méi)有繼承基類的私有成員
參考答案:D
參考解析:本題考查類繼承。派生類繼承了基類的全部數(shù)據(jù)成員和私有成員,只是基類的私有成員在派生類中是隱藏的,只能在基類內(nèi)部訪問(wèn)。
9[簡(jiǎn)答題](1)應(yīng)改為“catch(char*s)”。
(2)應(yīng)改為“cateh(inti)”。
(3)應(yīng)改為“catch(…)”。
【解析】本題中第1個(gè)標(biāo)識(shí)前的異常拋出語(yǔ)句為“throw("error");”,其中的類型為字符串。所以對(duì)應(yīng)的異常捕捉語(yǔ)句catch中應(yīng)該符合這個(gè)類型,而程序中給出的語(yǔ)句“catch(chars)”是字符型的,所以第1處的語(yǔ)句修改為“catch(char*S)”。第2個(gè)標(biāo)識(shí)前的異常拋出語(yǔ)句為“throw((int)0);”,其中的類型為int。對(duì)應(yīng)的異常捕捉語(yǔ)句catch中應(yīng)該符合這個(gè)類型,所以補(bǔ)充catch子句中的類型,否則如果找不到匹配的catch塊,系統(tǒng)就會(huì)調(diào)用一個(gè)系統(tǒng)函數(shù),使程序終止運(yùn)行。即第2處的語(yǔ)句修改為“catch(inti)”。如果在catch子句中沒(méi)有指定異常信息的類型,那么就用刪節(jié)號(hào)“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。
參考解析:使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正錯(cuò)誤,使程序正常運(yùn)行,并且要求最后一個(gè)catch必須拋出執(zhí)行的任何異常。
程序異常,輸出信息為
error
O
ERROR
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。
試題程序:
#include
intmain()
{
try
{
throw("error");
}
//********error********
catch(chars)
{
cout<
}
try
{
throw((int)0);
}
//********error********
catch()
{
cout<
}
try
{
throw(O);
throw("error");
}
//********error********
catch()
{
cout<<"ERROR"<
}
return0;
}
10[簡(jiǎn)答題]使用VC++6.0打開(kāi)考生文件夾下的源程序文件2.cpp。請(qǐng)完成以下兩個(gè)函數(shù)。
(1)funl(intn)求出n的階乘,必須使用遞歸調(diào)用。
(2)fun2(intn)求出n的階乘,不能使用遞歸調(diào)用。如果n小于1則返回0。
注意:不能修改函數(shù)的其他部分。
試題程序:
#include
//必須使用遞歸
intfunl(intn)
{
}
//不能使用遞歸
intfun2(intn)
{
}
voidmain()
{
inti;
cout<<"請(qǐng)輸入一個(gè)整數(shù):"<
cin>>i;
cout<<"輸入數(shù)字的階乘是:"<
cout<<"輸入數(shù)字的階乘是:"<
return;
}%
參考解析:
//必須使用遞歸
jntfunl(intn)
{
if(n<=0)
return0;
if(n==1)
return1;
returnn*funl(n-1);
};
//不能使用遞歸
intfun2(intn)
{
if(n<=0)
retturn0;
intres=1:
for(inti=1;i<=n;i++)
{
res*=i;
}
returnres;
}
【解析】本題考查的是遞歸函數(shù)和階乘算法。遞歸的階乘算法可以通過(guò)判斷傳入?yún)?shù),如果大于1,則返回n*funl(n-1),意思是返回n乘以n-1的階乘;如果等于1,則返回1。這樣遞歸下去就能最終得出n的階乘。非遞歸算法可以先建立一個(gè)累乘變量,并初始化為1,然后循環(huán)遍歷1~n,將遍歷的數(shù)累乘到變量中即可。
相關(guān)推薦:
各地2015年9月計(jì)算機(jī)等級(jí)考試成績(jī)查詢?nèi)肟趨R總
2015年計(jì)算機(jī)二級(jí)考試《C++》高分突破試卷匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |