2015年計算機二級C++模擬試題(二)

來源:文萃谷 2.97W

一、選擇題

2015年計算機二級C++模擬試題(二)

在下列各題的A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確的選項塗寫在答題卡相應位置上,答在試卷上不得分。

(1)循環鏈表的主要優點是

A)不再需要頭指針了

B)從表中任一結點出發都能訪問到整個鏈表

C)在進行插入、刪除運算時,能更好的保證鏈表不斷開

D)已知某個結點的位置後,能夠容易的找到它的直接前件

(2)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是

A)ABCED

B)DCBEA

C)DBCEA

D)CDABE

(3)n個頂點的強連通圖的邊數至少有

A)n-1

B)n(n-1)

C)n

D)n+1

(4)在結構化程序設計思想提出之前,在程序設計中曾強調程序的效率。與程序的效率相比,人們更重視程序的

A)安全性

B)一致性

C)可理解性

D)合理性

(5)模塊獨立性是軟件模塊化所提出的要求,衡量模塊獨立性的度量標準則是模塊的

A)抽象和信息隱蔽

B)局部化和封裝化

C)內聚性和耦合性

D)激活機制和控制方法

(6)軟件開發的結構化生命週期方法將軟件生命週期劃分成

A)定義、開發、運行維護

B)設計階段、編程階段、測試階段

C)總體設計、詳細設計、編程調試

D)需求分析、功能定義、系統設計

(7)在軟件工程中,白箱測試法可用於測試程序的內部結構。此方法將程序看做是

A)路徑的集合

B)循環的集合

C)目標的集合

D)地址的集合

(8)在數據管理技術發展過程中,文件系統與數據庫系統的主要區別是數據庫系統具有

A)特定的數據模型

B)數據無宂餘

C)數據可共享

D)專門的數據管理軟件

(9)數據庫設計包括兩個方面的設計內容,它們是

A)概念設計和邏輯設計

B)模式設計和內模式設計

C)內模式設計和物理設計

D)結構特性設計和行為特性設計

(10)實體是信息世界中廣泛使用的一個術語,它用於表示

A)有生命的事物

B)無生命的事物

C)實際存在的事物

D)一切事物

(11)以下都是C++語言標識符的是

A)dsfa,df4,f$

B)huhj,a^,k2

C)3k,h,j_9

D)_ok,jk,k8

(12)C++語言中用於定義類的關鍵字是

A)class

B)struct

C)default

D)sizeof

(13)設以下變量均為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)

(14)以下程序的輸出結果是

#include

void main()

{ int a=21,b=11;

cout << --a+b;}

A)30

B)31

C)32

D)33

(15)while 和do-while循環的主要區別是

A)do-while的循環體至少無條件執行一次

B)while的循環控制條件比do-while的循環控制條件更嚴格

C)do-while允許從外部轉到循環體內

D)do-while 的循環體不能是複合語句

(16)與 y=(x>0?1:x<0?-1:0);的功能相同的if語句是

A)if (x>0)y=1;

else if(x<0)y=-1;

else y=0;

B)if(x)

if(x>0)y=1;

else if(x<0)y=-1;

C)y=-1;

if(x)

if(x>0)y=1;

else if(x==0)y=0;

else y=-1;

D)y=0;

if(x>=0)

if(x>0)y=1;

else y=-1;

(17)若二維數組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

(18)下面程序段的運行結果是

#include

void main()

{ char *s="abcde";

s+=2;

cout << &s;}

A)cde

B)字符′c′

C)字符′c′的地址

D)無確定的輸出結果

(19)下面敍述不正確的是

A)派生類一般都用公有派生

B)對基類成員的訪問必須是無兩義性的

C)賦值兼容規則也適用於多重繼承的組合

