點擊查看:2018年3月計算機二級C++過關練習題及答案匯總
1[判斷題]C++語言比C語言對數(shù)據(jù)類型要求更加嚴格了。
參考答案:對
2[簡答題] 為單鏈表類模板增加一個復制構造函數(shù)和賦值運算符(=)。在上題基礎上,List類增加一個復制構造函數(shù)和賦值運算符(=)。
參考解析:
templateList::List(List& l){
head=new Node(-9999);//現(xiàn)建立頭結點
Node* tempP=l.head->link,*tempC;
while(tempP!=NULL){
tempC=CreatNode(tempP->info);
InsertAfter(tempC);
tempP=tempP->link;
}
}
templateList& List::operator=(List& l){
MakeEmpty();//先釋放原來鏈表的數(shù)據(jù)結點
Node* tempP=l.head->link,*tempC;
while(tempP!=NULL){
tempC=CreatNode(tempP->info);
InsertAfter(tempC);
tempP=tempP->link;
}
return *this;
}
int main(){
Node * P1;
List list1,list2;
int a[10]={20,12,0,-5,9,-18,6,11,5,3},i,j;
for(i=0;i<10;i++){
P1=list1.CreatNode(a[i]);
list1.InsertOrder(P1);
}
list1.PrintList();
cout<<"請輸入一個要求刪除的整數(shù)"<
cin>>j;
P1=list1.Find(j);
if(P1!=NULL){
P1=list1.DeleteNode(P1);
delete P1;
list1.PrintList();
}
else cout<<"未找到"<
cout<<"請輸入一個要求插入的整數(shù)"<
cin>>j;
P1=list1.CreatNode(j);
list1.InsertOrder(P1);
list1.PrintList();
list2=list1;
list2.PrintList();
List list3=list1;
list3.PrintList();
cout<<"請輸入一個要求刪除的整數(shù)"<
cin>>j;
P1=list1.Find(j);
if(P1!=NULL){
P1=list1.DeleteNode(P1);
delete P1;
list1.PrintList();
}
else cout<<"未找到"<
list2=list3=list1;
list2.PrintList();
list3.PrintList();
list1.MakeEmpty();//清空list1
list2.MakeEmpty();//清空list1
list3.MakeEmpty();//清空list1
return 0;
}
3[單選題]一個工作人員可以使用多臺計算機,而一臺計算機可被多個人使用,則實體工作人員與實體計算機之間的聯(lián)系是:
A.一對一B.一對多C.多對多D.多對一
參考答案:C
4[單選題] 下列敘述中正確的是( )。
A.在棧中,棧中元素隨棧底指針與棧頂指針的變化而動態(tài)變化
B.在棧中,棧頂指針不變,棧中元素隨棧底指針的變化而動態(tài)變化
C.在棧中,棧底指針不變,棧中元素隨棧頂指針的變化而動態(tài)變化
D.以上說法都不正確
參考答案:C
參考解析:棧是先進后出的數(shù)據(jù)結構,在整個過程中,棧底指針不變,入棧與出棧操作均由棧頂指針的變化來操作,所以選擇c。
5[單選題]下列敘述中正確的是 ( )。
A.線性表是線性結構
B.棧與隊列是非線性結構
C.線性鏈表是非線性結構
D.二叉樹是線性結構
參考答案:A
參考解析:線性表是線性結構;線性鏈表是線性表的鏈式存儲結構,因此也是線性結構;棧與隊列 是特殊的線性表,因此也是線性結構;二叉樹是非線性結構。
6[單選題]
A.0B.1C.2D.3
參考答案:B
參考解析:此題實際考查的是變量作用域的屏蔽效應。在C++中,當標識符的作用域發(fā)生重疊時,在一個函數(shù)中聲明的標識符可以屏蔽函數(shù)外聲明的標識符或全局標識符。聲明類A的全局對象時,構造函數(shù)首先調用int函數(shù),但由于靜態(tài)成員變量a被構造函數(shù)內部的形參a所屏蔽所以a++改變的是形參a的值,對靜態(tài)成員變量a沒有影響。
7[單選題]在下面的4個關鍵字中用來說明虛函數(shù)的是( )。
A.virtualB.publicC.protectedD.private
參考答案:A
參考解析:C++中用virtual關鍵字聲明虛函數(shù)。而public、protected、private為成員訪問限定符。
8[單選題]
參考答案:B
9[單選題]有如下程序:
#include
usingnamespacestd;
classBase{
public:
Base(intx=O){cout<
};
classDerived:publicBase{
public:
Derived(intx=O){cout<
private:
Baseval;
};
intmain(){
Derivedd(1);
return0;
}
程序執(zhí)行后的輸出結果是( )。
A.100B.000C.010D.001
參考答案:D
參考解析:本題考查的知識點是豢的構造。建立一個類的對象時,構造函數(shù)的執(zhí)行順序如下:①執(zhí)行基類的構造函數(shù),調用順序按照各個基類被繼承時聲明的順序(自左向右);②執(zhí)行成員對象的構造函數(shù),調用順序按照各個成員對象在類中聲明的順序(自上而下);③執(zhí)行自身的構造函數(shù)。本題Derived類繼承于Base類,所以首先會構造基類Base,但Derived類的構造函數(shù)沒有初始化列表,所以將調用Base類的默認構造函數(shù),輸出一個0。接下來由于它的成員中還定義了一個Base類的對象,兩構造函數(shù)也沒有顯示初始化這個對象,所以再次調用Base類的默認構造函數(shù)輸出一個0。最后構造自身,因為主函數(shù)中傳入了構造參數(shù)1,所以構造自身時輸出了一個1。故最終輸出結果為001。
10[單選題] 若已定義:
inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數(shù)組元素不正確的引用是( )。
A.a[p-a]B.*(&a[i])C.p[i]D.a[10]
參考答案:D
參考解析:通常,引用一個數(shù)組元素可以用下標法,如a[p-a]形式,或指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出了數(shù)組范圍,數(shù)組的下標是從0開始的。
11[判斷題]使用class定義的類,其默認的訪問權限是公有的,使用struct定義的類,其默認的訪問權限是私有的。
參考答案:錯
12[單選題]需求分析階段的任務是( )。
A.軟件開發(fā)方法B.軟件開發(fā)工具C.軟件開發(fā)費用D.軟件系統(tǒng)功能
參考答案:D
參考解析:需求分析是軟件定義時期的最后一個階段,它的基本任務就是詳細調查現(xiàn)實世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在這些基礎上確定新系統(tǒng)的功能。
13[單選題]有如下程序段:
int *p, a=10, b=1;
p=&a;
a=*p+b;
執(zhí)行該程序段后,a的值是( )。
A.12B.11C.10D.編譯出錯
參考答案:B
14[單選題]在模塊化程序設計中,按功能劃分模塊的原則是( )。
A.各模塊的功能盡量單一,且各模塊之間的聯(lián)系盡量的少
B.各模塊的功能盡量單一,且各模塊之間的聯(lián)系盡量緊密
C.各模塊應包括盡量多的功能
D.各模塊應包括盡量多的輸入輸出操作
參考答案:A
參考解析:在模塊化程序設計中.按功能劃分模塊的原則是:要求各模塊的功能盡量單一,且各模塊之間的聯(lián)系盡量的少。
15[單選題] 數(shù)據(jù)庫設計的根本目標是要解決( )。
A.數(shù)據(jù)共享問題
B.數(shù)據(jù)安全問題
C.大量數(shù)據(jù)存儲問題
D.簡化數(shù)據(jù)維護
參考答案:A
參考解析:從數(shù)據(jù)庫的概念中可以看到,所謂數(shù)據(jù)庫是指長期存儲在計算機內的、有組織的、可共享的數(shù)據(jù)集合。因此進行數(shù)據(jù)庫設計的根本目標還是為了解決數(shù)據(jù)共享問題。
16[單選題]下列關于this指針的敘述中,正確的是( )
A.任何與類相關的函數(shù)都有this指針
B.類的成員函數(shù)都有this指針
C.類的友元函數(shù)都有this指針
D.類的非靜態(tài)成員函數(shù)才有this指針
參考答案:D
17[簡答題]使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,并使程序輸出的結果為:
sizeof(S1)=5
sizeof(s2)=10
sizeof(s3)=1
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結構,錯誤的語句在//******error******的下面。
(1)不能刪除assert()語句。
(2)只能修改后面的數(shù)字。
提示:assert函數(shù)如果為假,則會產生一個中斷異常。
試題程序:
#include
#include
voidmain()
{
char*s1="abc":
//********error********
assert(sizeof(s1)==3):
cout<<"sizeof(s1)=5"<
chars2[10]="ab":
//********error********
assert(sizeof(s2)==2);
cout<<"sizeof(s2)=10"<
chars3=23:
//********error********
assert(sizeof(s3)==4);
cout<<"sizeof(s3)=1"<
return;
}
參考解析:
(1)應改為“assert(sizeof(s1)==4);”。
(2)應改為“assert(sizeof(s2)==1O);”。
(3)應改為“assert(sizeof(s3)==1);”。
【解析】assert函數(shù)如果為假,則會產生一個中斷異常。所以要讓它正常執(zhí)行輸出結果,那么assert函數(shù)只有為真,才不會產生中斷異常。“assert(sizeof(s1)==3);”語句中“sizeof(s1)==3”為假,這會使程序產生異常,不能正常執(zhí)行。因為str1的值為abc,但是它還有一個尾符,它的長度應該是4,而不是3,所以在第1處修改為“assert(sizeof(s1)==4);”。str2[10]說明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。charstr3=23;語句說明23是字符,所占存儲空間為1,所以修改為“assert(sizeof(s3)==1);”。
18[填空題]數(shù)據(jù)模型分為格式化模型和非格式化模型,則關系模型屬于_______ 模型。
【答案】非格式化
【解析】數(shù)據(jù)模型分為格式化模型和非格式化模型,關系模型屬于非格式化模型。
19[填空題]繼承的方式有公有繼承、私有繼承和 【13】 3種。
參考解析:保護繼承
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |