版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C++程序設(shè)計練習(xí)題1
一、單項選擇題
1.對C++語言和c語言的兼容性,描述正確的是()
A.C++兼容CB.C++部分兼容C
C.C++不兼容CD.C兼容C++
2.在C++中使用流進行輸入輸出,其中用于屏幕輸出的對象是()
A.cerrB.cin
C.coutD.cfile
3.對使用關(guān)鍵字new所開辟的動態(tài)存儲空間,釋放時必須使用()
A.freeB.create
C.deleteD.realse
4.如沒有使用成員訪問權(quán)限關(guān)鍵字定義類的數(shù)據(jù)成員,則默認為()
A.privateB.public
C.protectedD.friend
5.使用值傳遞方式將實參傳給形參,下列說法正確的是()
A.形參是實參的備份B.實參是形參的備份
C.形參和實參是同一對象D.形參和實參無聯(lián)系
6.在函數(shù)調(diào)用時,如某一默認參數(shù)要指明一個特定值,則有()
A.其之前所有參數(shù)都必須賦值B.其之后所有參數(shù)都必須賦值
C.其前、后所有參數(shù)都必須賦值D.其前、后所有參數(shù)都不必賦值
7.設(shè)存在函數(shù)intmax(int,int)返回兩參數(shù)中較大值,若求22,59,70三者中最大值,下列表達式不正確的是()
A.intm=max(22,max(59,70));B.intm=max(max(22,59),70);
C.intm=max(22,59,70);D.intm=max(59,max(22,70));
8.下列哪個類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)()
A.函數(shù)體語句較多B.函數(shù)體語句較少
C.函數(shù)執(zhí)行時間較短D.函數(shù)執(zhí)行時間過長
9.intFunc(int,int);不可與下列哪個函數(shù)構(gòu)成重載()
A.intFunc(int,int,int);B.doubleFunc(int,int);
C.doubleFunc(double,double);D.doubleFunc(int,double);
10.對類中聲明的變量,下列描述中正確的是()
A,屬于全局變量B.只屬于該類
C.屬于該類,某些情況下也可被該類不同實例所共享
D.任何情況下都可被該類所有實例共享
11.類的私有成員可在何處訪問()
A.通過子類的對象訪問B.本類及子類的成員函數(shù)中
C.通過該類對象訪問D.本類的成員函數(shù)中
12.如果沒有為一個類定義任何構(gòu)造函數(shù)的情況下,下列描述正確的是()
A.編譯器總是自動創(chuàng)建一個不帶參數(shù)的構(gòu)造函數(shù)
B.這個類沒有構(gòu)造函數(shù)
C.這個類不需要構(gòu)造函數(shù)D.該類不能通過編譯
13.一個類可包含析構(gòu)函數(shù)的個數(shù)是()
A.0個B.1個
C.至少一個D.0個或多個
14.this指針存在的目的是()
A.保證基類公有成員在子類中可以被訪問
B.保證每個對象擁有自己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)成員的代碼
C.保證基類保護成員在子類中可以被訪問
D.保證基類私有成員在子類中可以被訪問
15.下列關(guān)于類的權(quán)限的描述錯誤的是()
A.類本身的成員函數(shù)只能訪問自身的私有成員
B.類的對象只能訪問該類的公有成員
C.普通函數(shù)不能直接訪問類的公有成員,必須通過對象訪問
D.一個類可以將另一個類的對象作為成員
16.在編譯指令中,宏定義使用哪個指令()
A.#includeB.#define
C.#ifD.#else
17.設(shè)類A將其它類對象作為成員,則建立A類對象時,下列描述正確的是()
A.A類構(gòu)造函數(shù)先執(zhí)行B.成員構(gòu)造函數(shù)先執(zhí)行
C.兩者并行執(zhí)行D.不能確定
18.下列描述錯誤的是()
A.在創(chuàng)建對象前,靜態(tài)成員不存在B.靜態(tài)成員是類的成員
C.靜態(tài)成員函數(shù)不能是虛函數(shù)D.靜態(tài)成員函數(shù)不能直接訪問非靜態(tài)成員
19.對于友元描述正確的是()
A.友元是本類的成員函數(shù)B.友元不是本類的成員函數(shù)
C.友元不是函數(shù)D.友元不能訪問本類私有成員
20.在哪種派生方式中,派生類可以訪問基類中的protected成員()
A.public和privateB.public和protected
C.protected和privateD.僅protected
二、填空題
24.定義虛函數(shù)所用的關(guān)鍵字是—virtual—。
27.類的繼承是指子類繼承基類的—成員變量—和成員函數(shù)。
28.不同對象可以調(diào)用相同名稱的函數(shù),但可導(dǎo)致完全不同的行為的現(xiàn)象稱為—多態(tài)
29.__#inc加de_指令指示編譯器將一個源文件嵌入到帶該指令的源文件之中。
30.設(shè)類A有成員函數(shù)voidFun(void);若要定義一個指向類成員函數(shù)的指針變量pafn來指向Fun,
該指針變量的聲明語句是:_void(A::*pafn)(void);_。
31.設(shè)在程序中使用如下語句申請了一個對象數(shù)組:Point*ptr=newPoinU2];
則在需要釋放ptr指向的動態(tài)數(shù)組對象時,所使用的語句是—delete[]ptr;—。
32.在保護派生中,基類權(quán)限為Private的成員在派生類中—不可訪問
33.類A有如下成員函數(shù)
intA::fun(doublex){return(int)x/2;}
intA::fun(intx){returnx*2;}
設(shè)a為類A的對象,在主函數(shù)中有ints=a.fun(6.0)+a.fun(2),則執(zhí)行該語句后,s的值為—7__。
34.對象傳送的消息一般由3部分組成:接收對象名、調(diào)用操作名和一參數(shù)一。
35.將指向?qū)ο蟮闹羔樧鳛楹瘮?shù)參數(shù),形參是對象指針,實參是對象的一地址
37.在C++中,聲明布爾類型變量所用的關(guān)鍵字是_bool_。
40.C++語言中可以實現(xiàn)輸出一個換行符并刷新流功能的操控符是_endl_。
三、改錯題(下面的類定義中有一處錯誤,請用下橫線標(biāo)出錯誤所在行并給出修改意見)
41.#include<iostream.h>
voidmain(){
intx=5,y=6;
constint*p=&x;
〃修改意見:去掉本句或去掉上句中的const
cout?*p?endl;
}
42.#include<iostream.h>
classf{
private:intxfy;
public:fl(){x=0;y=0;}
print(){cout?x??,?y?endl;}
);
voidmain(){
fa;
〃修改意見:本句改為或修改成員函數(shù)成的定義
a.print();
44.#include<iostream.h>
classpoint{
private:floatx;
public:voidf(floata){x=a;}
voidf(){x=0;}
friendfloatmax(point&a,point&b);
卜
floatmax(point&a,point&b)
{return(a.x>b.x)?a.x:b.x;}
voidmain(){
pointa,b;
a.f(2.2);b.f(3.3);
coutvva.mac?b);〃修改為:coutvvmax(a、b);
)
四、完成程序題
46.完成下面類中的成員函數(shù)的定義。
classpoint
(
private:intm,n;
public:
point(intyint);
point(point&);
);
point::point(inta,intb)
{
m=a;n=b:
}
point::point(point&t)
(
m=t.m;n=t.n;
}
47.下面是一個輸入半徑,輸出其面積和周長的C++程序,在下劃線處填上正確的語句。
#include<lostream>
usingnamespacestd;
gonstdoublgpi=3.l4159;
voidmain()
doubler;
cout?"r=";
cin>>r;
doublel=2.0*pi*r;
doubles=pi*r*r;
cout?H\nThelongis:"?l?endl;
cout?uTheareais:”?s?endl;
)
48.在下劃線處填上缺少的部分。
#include<iostream>
usingnamespacestd;
classcomplex
(
public:
intreal;
intimag;
complex(intr=0,inti=0)
(
real=r;
imag=i;
)
);
complexQDerator+(cumplex&a,complex&b)
(
intr=a.real+b.real;
inti=a.imag+b.imag;
returncomplex(r,i);
)
voidmain()
{
complexx(L2),y(3,4),z;
z=x+y;
cout?z.real?v+“?z.imag?ui"?endl;
49.程序的輸出結(jié)果如下:
1,9
50,30
請根據(jù)輸出數(shù)據(jù)在下面程序中的下劃線處填寫正確的語句。
源程序如下:
#include<iostream>
usingnamespacestd;
classbase
(
private:
public:
base(){};
base(inta):m(a){}
intget(){returnm;}
voidset(inta){m=a;}
};
voidmain()
{base*ptr=newbase[2];
ptr->set(30);
ptr=ptr+1;
ptr->set(50);
basea[2]={l,9};
cout?a[0].get()?,f,"?a[l].get()?endl;
cout?ptr->get()?/z,,f;
ptr=ptr-l;
coutvv>get()vvendl;
delete!]ptr;
)
五、程序分析題
51.給出下面程序的輸出結(jié)果。
#include<iostream.h>
template<classT>
classSample
{
Tn;
public:
Sample(Ti){n=i;}
intoperator==(Sample&);
);
template<classT>
intSample<T>::operator==(Sample&s)
{
if(n==s.n)return1;
elsereturn0;
)
voidmain()
{
Sample<int>sl(2),s2(3);.
cout<<"si與s2的數(shù)據(jù)成員"《(sl==s2?"相等":"不相等〃)《endl;
Sample<long>s3(25),s4(25);
cout<<"s3與s4的數(shù)據(jù)成員"<<(s3==s4?"相等":"不相等")<<endl;
)
52.給出下面程序的輸出結(jié)果。
#include<iostream>
usingnamespacestd;
template<classT>
Tmax(TmbTm2)
{return(ml>m2)?ml:m2;}
voidmain(){
cout?max(l,7)?"\t"?max(2.0,5.0)?endl;
cout?max('y'/br)?,f\t"?max(7A","a7)?endl;
)
53.給出下面程序的輸出結(jié)果
#include<iostream>
usingnamespacestd;
classA{
public:
intx;
A(){)
A(inta){x=a;}
intget(inta){returnx+a;}
);
voidmain(){
Aa(8);
int(A::*p)(int);
p=A::get;
cout?(a.*p)(5)?endl;
A*pi=&a;
cout?(pi->*P)(7)?endl;
)
54.給出下面程序的輸出結(jié)果。
include<iostream>
#include<string>
usingnamespacestd;
classBook{
char*title;
char*author;
intnumsold;
public:
Book(){}
Book(constchar*strl,constchar*str2,constintnum)
(
intlen=strlen(strl);
title=newchar[len+l];
strcpy(title,strl);
len=strlen(str2);
author=newchar[len+l];
strcpy(author,str2);
numsold=num;
)
voidsetbook(constchar*strLconstchar*str2,constintnum)
(
intlen=strlen(strl);
title=newchar[len+l];
strcpy(title,strl);
len=strlen(str2);
author=newchar[len+l];
strcpy(author,str2);
numsold=num;
)
?Book(){
deletetitle;
deleteauthor;
)
voidprint(ostream&output){
output?H書名:"?title?endl;
output?H作者:"?author?endl;
output?,f月銷售量:"vvnumsoldvvendl;
)
);
voidmain(){
Bookobjl(,z數(shù)據(jù)結(jié)構(gòu)〃,"嚴(yán)蔚敏〃,200),obj2;
objl.print(cout);
obj2.setbook(〃C++語言程序設(shè)計",〃李春葆〃,210);
obj2.print(cout);
}
六、程序設(shè)計題(本大題共1小題,共10分)
55.在三角形類TRI實現(xiàn)兩個函數(shù),功能是輸入三個頂點坐標(biāo)判斷是否構(gòu)成三角形
#include<iostream.h>
#include<math.h>
classpoint{
private:floatx,y;
public:point(floata,floatb)
{x=a;y=b;}
point(){x=0;y=0;}
voidset(floata,floatb){x=a;y=b;}
floatgetx(){returnx;}
floatgety(){returny;}
);
classtri{
pointx,y,z;
floatsi,s2,s3;
public:...settri(....);//用于輸入三個頂點坐標(biāo)
???.test(....);//用于判斷是否構(gòu)成三角形
};
請寫出兩個函數(shù)的過程(如果需要形式參數(shù),請給出形參類型和數(shù)量,以及返回值類型)
摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題
C++程序設(shè)計練習(xí)題2
一、單項選擇題
1.編寫C++程序一般需經(jīng)過的幾個步驟依次是()
A.編譯、編輯、連接、調(diào)試B.編輯、編譯、連接、調(diào)試
C.編譯、調(diào)試、編輯、連接D.編輯、調(diào)試、編譯、連接
2.函數(shù)調(diào)用func((expl,exp2),(exp3,exp4,exp5))中所含實參的個數(shù)為()
A.1B.2
C.4D.5
3.假定AB為一個類,則執(zhí)行“ABa(2),b[3],*p[4]語句時共調(diào)用該類構(gòu)造函數(shù)的次數(shù)為()
A.3B.4
C.5D.9
4.假定AB為一個類,px為指向該類的一個含有n個對象的動態(tài)數(shù)組的指針,則執(zhí)行“delete口px;”語句時共調(diào)
用該類析構(gòu)函數(shù)的次數(shù)為()
A.0B.1
C.nD.n+1
5.如果表達式++a中的“++”是作為成員函數(shù)重載的運算符,若采用運算符函數(shù)調(diào)用格式,則可表示為()
A.a.operator++(l)B.operator++(a)
C.operator++(a,l)D.a.operator++()
6.繼承機制的作用是()
A.信息隱藏B.數(shù)據(jù)封裝
C.定義新類D.數(shù)據(jù)抽象
7.以下哪個基類中的成員函數(shù)表示純虛函數(shù)?()
A.virtualvoidvf(int);B.voidvf(int)=0;
C.virtualvoidvf()=0;D.virtualvoidyf(int){}
8.假定一個類的構(gòu)造函數(shù)為"A(intaa,intbb){a=aa;b=aa*bb;}”,則執(zhí)行"Ax(4,5);“語句后,x.a和x.b的值分
別為()
A.4和5B.5和4
C.4和20D.20和5
9.-■個類的靜態(tài)數(shù)據(jù)成員所表示屬性()
A.是類或?qū)ο蟮膶傩訠.只是對象的屬性
C.只是類的屬性D.是類和友元的屬性
10.一個C++源程序文件的擴展名為()
A..hB.x
C..cppD..cp
二、填空題
11.重載“<<”操作符時,應(yīng)聲明為一普通__函數(shù)。
12.在C++中,編譯指令都是以#(符號)開始。
14.C++支持兩種多態(tài)性,編譯時的多態(tài)性和—運行一時的多態(tài)性。
15.假定用戶為類AB定義了一個構(gòu)造函數(shù)“AB(intaa=0):a(aa){}",則定義該類的對象時,可以有一2__種不
同的定義格式。
16.若p指向X,則__*p與x的表示是等價的。
18.當(dāng)函數(shù)參數(shù)表用void一—保留字表示時,則表示該參數(shù)表為空。
19.每個對象都是所屬類的一個—實例一。
20.作為類的成員函數(shù)重載一個運算符時,參數(shù)表中只有一個參數(shù),說明該運算符有2個操作數(shù)。
-本套試題共分6頁,當(dāng)前頁是第1頁-
摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題
三、改錯題
21.假定要求下面程序輸出“d=800,f=60”,在第5-20行中存在著三條語句錯誤,請指出錯誤語句的行號并改正。
#include<iostream.h>
classA{〃1行
inta[10];intn;〃2行
public:〃3行
A(intaa[],intnn):n(nn){〃4行
for(inti=0;i<n;i++)aa[i]=a[i];〃5行修改為:for(inti=0;i<n;i++)a[i]=aa[i];
)〃6行
intGet(inti){returna[i];}〃7行
intSumA(intn);〃8行
);〃9行
intA::SumA(intn){〃10行
ints=0;〃U行
for(intj=0;j<n;j++)s+=a[j];〃12行
returns;〃13行
)〃14行
voidmain(){〃15行
inta[]={2,5,8,10,15,20};〃16行
Ax(a,6);〃17行
intd=l;〃18行
for(inti=0;i<4;i++)d*=x.a[i];〃19行修改為:for(inti=0;i<4;i++)d*=x.Get(i);
intf=SumA(6);//20行修改為:intf=x.SumA(6);
cout?nd=n?d<<?;//21行
cout?nf=H?f?endl;//22行
)〃23行
22.下面程序段第4到7行中存在著三條語句的語法錯誤,請指出錯誤語句的行號并改正。
classA{〃1行
inta,b;〃2行
constintc;〃3行
public〃4行
A():c(0);a(0);b(0){}〃5行今A():c(0),a(0),b(0){}
A(intaa,intbb)c(aa+bb);{a=aa;b=bb;]I〃6行■>A(intaa,intbb):c(aa+bb){a=aa;b=bb;}
);//7行
Aa,b(l,2);〃8行
A*x=&a,&y=b;〃9行
A*z=newA,w[10];//10行+A*z=newA;
四、程序填空題(請按提示要求完成以下程序段的填空)
23.在下面一段類定義中,Derived類公有繼承了基類Base。需要填充的函數(shù)由注釋內(nèi)容給出了功能。
classBase
(
private:intmeml,mem2;〃基類的數(shù)據(jù)成員
public:Base(intml,intm2){meml=ml;mem2=m2;}
voidoutput(){cout?meml?,'?mem2?,';}
〃…
-本套試題共分6頁,當(dāng)前頁是第2頁-
摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題
classDerived:publicBase
(
private:
intmem3;〃派生類本身的數(shù)據(jù)成員
public:
〃構(gòu)造函數(shù),由ml和m2分別初始化meml和mem2,由m3初始化mem3
Derived(intml,intm2,intm3);
〃輸出meml,mem2和mem3數(shù)據(jù)成員的值
voidoutput(){
(1);cout?mem3?endl;
}
〃…
);
Derived::Derived(intml,intm2,intm3):⑵{⑶;}
需要補充的語句為:
(1)Base::output()(2)Base(ml,m2)(3)meni3=m3;
24.classA{
inta,b;
public:
(4)〃定義構(gòu)造函數(shù),使參數(shù)aa和bb的默認值為0,
{a=aa;b=bb;}〃在函數(shù)體中用aa初始化a,用bb初始化b
);
main(){
A*pl,*p2;
(5);〃調(diào)用無參構(gòu)造函數(shù)生成由pl指向的動態(tài)對象
⑹;〃調(diào)用帶參構(gòu)造函數(shù)生成由p2指向的動態(tài)對象,
〃使a和b成員分別被初始化為4和5
)
需要補充的語句為:
(4)A(intaa=0,intbb=O)(5)pl=newA;(6)p2=newA(4,5);
25.已知一個類的定義如下:(假設(shè)類的成員函數(shù)已實現(xiàn))
#include<iostream.h>
classAA{
inta[10];
intn;
public:
voidSetA(intaa[],intnn);〃用數(shù)組aa初始化數(shù)據(jù)成員a,
〃用nn初始化數(shù)據(jù)成員n
intMaxA();〃從數(shù)組a中前n個元素中查找最大值
voidSortA();〃采用選擇排序的方法對數(shù)組a中前n個元素
〃進行從小到大排序
voidInsertAO;//采用插入排序的方法對數(shù)組a中前n個元素進行從小到大排序
voidPrintA();〃依次輸出數(shù)組a中的前n個元素
〃最后輸出一個換行
);
使用該類的主函數(shù)如下:
voidmain()
-本套試題共分6頁,當(dāng)前頁是第3頁-
摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題
inta[10]={23,78,46,55,62,76,90*,38,42};
AAx;
JZL;
intm=(8);
J91;
cout?m?endl;
)
該程序運行結(jié)果為:
237846556276
78
需要補充的語句為:
(7)x.Seta(a,6);(8)x.MaxAO(9)x.PrintAO
五、程序分析題(閱讀以下程序,寫出其運行結(jié)果)
26.當(dāng)從鍵盤上輸入9.98時,寫出下面程序的執(zhí)行結(jié)果。
#include<iostreain.h>
voidmain()
{
inta,b;
charch;
cin?a?ch?b;//從鍵盤上輸入9.98
cout?a?endl?b?endl;
)
27.#include<iostream.h>
classaa{
public:
virtualintfunc(){return0;}
);
classtest:publicaa{
public:
intfunc(){return58;}
};
voidmain(){
testd;
aa&b=d;
cout?b.func()?endl;
cout?b.aa::func()?endl;
)
28.#include<iostream.h>
classmyclass{
public:
intnumber;
voidset(inti);
);
-本套試題共分6頁,當(dāng)前頁是第4頁-
摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題
intnumber=8;
voidmyclass::set(inti)
(
number=i;
)
voidmain()
(
myclassmyl;
intnumber=20;
myl.set(6);
cout?myl.number?endl;
myl.set(number);
cout?myl.number?endl;
myl.set(::number);
cout?myl.number?endl;
)
29.#include<iostream.h>
classa
{
public:virtualvoidprint(){cout?nthisisclassaprinting.M?endl;};
};
classb:publica
(
public:voidprint(){};
);
classc:publicb
(
public:voidprint(){cout?”thisisclasscprinting.H?endl;}
);
voidshow(a&aa)
(
aa.printO;
)
voidmain()
(
aa;bb;cc;
show(a);
show(b);
shovv(c);
)
30.#include<iostream.h>
classDate
{
intYear,Month,Day;
public:
Date(inty=2001,intm=l,intd=l){Year=y;Month=m;Day=d;}
voidPrintDate(){cout?Year?*7**?Month?*7**?Day?endl;}
-本套試題共分6頁,當(dāng)前頁是第5頁-
摘自:全國2008年1月高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計試題
classTime
{
intHoure,Minutes,Seconds;
public:
Time(inth=5,intm=30,ints=0){Houre=h;Minutes=m;Seconds=s;}
voidPrintTime(){cout?Houre?H:,,?Minutes?H:,,?Seconds?endl;}
);
classDate_Time:publicDate,publicTime
{
public:
Date_Time(){};
Date_Time(inty,intmo,intd,inth=O,intmi=09ints=0):
Date(y,mo,d)9Time(h,mi,s){}
voidPrintDate_Time(){PrintDate();PrintTime();}
);
voidmain()
(
Date_Timea,b(2002,10,l,6,20,0),《2003,3,8,6,7);
a.PrintDate_Time();
b.PrintDate_Time();
c.PrintDate_Time();
)
31.#include<iostream.h>
voidf2(int&x,int&y)
(
intz=x;x=y;y=z;
)
voidmain()
(
intx=10,y=26;
cout?nx,y=n?x?H,H?y?endl;
f2(x,y);
cout?nx,y=n<<x?H,M?y?endl;
x++;y-;
f2(y,x);
cout?Mx,y=M?x?H,M?y?endl;
)
-本套試題共分6頁,當(dāng)前頁是第6頁-
2007年10月自考面向?qū)ο蟪绦蛟O(shè)計試題
C++程序設(shè)計練習(xí)題3
一、單項選擇題
1.以下說法中正確的是()
A.C++程序總是從第一個定義的函數(shù)開始執(zhí)行
B.C++程序總是從main函數(shù)開始執(zhí)行
C.C++函數(shù)必須有返回值,否則不能使用函數(shù)
D.C++程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個程序文件中
2.以下關(guān)于函數(shù)模板敘述正確的是()
A.函數(shù)模板也是一個具體類型的函數(shù)
B.函數(shù)模板的類型參數(shù)與函數(shù)的參數(shù)是同一個概念
C.通過使用不同的類型參數(shù),函數(shù)模板可以生成不同類型的函數(shù)
D.用函數(shù)模板定義的函數(shù)沒有類型
3.在重載一個運算符時,其參數(shù)表中沒有任何參數(shù),這表明該運算符是()
A.作為友元函數(shù)重載的1元運算符
B.作為成員函數(shù)重載的1元運算符
C.作為友元函數(shù)重載的2元運算符
D.作為成員函數(shù)重載的2元運算符
4.構(gòu)造函數(shù)不具備的特征是()
A.構(gòu)造函數(shù)的函數(shù)名與類名相同
B.構(gòu)造函數(shù)可以重載
C.構(gòu)造函數(shù)可以設(shè)置默認參數(shù)
D.構(gòu)造函數(shù)必須指定類型說明
5.在C++中,封裝是借助什么達到的()
A.結(jié)構(gòu)B.數(shù)組
C.類D.函數(shù)
6.在哪種情況下適宜采用inline定義內(nèi)聯(lián)函數(shù)?()
A.函數(shù)體含有循環(huán)語句B.函數(shù)體含有遞歸語句
C.函數(shù)代碼少、頻繁調(diào)用D.函數(shù)代碼多、不常調(diào)用
7.在關(guān)鍵字public后面定義的成員為類的()
A.私有成員B.公用成員
C保護成員D.任何成員
8.以下哪個基類中的成員函數(shù)表示純虛函數(shù)?()
A.virtualvoidtt()=O;B.voidtt(int)=0;
C.virtualvoidtt(int);D.virtualvoidtt(int){)
9.假定AA是一個類,"AA*abc()const;”是該類中一個成員函數(shù)的原型,若該函數(shù)返回this值當(dāng)用x.abc()
調(diào)用該成員函數(shù)后,x的值()
A.已經(jīng)被改變B.可能被改變
C.不變D.受到函數(shù)調(diào)用的影響
10.C++對C語言作了很多改進,即從面向過程變成為面向?qū)ο蟮闹饕蚴牵ǎ?/p>
A.增加了一些新的運算符
B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)
C.規(guī)定函數(shù)說明符必須用原型
D.引進了類和對象的概念
-本套試題共分8頁,當(dāng)前頁是第1頁-
2007年10月自考面向?qū)ο蟪绦蛟O(shè)計試題
二、填空題
11.如果一個派生類只有一個唯一的基類,則這樣的繼承關(guān)系稱為__單繼承
12.C++支持兩種多態(tài)性:__編譯__時的多態(tài)性和運行時的多態(tài)性。
14.所有模板都以template關(guān)鍵字和一個一類型參數(shù)__表開頭。
15.若一個函數(shù)的定義處于調(diào)用它的函數(shù)之前,則在程序開始可以省去該函數(shù)的一聲明—語句。
16.類型轉(zhuǎn)換函數(shù)沒有返回值類型,而且參數(shù)表為一空___。
17.C++提供的預(yù)處理命令有嵌入指令,條件編譯指令和一宏定義指令
18.對象將其大部分實現(xiàn)細節(jié)隱藏起來,這種機制稱為__信息隱蔽―o
19.定義類動態(tài)對象數(shù)組時,其元素只能靠自動調(diào)用該類的一構(gòu)造函數(shù)——來進行初始化。
20.在函數(shù)體之前加—const_關(guān)鍵字可以防止函數(shù)誤操作改變數(shù)據(jù)成員的值。
三、改錯題(本大題共2小題,每小題6分,共12分)
21.下面是分數(shù)類fract的定義及測試主程序,在類定義及其友元函數(shù)定義中1到6行中有三處錯誤,更正
錯誤后程序應(yīng)顯示41/28,請指出錯誤所在行的行號并給出改正意見。
classfract{
intden;〃分子
intnum;〃分母
public〃1行
fract(intd=0,intn=l):den(d),num(n){)〃2行
friendfract&operator+=(fract,fract&);〃3行
voidshow(){cout?den?,/'?num;}〃4行
);〃5行
friendfract&operator+=(fractfl,fractf2)〃6行
{〃7行
fl.den=fl.den*f2.num+fl.num*f2.den;〃8行
fl.num*=f2.num;〃9行
returnfl;〃10行
voidmain(){
fractfr(3,4);
fr+=fract(5,7);
fnshow();
}
錯誤行的行號為1、3和6o
分別改正為_public:_、__friendfract&operator+=(fract&,fract&);___
和____friendfract&operator+=(fract&fl,fract&f2);____。
22.下面程序段第13-17行中存在著三條語句錯誤,請指出錯誤語句的行號并說明原因
classA{〃1行
inta;〃2行
public:〃3行
A(intaa=0):a(aa){}〃4行
};〃5行
classB{〃6行
inta,b;/〃行
constintc;〃8行
-本套試題共分8頁,當(dāng)前頁是第2頁-
2007年10月自考面向?qū)ο蟪绦蛟O(shè)計試題
Ad;〃9行
public://10行
B():c(0){a=b=0;}//ll行
B(intaa,intbb):d(aa+bb){//12行
a=aa;b=bb;c=aa-bb;//13行應(yīng)去掉c=aa-bb;
}//14行
}//15行應(yīng)加上分號(;)
Ba,b(l,2);〃16行
Bx=a,y(b),z(l,2,3);〃17行z的定義可以是z(l,2);
錯誤行的行號為_13____、_____15_____和______17_____o
錯誤原因分別為一常成員變量只能用初始化表的方式初始化_、_沒有分號—和—Z定義錯誤____O
四、程序填空題(請按提示要求完成以下程序段的填空)
23.在下面一段類定義中,Derived類是由直接基類Base1和Base2所派生的,Derived類包含有兩個間
接基類BaseBase,在初始化函數(shù)Init中,需要把xl和x2的值分別賦給屬于基類Basel的x成員和屬于
基類Basel的x成員。
classBaseBase{
protected:
intx;
public:
BaseBase(){x=1;}
);
classBasel:publicBaseBase{
public:
Basel(){}
);
classBase2:publicBaseBase{
public:
Base2(){}
);
classDerived:_⑴一
(
public:
Derived(){}
voidInit(intxl,intx2){
__(2)—;
__(3)—;
)
voidoutput(){cout?Basel::x?^?Base2::x?endl;}
};
需要補充的語句為:
(1)publicBasel,publicBasel(2)Basel::x=xl;(3)Basel::x=x2;
24.#include<iostream.h>
#include<stdlib.h>
classA{
-本套試題共分8頁,當(dāng)前頁是第3頁-
2(X)7年10月自考面向?qū)ο蟪绦蛟O(shè)計試題
int*a;intn;
intMaxLen;
public:
A():a(0)9n(0)9MaxLen(O){)
A(int*aa,intnn9intMM){
n=nn;
MaxLen=MM;
if(n>MaxLen)exit(l);
a=newint[MaxLen];
(4);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度環(huán)保設(shè)備銷售與服務(wù)合同4篇
- 二零二四年外墻清洗專業(yè)團隊服務(wù)合同樣本3篇
- 2024-2025學(xué)年高中地理第一章環(huán)境與環(huán)境問題第一節(jié)我們周圍的環(huán)境課時分層作業(yè)含解析新人教版選修6
- 二零二五版城市綜合體土方運輸與臨時堆場租賃合同3篇
- 二零二五年度餐飲業(yè)人力資源派遣合同范本3篇
- 2025年特色小鎮(zhèn)物業(yè)經(jīng)營權(quán)及配套設(shè)施合作合同3篇
- 二零二五版科技公司股份交易與稅收籌劃合同3篇
- 2025年度高新技術(shù)產(chǎn)業(yè)用地轉(zhuǎn)讓合同參考范本
- 二零二五版供用電新能源并網(wǎng)服務(wù)合同3篇
- 二零二五年花卉綠植市場供應(yīng)合同書3篇
- 上海紐約大學(xué)自主招生面試試題綜合素質(zhì)答案技巧
- 辦公家具項目實施方案、供貨方案
- 2022年物流服務(wù)師職業(yè)技能競賽理論題庫(含答案)
- ?;钒踩僮饕?guī)程
- 連鎖遺傳和遺傳作圖
- DB63∕T 1885-2020 青海省城鎮(zhèn)老舊小區(qū)綜合改造技術(shù)規(guī)程
- 高邊坡施工危險源辨識及分析
- 中海地產(chǎn)設(shè)計管理程序
- 簡譜視唱15942
- 《城鎮(zhèn)燃氣設(shè)施運行、維護和搶修安全技術(shù)規(guī)程》(CJJ51-2006)
- 項目付款審核流程(visio流程圖)
評論
0/150
提交評論