D)基類的公有成員在派生類中仍然是公有的`

(20)下面程序應能對兩個整型變量的值進行交換。以下正確的説法是

#include

void swap(int p,int q)

{ int t;

t=p;

p=q;

q=t;}

void main()

{ int a=10,b=20;

cout << a << " " << b;

swap(&a,&b);

cout << a << " " << b;}

A)該程序完全正確

B)該程序有錯,只要將語句swap(&a,&b);中的參數改為a,b即可

C)該程序有錯,只要將swap()函數中的形參p和q以及t均定義為指針(執行語句不變)即可

D)以上説法都不對

(21)關於友元的概念錯誤的是

A)友元函數沒有this指針

B)調用友元函數時必須在它的實參中給出要訪問的對象

C)一個類的成員函數也可以作為另一個類的友元函數

D)只能在類的公有段聲明友元

(22)關於抽象類下面説法正確的是

A)抽象類就是其中有函數定義但沒有實現的類

B)抽象類是可以被實例化的

C)派生類不能成為抽象類

D)抽象類的子類必須實現父類中的純虛函數

(23)下面程序的結果是

#include

class test { private:

int num;

public:

test();

int getint(){return num;}

~test();};

test :: test()

{ num =0;}

test::~test()

{ cout<<"Destructor is active"< P>

{ test x[3];

cout<<"Exiting main"<>

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

(24)如果表達式--x+y中,--是作為成員函數重載的, +是作為成員函數重載的,則該表達式還可為

A)ator+(ator--(0))

B)ator+(ator--())

C)ator+(operator--(x,0))

D)operator+(ator--())

(25)下列語句不能夠用於打開C根目錄下文件的語句是

A)ifstream fin; ("C:");

B)ifstream fin("C:");

C)A)和B)

D)ifstream fin; fin("C:");

(26)以下哪個基類中的成員函數表示純虛函數?

A)virtual void vf (int)

B)void vf (int)=0

C)virtual void vf(=0)

D)virtual void yf(int){ }

(27)下面程序輸出的結果是

#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[i][i] << " ";}

A)1 5 9

B)7 5 3

C)3 5 7

D)5 9 1

(28)派生類繼承基類的方式有

A)public

B)private

C)protected

D)以上都對

(29)下列程序的運行結果為

#include

class Location {

protected:

int X, Y;

public:

void SetX(int myx){X=myx;}

void SetY(int myy){Y=myy;}

void showxy(){cout << "X=" << X << " " << "Y=" << Y <>

private:

int H, W;

public:

void SetH(int myh){H=myh;}

void SetW(int myw){W=myw;}

void show(){ cout << "X=" << X << " " << "Y=" << " " << Y << " " << "H=" << H << " " << "W=" << W << endl;}};

void main()

{ Rectangle r1;

(3);

(5);

(4);

(6);

xy();

();}

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

X=3 Y=4 H=4 W=6

D)X=3 Y=5

X=3 Y=3 H=4 W=6

(30)有以下程序

#include

void ss(char *s,char t)

{ while(*s)

{ if(*s==t)*s=t-′a′+′A′;

s++;}}

void main()

{ char str1[100]="abcddfefdbd",c=′d′;

ss(str1,c); cout << str1;}

程序運行後的輸出結果是

A)ABCDDEFEDBD

B)abcDDfefDbD

C)abcAAfefAbA

D)Abcddfefdb

31)有以下程序

#include

void main()

{ int a=5,b=0,c=0;

if(a=b+c)cout << "***"<< ?$$$?<下列選項敍述正確的是<>

A)有語法錯不能通過編譯

B)可以通過編譯但不能通過連接

C)輸出***

D)輸出$$$

(32)已知各變量的定義如下

int i=8,k,a,b;

unsigned long w=5;

double x=1.42,y=5.2;

則以下符合C++語言語法的表達式是

A)a+=a-=(b=4)*(a=3)

B)a=a*3+2

C)x%(-3)

D)y=float i

(33)以下程序中循環體總的執行次數是

int i,j;

for(i=6;i>1;i--)

for(j=0;j{……}

A)20

B)261

C)15

D)25

(34)對於下面的程序,説法正確的是

#include

void main()

{ int x=3,y=4,z=2;

if(x=y+z)cout << "x=y+z";

else cout << "x!=y+z";}

A)不能通過編譯

B)輸出6

C)輸出x!=y+z

D)輸出x=y+z

(35)下列程序的輸出結果是

#include

void main()

{ int a[3],i,j,k=2;

for(i=0;i<3;i++)a[i]=i;

for(i=0;ifor(j=0;ja[j]=a[i];

cout << a[2];}

A)2

B)3

C)1

D)0

二、填空題

請將每一個空的正確答案寫在答題卡序號的橫線上,答在試卷上不給分。

(1)常用的黑箱測試有等價分類法、 1 、因果圖法和錯誤推測法4種。

(2)測試的目的是暴露錯誤,評價程序的可靠性;而 2 的目的是發現錯誤的位置並改正錯誤。

(3)軟件維護活動包括以下幾類:改正性維護、適應性維護、 3 維護和預防性維護。

(4)在面向對象的設計中,用來請求對象執行某一處理或回答某些信息的要求稱為 4 。

(5)關鍵字ASC和DESC分別表示 5 的含義。

(6)C++語言中表示雙精度浮點數的關鍵字是 6 。

(7)執行下列語句後,c3中的值為 7

int c1=1,c2=2,c3;c3=1.0/c2*c1;

(8)若從鍵盤輸入70,則以下程序輸出的結果是 8 。

#include

void main()

{ int a;cin >> a;

if(a>50)cout << a;

if(a>40)cout << a;

if(a>30)cout << a;}

(9)以下程序的輸出結果是 9 。

#include

void main()

{ char s[]="abcdef";s[3]=′