一、選擇題
1.設(shè)一棵二叉樹(shù)中有3個(gè)葉子結(jié)點(diǎn),有8個(gè)度為1的結(jié)點(diǎn),則該二叉樹(shù)中總的結(jié)點(diǎn)數(shù)為( )
A.12 B.13 C.14 D.15
【參考答案】 B
2.下列敘述中,不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則的是( )
A.自頂向下 B.由底向上 C.模塊化 D.限制使用goto語(yǔ)句
【參考答案】 B
3.為了避免流程圖在描述程序邏輯時(shí)的靈活性,提出了用方框圖來(lái)代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為( )
A.PAD圖 B.N-S圖 C.結(jié)構(gòu)圖 D.數(shù)據(jù)流圖
【參考答案】 B
4.下列敘述中,不屬于數(shù)據(jù)庫(kù)系統(tǒng)的是( )
A.數(shù)據(jù)庫(kù) B.數(shù)據(jù)庫(kù)管理系統(tǒng) C.數(shù)據(jù)庫(kù)管理員 D.數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)
【參考答案】 B
5.視圖設(shè)計(jì)一般有3種設(shè)計(jì)次序,下列不屬于視圖設(shè)計(jì)的是( )
A.自頂向下 B.由外向內(nèi) C.由內(nèi)向外 D.自底向上
【參考答案】 B
6.棧通常采用的兩種存儲(chǔ)結(jié)構(gòu)是( )
A.線性存儲(chǔ)結(jié)構(gòu)和鏈表存儲(chǔ)結(jié)構(gòu)
B.散列方式和索引方式
C.鏈表存儲(chǔ)結(jié)構(gòu)和數(shù)組
D.線性存儲(chǔ)結(jié)構(gòu)和非線性存儲(chǔ)結(jié)構(gòu)
【參考答案】 A
7.完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征,而只是根據(jù)程序功能導(dǎo)出測(cè)試用例的測(cè)試方法是( )
A.黑箱測(cè)試法 B.白箱測(cè)試法 C.錯(cuò)誤推測(cè)法 D.安裝測(cè)試法
【參考答案】 A
8.下列選項(xiàng)中,不屬于模塊間耦合的是( )
A.數(shù)據(jù)耦合 B.同構(gòu)耦合 C.異構(gòu)耦合 D.公用耦合
【參考答案】 C
9.為用戶與數(shù)據(jù)庫(kù)系統(tǒng)提供接口的語(yǔ)言是( )
A.高級(jí)語(yǔ)言 B.數(shù)據(jù)描述語(yǔ)言(DDL) C.數(shù)據(jù)操縱語(yǔ)言(DML) D.匯編語(yǔ)言
【參考答案】 C
10.需求分析階段的任務(wù)是確定( )
A.軟件開(kāi)發(fā)方法 B.軟件開(kāi)發(fā)工具 C.軟件開(kāi)發(fā)費(fèi)用 D.軟件系統(tǒng)功能
【參考答案】 D
11.C++語(yǔ)言中用于定義類的關(guān)鍵字是( )
A.class B.struct C.default D.sizeof
【參考答案】 A
12.以下程序的輸出結(jié)果是( )
#include
void main()
{int a=21,b=11;
cout<<--a+b;}
A.30 B.31 C.32 D.33
【參考答案】 B
13.與y=(x>0?1:x<0?-1:0);的功能相同的if語(yǔ)句是( )
A.if(x>0) y=1; B.if(x)
else if(x<0) y=-1; if(x>0) y=1;
else y=0; else if(x<0) y=-1;
C.y=-1; D.y=0;
if(x) if(x>=0)
if(x>0) y=1; if(x>0) y=1;
else if(x==0) y=0; else y=-1;
else y=-1;
【參考答案】 A
14.下面程序段的運(yùn)行結(jié)果是( )
#include
void main()
{ char *s=″abcde″;
s+=2;
cout<<&s;}
A.cde B.字符′c′ C.字符′c′的地址 D.無(wú)確定的輸出結(jié)果
【參考答案】 C
15.下面程序應(yīng)能對(duì)兩個(gè)整型變量的值進(jìn)行交換。以下正確的說(shuō)法是( )
#include
void swap(int p,int q)
{ int t;
t=p;
p=q;
q=t; }
void main()
{ int a=10,b=20;
swap(&a,&b);
cout<
A.該程序完全正確
B.該程序有錯(cuò),只要將語(yǔ)句swap(&a,&b);中的參數(shù)改為a,b即可
C.該程序有錯(cuò),只要將swap()函數(shù)中的形參p和q以及t均定義為指針 (執(zhí)行語(yǔ)句不變)即可
D.以上說(shuō)法都不對(duì)
【參考答案】 D
16.關(guān)于抽象類下面說(shuō)法正確的是( )
A.抽象類就是其中有函數(shù)定義但沒(méi)有實(shí)現(xiàn)的類
B.抽象類是可以被實(shí)例化的
C.派生類不能成為抽象類
D.抽象類的子類必須實(shí)現(xiàn)父類中的純虛函數(shù)
【參考答案】 D
17.如果表達(dá)式--x+y中,--是作為成員函數(shù)重載的,+是作為成員函數(shù)重載的,則該表達(dá)式還可為( )
A.y.operator+(x.operator--(0)) B.y.operator+(x.operator--())
C.y.operator+(operator--(x,0)) D.operator+(x.operator--())
【參考答案】 B
18.以下哪個(gè)基類中的成員函數(shù)表示純虛函數(shù)?( )
A.virtual void vf(int) B.void vf(int)=0
C.virtual void vf(=0) D.virtual void yf(int){ }
【參考答案】 B
19.派生類繼承基類的方式有( )
A.public B.private
C.protected D.以上都對(duì)
【參考答案】 D
20.有以下程序
#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<
程序運(yùn)行后的輸出結(jié)果是( )
A.ABCDDEFEDBD B.abcDDfefDbD C.abcAAfefAbA D.Abcddfefdbd
【參考答案】 B
21.已知各變量的定義如下
int i=8,k,a,b;
unsigned long w=5;
double x=1.42,y=5.2;
則以下符合C++語(yǔ)言語(yǔ)法的表達(dá)式是( )
A.a+=a-=(b=4)*(a=3) B.a=a*3+2
C.x%(-3) D.y=float i
【參考答案】 A
22.對(duì)于下面的程序,說(shuō)法正確的是( )
#include
void main()
{ int x=3,y=4,z=2;
if(x=y+z)cout<<″x=y+z″;
else cout<<″x!=y+z″;}
A.不能通過(guò)編譯 B.輸出6 C.輸出x!=y+z D.輸出x=y+z
【參考答案】 D
23.以下哪個(gè)不是C++語(yǔ)言中的有效標(biāo)識(shí)符?( )
A.34a B._AB C.A_B D.A25
【參考答案】 A
24.下面程序的運(yùn)行結(jié)果是( )
#include″iostream.h″
#define sum(a,b)a*b
void main()
{ int x;
x=sum(1+2,3)
cout
A.0 B.9 C.7 D.5
【參考答案】 C
25.關(guān)于continue語(yǔ)句敘述不正確的是( )
A.continue語(yǔ)句用于循環(huán)體中,結(jié)束循環(huán)
B.continue語(yǔ)句用于循環(huán)體中,它使執(zhí)行流跳出循環(huán)體中尚未執(zhí)行的語(yǔ)句,并進(jìn)行下一循環(huán)判斷
C.continue可以用于if語(yǔ)句中
D.continue語(yǔ)句不能代替break語(yǔ)句
【參考答案】 A
26.下面程序的執(zhí)行結(jié)果是( )
#include″iostream.h″
void main()
{ int *p,r;
p=new int;
*p=20;
r=sizeof(*p);
cout<
delete p; }
A.程序錯(cuò)誤 B.內(nèi)存為20地址的大小 C.20 D.4
【參考答案】 D
27.下列程序的輸出結(jié)果是( )
#include ″iostream″
using namespace std;
int Max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
void main()
{
int m,n;
m=10,n=5;
int max=Max(m,n);
cout<
}
A.10 B.程序有誤 C.1 D.0
【參考答案】 A
28.C++中類定義中默認(rèn)的訪問(wèn)權(quán)限是( )
A.public B.protected
C.private D.default
【參考答案】 C
29.關(guān)于構(gòu)造函數(shù)A()的拷貝構(gòu)造函數(shù)正確的是( )
A.A(A*B); B.A(AB); C.A(A&B); D.A(A);
【參考答案】 C
30.虛函數(shù)必須是類的( )
A.成員函數(shù) B.友元函數(shù) C.構(gòu)造函數(shù) D.析構(gòu)函數(shù)
【參考答案】 A
31.不能重載的運(yùn)算符是( )
A.new B.sizeof C..* D.++
【參考答案】 C
32.關(guān)于模板下列說(shuō)法不正確的是( )
A.用類模板定義一個(gè)對(duì)象時(shí),不能省略實(shí)參 B.類模板只能有虛擬類型參數(shù)
C.類模板本身在編譯中不會(huì)生成任何代碼 D.類模板的成員函數(shù)都是模板函數(shù)
【參考答案】 B
33.下面程序的結(jié)果為( )
#include″iostream.h″
void change(int a,int b)
{int temp;
temp=a;
a=b;
b=temp;}
void main()
{int m,n;
m=8;
n=9;
change(m,n);
cout<
A.8 9 B.9 8 C.程序有錯(cuò)誤 D.9 9
【參考答案】 A
34.下面程序輸出的結(jié)果為( )
#include ″iostream.h″
class A
{ public:
A(){cout<<″CLASS A″<
~A(){ } };
class B:public A
{ public:
B(){cout<<″CLASS B″<
~B(){ } };
void main()
{ A *p;
p=new B;
B *q;
q=new B; }
A.CLASS A B.CLASS A C.CLASS A D.CLASS A
CLASS B CLASS B CLASS B CLASS B
CLASS B CLASS A CLASS B
CLASS B CLASS B
【參考答案】 C
35.下列程序的運(yùn)行結(jié)果為( )
#include
template
class FF
{ TT a1,a2,a3;
public:
FF(TT b1,TT b2,TT b3){a1=b1;a2=b2;a3=b3;}
TT Sum(){return a1+a2+a3;} };
void main()
{ FFx(int(1.1),2,3),y(int(4.2),5,6);
cout<
A.6.1 15.2 B.6 15 C.6 15.2 D.6.1 15
【參考答案】 B
二、填空題
1.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【1】以及對(duì)數(shù)據(jù)的操作運(yùn)算。
【參考答案】
1.【1】存儲(chǔ)結(jié)構(gòu)
2.軟件工程包括3個(gè)要素,分別為方法、工具和【2】。
【參考答案】
2.【2】過(guò)程
3.在程序設(shè)計(jì)階段應(yīng)該采取【3】和逐步求精的方法,把一個(gè)模塊的功能逐步分解,細(xì)化為一系列具體的步驟,進(jìn)而用某種程序設(shè)計(jì)語(yǔ)言寫(xiě)成程序。
【參考答案】
3.【3】自頂而下
4.數(shù)據(jù)庫(kù)系統(tǒng)階段的數(shù)據(jù)具有較高獨(dú)立性,數(shù)據(jù)獨(dú)立性包括物理獨(dú)立性和【4】?jī)蓚€(gè)含義。
【參考答案】
4.【4】邏輯獨(dú)立性
5.棧和隊(duì)列通常采用的存儲(chǔ)結(jié)構(gòu)是【5】。
【參考答案】
5.【5】鏈?zhǔn)酱鎯?chǔ)和順序存儲(chǔ)
6. 以下程序的輸出結(jié)果是【6】。
#include
void main()
{ a+=(a=8);
cout<
【參考答案】
6.【6】16
7.如果類中的一個(gè)成員函數(shù)的定義實(shí)現(xiàn)在類內(nèi),則該函數(shù)系統(tǒng)自動(dòng)默認(rèn)為該類的【7】函數(shù)。
【參考答案】
7.【7】?jī)?nèi)聯(lián)
8.operator是運(yùn)算符重載時(shí)必須使用的關(guān)鍵字,它和被重載的運(yùn)算符連在一起,作為運(yùn)算符函數(shù)的專用函數(shù)名,務(wù)必把該函數(shù)說(shuō)明為【8】的。
【參考答案】
8.【8】public
9.我們通常用到的cin>>,是屬于【9】輸入。
【參考答案】
9.【9】有格式
10. 派生類的成員一般分為兩部分,一部分是【10】,另一部分是自己定義的新成員。
【參考答案】
10.【10】從基類繼承的成員
11.設(shè)i,j,k均為int型變量,則執(zhí)行完for(i=0,j=10;i<-j;i++,j--)k=i+j;語(yǔ)句后,k的值為【11】。
【參考答案】
11.【11】10
12.如果類B繼承了類A,則稱類A為類B的基類,類B稱為類A的【12】。
【參考答案】
12.【12】派生類
13.已知程序的結(jié)果為1 2 3,請(qǐng)?zhí)羁铡?BR> #include
template
class A
{ public:
T x,y,z;
void display(){cout<
void main()
{ Aa1;
【13】
【14】
【15】
a1.display(); }
【參考答案】
13.【13】a1.x=1; 【14】a1.y=2; 【15】a1.z=3;
上機(jī)部分
一、改錯(cuò)題
使用VC6打開(kāi)考生文件夾下的工程kt9_1,此工程包含一個(gè)源程序文件kt9_1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正程序中的錯(cuò)誤,使程序的輸出結(jié)果如下:
4,5
20
源程序文件清單如下:
#include
classA
{ protected:
intn,m;
public:
voidset(inta,intb){m=a;n=b;}
voidshow(){cout<
/**********found**********/ }
classB:publicA
{ ints;
public:
voidset(){s=m*n;}
voidshows(){cout<
voidmain()
{
Bb;
/**********found**********/
b.set();
b.show();
b.set();
/**********found**********/
b.show();
}
【參考答案】
(1)在“}”后添加分號(hào)
(2)將b.set();改為:b.A::set(4,5);
(3)將b.show();改為:b.shows();
【試題解析】
(1)主要考查對(duì)類定義格式的掌握,類的結(jié)尾應(yīng)該使用";";
(2)主要考查對(duì)基類與派生類函數(shù)調(diào)用關(guān)系的掌握,根據(jù)所要求的輸出結(jié)果,應(yīng)該調(diào)用的函數(shù)為類A的set,而不是類B自身的set函數(shù),應(yīng)該避免調(diào)用的二義性;
(3)主要考查對(duì)繼承與派生的理解,由所要求輸出結(jié)果可知正確:b.shows()。
二、簡(jiǎn)單應(yīng)用題
請(qǐng)編寫(xiě)一個(gè)函數(shù)intCalcDigital(char*str),該函數(shù)可返回字符串str中數(shù)字字符(即“0”-“9”這10個(gè)數(shù)字)的個(gè)數(shù),如字符串"olympic2008"中數(shù)字字符的個(gè)數(shù)為4。請(qǐng)用if條件判斷語(yǔ)句與for循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)該函數(shù)。
注意:部分源程序已存在文件中。
請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)find的花括號(hào)中填寫(xiě)若干語(yǔ)句。
文件kt9_2.cpp的內(nèi)容如下:
#include
#include
intCalcDigital(char*str);
voidmain()
{ char*str;
str=newchar[255];
cout<<"輸入字符串:";
cin>>str;
intnum=CalcDigital(str);
cout<
intCalcDigital(char*str)
{
}
【參考答案】
int CalcDigital(char *str)
{ if(str==NULL) return 0;
int num_of_digital=0;
int len=strlen(str);
for(int i=0;i
if(str[i]<='9' && str[i]>='0')
num_of_digital++;
return num_of_digital; }
【試題解析】
本題考查對(duì)于if條件判斷語(yǔ)句與for循環(huán)語(yǔ)句的熟練使用程度。注意判斷條件(判斷是否是數(shù)字是直接比較ASCII碼)的使用。
3.綜合應(yīng)用題
使用VC6打開(kāi)考生文件夾下的工程kt9_3,此工程包含一個(gè)源程序文件kt9_3.cpp,其中定義了Circle類與Money類,Circle類可對(duì)半徑為r的圓進(jìn)行周長(zhǎng)與面積的計(jì)算,而Money類用于計(jì)算一圓形游泳池的造價(jià)。游泳池四周有原形過(guò)道,過(guò)道外圍上柵欄,過(guò)道寬度為3米,根據(jù)鍵入的游泳池半徑,每米柵欄價(jià)格及每平方米過(guò)道價(jià)格,即可計(jì)算出游泳池的造價(jià)。請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。
(1)定義符號(hào)常量PI(值為3.14159f)與WIDTH(值為3.00f),分別用于表示圓周率與過(guò)道的固定寬度。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(2)定義Circle類默認(rèn)構(gòu)造函數(shù),把私有成員radius初始化為參數(shù)r的值。請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句;
(3)完成Money類默認(rèn)構(gòu)造函數(shù)的定義,把私有成員FencePrice(每米柵欄的價(jià)格)、ConcretePrice(每平方米過(guò)道的價(jià)格)初始化為參數(shù)f,c的值。請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(4)完成Money類成員函數(shù)floatMoney::TotalMoney(floatfencelen,floatconarea)的定義,根據(jù)參數(shù)fencelen(柵欄的長(zhǎng)度)和conarea(過(guò)道的面積),返回柵欄與過(guò)道的總造價(jià)。請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
源程序文件kt9_3.cpp清單如下:
#include
//**1**
classCircle
{ private:
floatradius;
public:
//**2**
floatCircumference(){return2*PI*radius;}
floatArea(){returnPI*radius*radius;} };
classMoney
{ private:
floatFencePrice;
floatConcretePrice;
public:
Money(floatf,floatc);
floatTotalMoney(floatfencelen,floatconarea); };
Money::Money(floatf,floatc)
{ //**3** }
floatMoney::TotalMoney(floatfencelen,floatconarea)
{ //**4** }
voidmain()
{ floatradius,fence,concrete;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
cout<<"Entertheradiusofthepool:";
cin>>radius;
cout<<"EntertheFencePrice:";
cin>>fence;
cout<<"EntertheConcretePrice:";
cin>>concrete;
CirclePool(radius);
CirclePoolRim(radius+WIDTH);
Moneymon(fence,concrete);
floattotalmoney(PoolRim.Circumference(),(PoolRim.Area()-Pool.Area()));
cout<<"ThetotalmoneyisRMB"<
【參考答案】
(1)const float PI = 3.14159f;
const float WIDTH =3.00f;
(2)Circle(float r):radius(r){};
(3)FencePrice=f;
ConcretePrice=c;
(4)return FencePrice*fencelen+ConcretePrice*conarea;
【試題解析】
本題考查對(duì)符號(hào)常量的定義及類的定義與實(shí)現(xiàn)等方面的內(nèi)容,其中常類型的定義應(yīng)使用const關(guān)鍵字。

