2006上半年全國計算機二級C++筆試真題
一、選擇題((1)~(35)每小題2分,共70分) 下列各題A)、B)、C)、D)四個(gè)選項中,只有一個(gè)選項是正確的,請將正確選項涂寫(xiě)在答題卡相應位置上,答在試卷上不得分。

(1)下列選項不屬于結構化程序設計方法的是
A.自頂向下
B.逐步求精
C.模塊化
D.可復用
(2)兩個(gè)或兩個(gè)以上模塊之間關(guān)聯(lián)的緊密程度稱(chēng)為
A.耦合度
B.內聚度
C.復雜度
D.數據傳輸特性
(3)下列敘述中正確的是
A.軟件測試應該由程序開(kāi)發(fā)者來(lái)完成
B.程序經(jīng)調試后一般不需要再測試
C.軟件維護只包括對程序代碼的維護
D.以上三種說(shuō)法都不對
(4)按照“后進(jìn)先出”原則組織數據的數據結構是
A.隊列
B.棧
C.雙向鏈表
D.二叉樹(shù)
(5)下列敘述中正確的是
A.線(xiàn)性鏈表是線(xiàn)性表的鏈式存儲結構
B.棧與隊列是非線(xiàn)性結構
C.雙向鏈表是非線(xiàn)性結構
D.只有根結點(diǎn)的二叉樹(shù)是線(xiàn)性結構
(6)對如下二叉樹(shù),進(jìn)行后序遍歷的結果為
A.ABCDEF
B.DBEAFC
C.ABDECF
D.DEBFCA
(7)在深度為7的滿(mǎn)二叉樹(shù)中,葉子結點(diǎn)的個(gè)數為
A.32
B.31
C.64
D.63
(8)“商品”與“顧客”兩個(gè)實(shí)體集之間的聯(lián)系一般是
A.一對一
B.一對多
C.多對一
D.多對多
(9)在E-R圖中,用來(lái)表示實(shí)體的圖形是
A.矩形
B.橢圓形
C.菱形
D.三角形
(10)數據庫DB、數據庫系統DBS、數據庫管理系統DBMS之間的關(guān)系是
A.DB包含DBS和DBMS
B.DBMS包含DB和DBS
C.DBS包含DB和DBMS
D.沒(méi)有任何關(guān)系
(11)下列關(guān)于C++函數的說(shuō)明中,正確的是
A.內聯(lián)函數就是定義在另一個(gè)函數體內部的函數
B.函數體的最后一條語(yǔ)句必須是return語(yǔ)句
C.標準C++要求在調用一個(gè)函數之前,必須先聲明其原型
D.編譯器會(huì )根據函數的返回值類(lèi)型和參數表來(lái)區分函數的不同重載形式
(12)由于常對象不能被更新,因此
A.通過(guò)常對象只能調用它的常成員函數
B.通過(guò)常對象只能調用靜態(tài)成員函數
C.常對象的成員都是常成員
D.通過(guò)常對象可以調用任何不改變對象值的成員函數
(13)下列關(guān)于虛函數的說(shuō)明中,正確的是
A.從虛基類(lèi)繼承的函數都是虛函數
B.虛函數不得是靜態(tài)成員函數
C.只能通過(guò)指針或引用調用虛函數
D.抽象類(lèi)中的成員函數都是虛函數
(14)運算符重載是對已有的運算符賦予多重含義,因此
A.可以對基本類(lèi)型(如int類(lèi)型)的數據,重新定義“+”運算符的含義
B.可以改變一個(gè)已有運算符的優(yōu)先級和操作數個(gè)數
C.只能重載C++中已經(jīng)有的運算符,不能定義新運算符
D.C++中已經(jīng)有的所有運算符都可以重載
(15)模板對類(lèi)型的參數化提供了很好的支持,因此
A.類(lèi)模板的主要作用是生成抽象類(lèi)
B.類(lèi)模板實(shí)例化時(shí),編譯器將根據給出的模板實(shí)參生成一個(gè)類(lèi)
C.在類(lèi)模板中的數據成員都具有同樣類(lèi)型
D.類(lèi)模板中的成員函數都沒(méi)有返回值
(16)下列關(guān)于C++流的說(shuō)明中,正確的是
A.與鍵盤(pán)、屏幕、打印機和通信端口的交互都可以通過(guò)流類(lèi)來(lái)實(shí)現
B.從流中獲取數據的操作稱(chēng)為插入操作,向流中添加數據的操作稱(chēng)為提取操作
C.cin是一個(gè)預定義的輸入流類(lèi)
D.輸出流有一個(gè)名為open的成員函數,其作用是生成一個(gè)新的流對象
(17)下列符號中可以用作C++標識符的是
A._radius
B.foo~bar
C.else
D.3room
(18)下列語(yǔ)句中,錯誤的是
A.const int buffer=256;
B.const int temp;
C.const double *point;
D.const double *rt =new double(5.5);
(19)有如下程序:
int x=3;
do{
x -= 2;
cout<
}while(!(--x));
執行這個(gè)程序的輸出結果是
A. 1
B.3 0
C. l-2
D.死循環(huán)
(20)有如下程序:
#include
using namespace std;
int main()
{
int *p;
*p = 9;
cout<<"The value at p:"<<*p;
return 0;
}
編譯運行程序將出現的情況是
A.夠編譯時(shí)出現語(yǔ)法錯誤,不能生成可執行文件
B.運行時(shí)一定輸出:The value at p: 9
C.運行時(shí)一定輸出:The value at p: *9
D.運行時(shí)有可能出錯
(21)有如下程序:
#include
using namespace std;
int main()
{
void function(double val);
double val;
function(val);
cout<
return 0;
}
void function(double val)
{
val = 3;
}
編譯運行這個(gè)程序將出現的情況是
A.編譯出錯,無(wú)法運行
B.輸出:3
C.輸出:3.0
D.輸出一個(gè)不確定的數
(22)有如下類(lèi)定義:
class AA
{
int a;
public:
int getRef() const{return &a;} /pic/p>
int getvalue() const{return a;} /pic/p>
void set(int n) const{a=n;} /pic/p>
friend void show(AA aa) const {cout< /pic/p>
};
其中的四個(gè)函數定義中正確的是
A.①
B.②
C.③
D.④
(23)有如下程序:
#include +
using namespace std;
#include
using namespace std;
class Base
{
public:
void fun(){cout<<"Base::fun"<
};
class Derived:public Base
{
public:
void fun()
{
cout<<"Derived::fun"<
}
};
int main()
{
Derived d;
d.fun();
return 0;
}
已知其執行后的輸出結果為:
Base::fun
Derived::fun
則程序中下劃線(xiàn)處應填入的語(yǔ)句是
A.Base.fun();
B.Base::fun()
C.Base->fun()
D.fun();
(24)下面是重載為非成員函數的運算符函數原型,其中錯誤的是
A.Fraction operator + (Fraction, Fraction);
B.Fraction operator - (Fraction);
C.Fraction& operator = (Fraction&, Fraction);
D.Fraction& operator += (Fraction&, Fraction);
(25)有如下函數模板:
template
T cast(U u){return u;}
其功能是將U類(lèi)型數據轉換為T(mén)類(lèi)型數據。已知i為int型變量,下列對模板函數cast的調用中正確的是
A.cast(i);
B.cast<>(i);
C.cast(i);
D.cast (i);
(26)若磁盤(pán)上已存在某個(gè)文本文件,其全路徑文件名為d:\ncre\test.txt,下列語(yǔ)句中不 能打開(kāi)該文件的是
A.ifstream file("d:\ncre\test.txt");
B.ifstream file("d:\ncre\test.txt");
C.ifstream file; file.open("d:\ncre\test.txt");
D.ifstream* pFile=new ifstream("d:\ncre\test.txt");
(27)有如下類(lèi)定義:
class Foo
{
public:
Foo(int v):value(v){} /pic/p>
~Foo(){} /pic/p>
private:
Foo(){} /pic/p>
int value = 0; /pic/p>
};
其中存在語(yǔ)法錯誤的行是
A.①
B.②
C.③
D.④
(28)有如下類(lèi)定義:
class Point
{
int x_, y_;
public:
Point():x_(0), y_(0){}
Point(int x, int y = 0):x_(x),y_(y){}
};
若執行語(yǔ)句
Point a(2), b[3], *c[4];
則Point類(lèi)的構造函數被調用的次數是
A.2次
B.3次
C.4次
D.5次
(29)有如下類(lèi)定義:
class Test
{
public:
Test(){ a = 0; c = 0;} /pic/p>
int f(int a)const{this->a = a;} /pic/p>
static int g(){return a;} /pic/p>
void h(int
B.{Test::b = b;}; /pic/p>
private:
int a;
static int b;
const int c;
};
int Test::b = 0;
在標注號碼的行中,能被正確編譯的是
A.①
B.②
C.③
D.④
(30)有如下程序:
#include
using namespace std;
class A
{
public:
A(){cout<<"A";}
~A(){cout<<"~A";}
};
class B:public A
{
A* p;
public:
B(){cout<<"B"; p = new A();}
~B(){cout<<"~B"; delete p;}
};
int main()
{
B obj;
return 0;
}
執行這個(gè)程序的輸出結果是
A.BAA~A~B~A
B.ABA~B~A~A
C.BAA~B~A~A
D.ABA~A~B~A
(31)有如下程序:
#include
using namespace std;
class Base
{
private:
void funl() const{cout<<"funl";}
protected:
void fun2() const{cout<<"fun2";}
public:
void fun3() const{cout<<"fun3";}
};
class Derived:protected Base
{
public:
void fun4() const{cout<<"fun4";}
};
int main()
{
Derived obj;
obj.funl(); /pic/p>
obj.fun2(); /pic/p>
obj.fun3(); /pic/p>
obj.fun4(); /pic/p>
return 0;
}
其中有語(yǔ)法錯誤的語(yǔ)句是
A.①②③④
B.①②③
C.②③④
D.①④
(32)有如下程序:
#include
using namespace std;
class Base
{
public:
void funl(){cout<<"Base\n";}
virtual void fun2(){cout<<"Base\n";}
};
class Derived:public Base
{
public:
void funl(){cout<<"Derived\n";}
void fun2(){cout<<"Derived\n";}
};
void f(Base &
B.{b.funl();b.fun2();}&, lt;, /P>
int main()
{
Derived obj;
f(obj);
return 0;
}
執行這個(gè)程序的輸出結果是
A.Base
B.Base
C.Derived
D.Derived
Base Derived Base Derived
(33)有如下程序:
#include
using namespace std;
class Complex
{
double re, im;
public:
Complex(double r, double i):re(r), im(i){}
double real() const{return re;}
double image() const{return im;}
Complex& operator +=(Complex a)
{
re += a.re;
im += a.im;
return *this;
}
};
ostream &operator<<(ostream& s,const Complex& z)
{
return s<<'('<
}
int main()
{
Complex x(1, -2), y(2, 3);
cout<<(x += y)<
return 0;
}
執行這個(gè)程序的輸出結果是
A.(1, -2)
B.(2, 3)
C.(3, 5)
D.(3, 1)
(34)有如下程序:
#include
#include
using namespace std;
int main()
{
cout.fill('*');
cout<
return 0;
}
執行這個(gè)程序的輸出結果是
A.123*OK
B.123*OK**
C.*123OK
D.*123**OK
(35)有如下類(lèi)聲明:
class SAMPLE
{
int n;
public:
SAMPLE (int i = 0): n(i){}
void setvalue(int n0);
};
下列關(guān)于setvalue成員函數的實(shí)現中,正確的是
A.SAMPLE::setvalue(int n0){n = n0;}
B.void SAMPLE::setvalue(int n0){n = n0;}
C.void setvalue(int n0){n = n0;}
D.setvalue(int n0){n = n0;}
二、填空題(每空2分,共30分)
請將每一個(gè)空的正確答案寫(xiě)在答題卡【1】~【15】序號的橫線(xiàn)上,答在試卷上不得分。
(1)對長(cháng)度為10的線(xiàn)性表進(jìn)行冒泡排序,最壞情況下需要比較的次數為 【1】 。
(2)在面向對象方法中, 【2】 描述的是具有相似屬性與操作的一組對象。
(3)在關(guān)系模型中,把數據看成是二維表,每一個(gè)二維表稱(chēng)為一個(gè) 【3】 。
(4)程序測試分為靜態(tài)分析和動(dòng)態(tài)測試。其中 【4】 是指不執行程序,而只是對程序 文本進(jìn)行檢查,通過(guò)閱讀和討論,分析和發(fā)現程序中的錯誤。
(5)數據獨立性分為邏輯獨立性與物理獨立性。當數據的存儲結構改變時(shí),其邏輯結構 可以不變,因此,基于邏輯結構的應用程序不必修改,稱(chēng)為 【5】 。
(6)有一種只在循環(huán)語(yǔ)句或switch語(yǔ)句中使用的流程控制語(yǔ)句,表示該語(yǔ)句的關(guān)鍵字是 【6】 。
(7)程序中有如下語(yǔ)句
for(int i = 0; i<5; i++)cout<<*(p + i)<<",";
能夠依次輸出int型一維數組DATA的前5個(gè)元素。由此可知,變量p的定義及初始 化語(yǔ)句是 【7】 。
(8)若下面程序運行時(shí)輸出結果為
1, A, 10.1
2, B, 3.5
請將程序補充完整。,
#include
using namespace std;
int main()
{
void test(int, char,double 【8】 );
test(1,'A',10.1);
test(2,'B');
return 0;
}
void test(int a, char b, double
C.
{
cout<
}
(9)有如下類(lèi)聲明:
class MyClass
{
int i;
private: int j;
protected:int k;
public:int m, n;
};
其中,私有成員的數量為 【9】 。
(10)有如下程序:
#include
using namespace std;
class Con
{
char ID;
public:
Con():ID('A'){cout<<1;}
Con(char I
D.:ID(I
D.{cout<<2;}
Con(Con&
C.:ID(c.getID()){cout<<3;}
char getID() const{return ID;}
};
void show(Con
C.{cout<
int main()
{
Con c1;
show(c1);
Con c2('B');
show(c2);
return 0;
}
執行上面程序的輸出是 【10】 。
(11)有如下程序:
#include
using namespace std;
class ONE
{
public:
virtual void f(){cout<<"l";}
};
class TWO:public ONE
{
public:
TWO(){cout<<"2";}
};
class THREE:public TWO
{
public:
virtual void f(){TWO::f(); cout<<"3";}
};
int main()
{
ONE aa, *p;
TWO bb;
THREE cc;
p = &cc;
p->f();
return 0;
}
執行上面程序的輸出是 【11】 。
(12)有如下程序:
#include
using namespace std;
class PARENT
{
public:
PARENT(){cout<<"PARENT";}
};
class SON:public PARENT
{
public:
SON(){cout<<"SON";}
};
int main()
{
SON son;
PARENT *p;
p = &son;
return 0;
}
執行上面程序的輸出是 【12】 。
(13)若以非成員函數形式,為類(lèi)Bounce重載“!”運算符,其操作結果為一bool型數據,則該運算符重載函數的原型是 【13】 。
(14)下面是復數類(lèi)complex的定義,其中重載的運算符“+”的功能是返回一個(gè)新的復 數對象,其實(shí)部等于兩個(gè)操作對象實(shí)部之和,其虛部等于兩個(gè)操作對象虛部之和;請補充完整:
class complex
{
double real; /pic/p>
double imag; /pic/p>
public:
complex(double r,double i):real(r),imag(i){}
complex operator+(complex a)
{
return complex( 【14】 );
}
};
(15)已知一個(gè)函數模板定義為
template T1, typename T2>
T1 FUN(T2 n) {return n * 5.0;}
若要求以int型數據7為函數實(shí)參調用該模板函數,并返回一個(gè)double型數據,則該 調用應表示為 【15】 。
【上半年全國計算機二級C++筆試真題】相關(guān)文章:
全國計算機等級考試二級C++筆試真題12-06
上半年全國計算機二級C++考試真題12-07
3月全國計算機等級考試二級C++筆試真題12-20
全國計算機二級考試C++真題03-09