- 相關推薦
2015年計算機二級C++模擬試題及答案(五)
2015年3月全國計算機等級考試已經結束,9月份的考試現在也可以復習了,下面應屆畢業生網小編專門為你準備了計算機等級考試的模擬試題,供你考前練習:
一、選擇題
1.算法分析的目的是( )
A.找出數據結構的合理性
B.找出算法中輸入和輸出之間的關系
C.分析算法的易懂性和可靠性
D.分析算法的效率以求改進
【參考答案】D
2.在單鏈表中,增加頭結點的目的是( )
A.方便運算的實現
B.使單鏈表至少有一個結點
C.標識表結點中首結點的位置
D.說明單鏈表是線性表的鏈式存儲實現
【參考答案】A
3.軟件開發離不開系統環境資源的支持,其中必要的測試數據屬于( )
A. 硬件資源
B.通信資源
C. 支持軟件
D.輔助資源
【參考答案】D
4.分布式數據庫系統不具有的特點是( )
A.數據分布性和邏輯整體性
B.位置透明性和復制透明性
C.分布性
D.數據冗余
【參考答案】D
5.下列數據模型中,有堅實理論基礎的是( )
A. 層次模型
B.網狀模型
C. 關系模型
D.以上3個都是
【參考答案】C
6.棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是( )
A.ABCED
B.DCBEA
C.DBCEA
D.CDABE
【參考答案】B
7.在結構化程序設計思想提出之前,在程序設計中曾強調程序的效率。與程序的效率相比,人們更重視程序的( )
A. 安全性
B.一致性
C. 可理解性
D.合理性
【參考答案】C
8.軟件開發的結構化生命周期方法將軟件生命周期劃分成( )
A. 定義、開發、運行維護
B.設計階段、編程階段、測試階段
C. 總體設計、詳細設計、編程調試
D.需求分析、功能定義、系統設計
【參考答案】A
9.數據管理技術發展過程中,文件系統與數據庫系統的主要區別是數據庫系統具有( )
A.特定的數據模型
B.數據無冗余
C.數據可共享
D.專門的數據管理軟件
【參考答案】A
10.實體是信息世界中廣泛使用的一個術語,它用于表示( )
A.有生命的事物
B.無生命的事物
C.實際存在的事物
D.一切事物
【參考答案】C
11.下列關于C++語言類的描述錯誤的是( )
A.類用于描述事物的屬性和對事物的操作
B.類與類之間通過封裝而具有明確的獨立性
C.類與類之間必須是平等的關系,而不能組成層次結構
D.類與類之間可以通過一些方法進行通信和聯絡
【參考答案】C
12.以下敘述中正確的是( )
A.構成C++語言程序的基本單位是類
B.可以在一個函數中定義另一個函數
C.main()函數必須放在其他函數之前
D.所有被調用的函數一定要在調用之前進行定義
【參考答案】A
13.以下程序的輸出結果是( )
#include
void reverse(int a[],int n)
{ int i,t;
for(i=0;i
{ t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
void main()
{ int b[10]={1,2,3,4,5,6,7,8,9,10};int i,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
cout<
}
A.22
B.10
C.34
D.30
【參考答案】A
14.設有數組定義:char array[]=″China″;,則數組array所占的空間為( )
A.4個字節
B.5個字節
C.6個字節
D.7個字節
【參考答案】C
15.下面的哪個選項不能作為函數的返回類型?( )
A.void
B.int
C.new
D.long
【參考答案】C
16.下面程序輸出的結果是( )
#include
void main()
{ int i;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
cout<
}
A.1 5 9
B.7 5 3
C.3 5 7
D.5 9 1
【參考答案】B
17.下列描述中哪個是正確的?( )
A.私有派生的子類無法訪問父類的成員
B.類A的私有派生子類的派生類C無法初始化其祖先類A對象的屬性,因為類A的成員對類C是不可訪問的
C.私有派生類不能作為基類派生子類
D.私有派生類的所有子孫類將無法繼續繼承該類的成員
【參考答案】B
18.如果友元函數重載一個運算符時,其參數表中沒有任何參數是說明該運算符是( )
A.一元運算符
B.二元運算符
C.選項A和選項B都可能 來源:考試大網
D.重載錯誤
【參考答案】D
19.下列關于模板的說法正確的是( )
A.模板的實參在任何時候都可以省略
B.類模板與模板類所指的是同一概念
C.類模板的參數必須是虛擬類型的
D.類模板中的成員函數全部都是模板函數
【參考答案】D
20.下面程序段的運行結果是( )
void main()
{int t,a,b,c;
a=1;b=2;c=2;
while(a
{ t=a;a=b;b=t;c--;}
cout<
A.1,2,0
B.2,1,0
C.1,2,1
D.2,1,1
【參考答案】A
21.若定義int k=7,x=12;,則能使值為3的表達式是( )
A.x%=(k%=5)
B.x%=(k-k%5)
C.x&=k-k%5
D.(x%=k)-(k%=5)
【參考答案】D
22.有以下結構體說明和變量的定義,且指針p指向變量a,指針q指向變量b。則不能把結點b連接到結點a之后的語句是( )
struct node
{ char data;
struct node *next;
} a,b,*p=&a,*q=&b;
A.a.next=q;
B.p.next=&b;
C.p->next=&b;
D.(*p).next=q;
【參考答案】B
23.以下都是C++語言標識符的是( )
A.dsfa,df4,f$
B.huhj,a^,k2
C.3k,h,j_9
D._ok,jk,k8
【參考答案】D
24.設以下變量均為int類型,則值不等于7的表達式是( )
A.(x=y=6,x+y,x+1)
B.(x=y=6,x+y,y+1)
C.(x=6,x+1,y=6,x+y)
D.(y=6,y+1,x=y,x+1)
【參考答案】C
25.while和do-while循環的主要區別是( )
A.do-while的循環體至少無條件執行一次
B.while的循環控制條件比do-while的循環控制條件更 嚴格
C.do-while允許從外部轉到循環體內
D.do-while的循環體不能是復合語句
【參考答案】A
26.若二維數組a有m列,則計算任一元素a[i][j]在數組中相對位置的公式為(假設a[0][0]位于數組的第一個位置上)( )
A.i*m+j
B.j*m+i
C.i*m+j-1
D.i*m+j+1
【參考答案】A
27.下面敘述不正確的是( )
A.派生類一般都用公有派生
B.對基類成員的訪問必須是無兩義性的
C.賦值兼容則也適用于多重繼承的組合
D.基類的公有成員在派生類中仍然是公有的
【參考答案】D
28.關于友元的概念錯誤的是( )
A.友元函數沒有this指針
B.調用友元函數時必須在它的實參中給出要訪問的對象
C.一個類的成員函數也可以作為另一個類的友元函數
D.只能在類的公有段聲明友元
【參考答案】D
29.下面程序的結果是( )
#include
class test{ private:
int num;
public:
test();
int getint() {return num;}
~test();};
test::test()
{ num =0;}
test::~test()
{ cout<<″Destructor is active″<
void main()
{ test x[3];
cout<<″Exiting main″<
A.Exiting is actice
Destructor is active
Destructor is active
Destructor is active
B.Exiting main
Destructor is active
Destructor is active
C.Exiting main
Destructor is active
D.Exiting main
【參考答案】A
30.下列語句不能夠用于打開C根目錄下文件test.txt的語句是( )
A.ifstream fin;fin.open(″C:\\test.txt″);
B.ifstream fin(″C:\\test.txt″);
C.A和B
D.ifstream fin;fin(″C:\\test.txt″);
【參考答案】D
31.下列關于C++函數的描述中正確的是( )
A.主函數是程序的入口,它由用戶定義的函數調用
B.函數在調用之前必須先被聲明
C.每個用戶定義的函數只能被其他函數調用一次
D.函數是C++中面向對象程序設計框架的基本組成單元
【參考答案】B
32.下列程序的運行結果為( )
#include
class Location {
protected:
int X,Y;
public:
void SetX(int myx) {X=myx;}
void SetY(int myy) {Y=myy;}
void showxy() {cout<<″X=″<
class Rectangle:public Location{
private:
int H,W;
public:
void SetH(int myh) {H=myh;}
void SetW(int myw) {W=myw;}
void show() {cout<<″X=″<
?Y<<″ ″<<″H=″<
void main()
{ Rectangle r1;
r1.SetX(3);
r1.SetY(5);
r1.SetH(4);
r1.SetW(6);
r1.showxy();
r1.show();}
A.X=3 Y=5 X=3 Y=5 H=4 W=6
B.X=3 Y=5
X=3 Y=5 H=3 W=6
C.X=3 Y=5
D.X=3 Y=5X=3 Y=4 H=4 W=6
X=3 Y=3 H=4 W=6
【參考答案】A
33.有以下程序
#include
void main()
{ int a=5,b=0,c=0;
if(a=b+c)cout<<″***″<
else cout<<″$$$″<
下列選項敘述正確的是( )
A.有語法錯不能通過編譯
B.可以通過編譯但不能通過連接
C.輸出***
D.輸出$$$
【參考答案】D
34.以下程序中循環體總的執行次數是( )
int i,j;
for(i=6;i>1;i--)
for(j=0;j
{……}
A.20
B.261
C.15
D.25
【參考答案】A
35.下列程序的輸出結果是( )
#include
void main()
{ int a[3],i,j,k=2;
for(i=0;i<3;i++)a[i]=i;
for(i=0;i
for(j=0;j
a[j]=a[i];
cout<
A.2
B.3
C.1
D.0
【參考答案】A
二、填空題
1.將代數式
______________ 換成程序設計中的表達式為 【1】。
╱ X*X+Y*Y
Z= ╱ ----------
╲╱ a+b
【參考答案】
【1】SORT(x^2+y^2)/(a+b)
2.【2】是數據庫設計的核心。
【參考答案】
【2】數據模型
3.測試的目的是暴露錯誤,評價程序的可靠性;而【3】的目的是發現錯誤的位置并改正錯誤。
【參考答案】
【3】調試
4.在面向對象的設計中,用來請求對象執行某一處理或回答某些信息的要求稱為【4】。
【參考答案】
【4】消息
5.常用的黑箱測試有等價分類法、【5】、因果圖法和錯誤推測法4種。
【參考答案】
【5】邊值分析法
6.【6】是C++語言程序的入口。
【參考答案】
【6】main()函數
7.C++語言的基本控制結構為順序結構、選擇結構和【7】。
【參考答案】
【7】循環結構
8.函數重載要求重載的函數必須有和原函數一樣的【8】。
【參考答案】
【8】函數名
9.設置虛基類的目的是【9】,通過【10】表示虛基類。
【參考答案】
【9】解決二義性問題
【10】用關鍵字virtual
10. 語句cout<<′\n′還可表示為【11】。
【參考答案】
【11】cout<< p>
11.若已知a=10,b=20,則表達式!a< p>
【參考答案】
【12】1
12.友元類的所有成員函數都是另一個類的【13】。
【參考答案】
【13】友元函數
13.表達式x.operator++()還可寫成【14】。
【參考答案】
【14】++x
14.若要在C盤根目錄下作為二進制文件打開文件test.dat,則應該用的語句是:
【參考答案】
【15】ifstream fin(″C:\test.dat″,ios_binary);或ifstream fin;fin.open(c:\test.dat″,ios_bin
三、改錯題
使用VC6打開考生文件夾下的工程kt2_1,此工程包含一個源程序文件kt2_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使程序的輸出結果如下:
Vehiclemessage
Carmessage
Vehiclemessage
源程序文件kt2_1.cpp清單如下:
#include
classvehicle
{
intwheels;
floatweight;
public:
voidmessage(void){cout<<"Vehiclemessage\n";}
};
classcar:publicvehicle
{
intpassenger_load;
public:
voidmessage(void){cout>>"Carmessage\n";}
};
classtruck:publicvehicle
{
intpassenger_load;
floatpayload;
public:
intpassengers(void){returnpassenger_load;}
};
voidmain()
{
vehicle*unicycle;
unicycle=newvehicle;
unicycle.message();
deleteunicycle;
unicycle=newcar;
unicycle->message();
deleteunicycle;
unicycle=newtruck;
unicycle->message();
deleteunicycle;
}
【參考答案】
(1)將void message(void){ cout<<"Vehicle message\n";}
改為:virtual void message(void){ cout<<"Vehicle message\n";}
(2)將void message (void){cout>>"Car message\n";}
改為:void message (void){cout<<"Car message\n";}
(3)將unicycle.message();
改為:unicycle->message();
【試題解析】
(1)主要考查對虛函數使用規則的掌握,要實現對函數message的動態聯編應該使用虛函數,否則產生的是靜態聯編,調用的函數輸出結果就與要求不符;
(2)主要考查對流輸出操作的掌握,該處錯誤的使用了流輸入操作;
(3)主要考查對象和對象指針的概念,對象指針使用"->"調用成員函數,而對象使用"."調用成員函數。
四、簡單應用題
編寫類AA的成員函數intCompare(AAb),該函數用于比較*this與b的大小,若兩者含有元素的個數n相同,并且數組中前n個元素值對應相同,則認為兩者相等返回1,否則返回0。注意:用數組方式及for循環來實現該函數。輸出結果如下:
a=b
a<>c
注意:部分源程序已存在文件kt2_2.cpp中。
請勿修改主函數main和其他函數中的任何內容,僅在函數Compare的花括號中填寫若干語句。
文件kt2_2.cpp的內容如下:
#include
#include
classAA{
int*a;
intn;
intMS;
public:
voidInitAA(intaa[],intnn,intms)
{
if(nn>ms)
{\cout<<"Error!"<< p>
exit(1);}
MS=ms;
n=nn;
a=newint[MS];
for(inti=0;i< p>
}
intCompare(AAb);
};
intAA::Compare(AAb)
{
}
voidmain()
{AAa,b,c;
intx[]={1,2,3,4,5};
inty[]={1,2,3,6,7};
intz[]={1,2,5,7,9};
a.InitAA(x,3,5);
b.InitAA(y,3,5);
c.InitAA(z,3,5);
if(a.Compare(b))
cout<<"a=b"<< p>
else
cout<<"a<>b"<< p>
if(a.Compare(c))
cout<<"a=c"<< p>
else
cout<<"a<>c"<< p>
【參考答案】
int AA::Compare(AA b)
{if(n!=b.n) return 0;
for(int i=0; i<>
if(a[i]!=b.a[i]) return 0;
return 1;}
【試題解析】
本題考查應用for循環、if條件控制語句等基本控制結構解決實際問題的能力。
五.綜合應用題
使用VC6打開考生文件夾下的工程test17_3,此工程包含一個源程序文件kt2_3.cpp,其中定義了用于表示點的類Point和表示內容的類Text以及二者的派生類CircleWithText,但它們的定義并不完整。請按要求完成下列操作,將它們的定義補充完整。
(1)定義類Point的構造函數,請使用參數列表的形式將成員函數x和y分別初始化為參數x1和y1的值。請在注釋“//**1**”之后添加適當的語句。
(2)完成類Text的構造函數Text(char*str)的定義,將char型的str指向的內容賦值給text并且輸出str所指向的內容,請在注釋“//**2**”之后添加適當的語句。
(3)定義類CircleWithText的構造函數CircleWithText(intcx,intcy,char*msg),int型的cx和cy用于賦值給x和y,char型的指針*msg用于賦值給text,請在注釋“//**3**”之后添加適當的語句。
輸出結果如下:
Point:34
hello
注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。
源程序如下:
#include
#include
classPoint
{intx,y;
public:
//**1**
{cout<<"Point:"<<<''<<<'\N';}< p>
~Point(){}};
classText
{chartext[100];
public:
Text(char*str)
{//**2**}
~Text(){}};
classCircleWithText:publicPoint,publicText
{public:
//**3**
{}
~CircleWithText(){}};
voidmain()
{CircleWithTextcm(3,4,"hello");}
【參考答案】
(1)Point(int x1=0, int y1=0) :x(x1), y(y1)
(2)strcpy(text,str);
cout<<<"\N";< p>
(3)CircleWithText(int cx,int cy, char *msg):Point(cx,cy),Text(msg)
【試題解析】
本題主要考查考生對于多繼承中類的定義和派生類構造函數的定義的掌握。注意學會使用參數列表的形式定義派生類的構造函數,在列表中的格式是基類名1(向基類傳遞的參數列表),基類名2(向基類傳遞的參數列表)。
【計算機二級C++模擬試題及答案五】相關文章:
計算機二級C++模擬試題及答案09-22
計算機二級C++模擬題及答案05-12
計算機二級模擬試題及答案08-12
2017計算機二級C++模擬題及答案06-22
計算機二級《VB》模擬試題及答案11-01
計算機二級模擬試題含答案10-23
全國計算機二級《C++》上機試題及答案08-15
計算機二級C語言模擬試題及答案07-04