版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
自考C++試題及答案11套合集
資料僅供參考
全國10月自學(xué)考試C++程序設(shè)計(jì)試題
課程代碼:04737
一、單項(xiàng)選擇題(本大題共20小題,每小題1分,共20分)
1.對(duì)C++語言和C語言的兼容性,描述正確的是(A)
A.C++兼容CB.C++部分兼容CD.C兼容C++
2.在C++中使用流進(jìn)行輸入輸出,其中用于屏幕輸出的對(duì)象是(C)
A.cerrB.cinC.coutD.cfile
(cerr:標(biāo)準(zhǔn)錯(cuò)誤輸出(非緩沖方式);cin:標(biāo)準(zhǔn)輸入;
clog標(biāo)準(zhǔn)錯(cuò)誤輸出(緩沖方式))
3.對(duì)使用關(guān)鍵字new所開辟的動(dòng)態(tài)存儲(chǔ)空間,釋放時(shí)必須使用(C)
A.freeB.createC.deleteD.realse
4.如沒有使用private關(guān)鍵字定義類的數(shù)據(jù)成員,則默認(rèn)為(A)
A.privateB.publicC.protectedD.friend
5.使用值傳遞方式將實(shí)參傳給形參,下列說法正確的是(A)
A.形參是實(shí)參的備份B.實(shí)參是形參的備份C.形參和實(shí)參是同一對(duì)象D.形參和實(shí)參無
聯(lián)系
6.在函數(shù)調(diào)用時(shí),如某一默認(rèn)參數(shù)要指明一個(gè)特定值,則有(A)
A.其之前所有參數(shù)都必須賦值B.其之后所有參數(shù)都必須賦值C.其前、后所有參數(shù)都必
須賦值D.其前、后所有參數(shù)都不必賦值
7.設(shè)存在函數(shù)intmax(int,int)返回兩參數(shù)中較大值,若求22,59,70三者中最大值,
下列表示式不正確的是(C)
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.下列哪個(gè)類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)(A)
A.函數(shù)體語句較多B.函數(shù)體語句較少C.函數(shù)執(zhí)行時(shí)間較短D.函數(shù)執(zhí)行時(shí)間過長(zhǎng)
9.intFunc(int,int);不可與下列哪個(gè)函數(shù)構(gòu)成重載(B)
A.intFunc(int,int,int);B.doubleFunc(int,int);
C.doubleFunc(double,double);D.doubleFunc(int,double);
說明:不能以形參名來區(qū)分函數(shù);不能以
函數(shù)返回值來區(qū)分函數(shù)。必須是形參的個(gè)
數(shù)或者類型不同才能構(gòu)成函數(shù)重載。
10.對(duì)類中聲明的變量,下列描述中正確的是(C)
A.屬于全局變量B.只屬于該類C.屬于該類,某些情況下也可被該類不同實(shí)例所共享
D.任何情況下都可被該類所有實(shí)例共享
11.類的私有成員可在何處訪問(D)
A.經(jīng)過子類的對(duì)象訪問B.本類及子類的成員函數(shù)中C.經(jīng)過該類對(duì)象訪問D.本類的
成員函數(shù)中
12.如果沒有為一個(gè)類定義任何構(gòu)造函數(shù)的情況下,下列描述正確的是(A)
A.編譯器總是自動(dòng)創(chuàng)立一個(gè)不帶參數(shù)的構(gòu)造函數(shù)
B.這個(gè)類沒有構(gòu)造函數(shù)C.這個(gè)類不需要構(gòu)造函數(shù)D.該類不能經(jīng)過編譯
13.一個(gè)類可包含析構(gòu)函數(shù)的個(gè)數(shù)是(B)
A.0個(gè)B.1個(gè)C.至少一個(gè)D.0個(gè)或多個(gè)
14.this指針存在的目的是(B)
A.保證基類公有成員在子類中能夠被訪問
B.保證每個(gè)對(duì)象擁有自己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)成員的代碼
C.保證基類保護(hù)成員在子類中能夠被訪問D.保證基類私有成員在子類中能夠被訪問
資料僅供參考
15.下列關(guān)于類的權(quán)限的描述錯(cuò)誤的是(A)
A.類本身的成員函數(shù)只能訪問自身的私有成員B.類的對(duì)象只能訪問該類的公有成員
C.普通函數(shù)不能直接訪問類的公有成員,必須經(jīng)過對(duì)象訪問D.一個(gè)類能夠?qū)⒘硪粋€(gè)類的
對(duì)象作為成員
16.在編譯指令中,宏定義使用哪個(gè)指令(B)
A.itincludeB.#defineC.#ifD.#else
17.設(shè)類A將其它類對(duì)象作為成員,則建立A類對(duì)象時(shí),下列描述正確的是(B)
A.A類構(gòu)造函數(shù)先執(zhí)行B.成員構(gòu)造函數(shù)先執(zhí)行C.兩者并行執(zhí)行D.不能確定
類的組合,描述的是一個(gè)類內(nèi)嵌其它類的對(duì)象作為成員的情況,它們之間的關(guān)系是一種包含
與被包含的關(guān)系。
在聲明一個(gè)組合類的對(duì)象時(shí),不但它自身的構(gòu)造函數(shù)將被調(diào)用,而且還將調(diào)用其內(nèi)嵌對(duì)象的
構(gòu)造函數(shù)。這時(shí)構(gòu)造函數(shù)的調(diào)用順序是:
(1)按照內(nèi)嵌對(duì)象在組合類的聲明中出現(xiàn)的次序,依次調(diào)用內(nèi)嵌對(duì)象的構(gòu)造函數(shù);
(2)執(zhí)行本類構(gòu)造函數(shù)的函數(shù)體
析構(gòu)函數(shù)的調(diào)用執(zhí)行順序與構(gòu)造函數(shù)剛好相反。
18.下列描述錯(cuò)誤的是(A)
A.在創(chuàng)立對(duì)象前,靜態(tài)成員不存在B.靜態(tài)成員是類的成員
C.靜態(tài)成員不能是虛函數(shù)D.靜態(tài)成員函數(shù)不能直接訪問非靜態(tài)成員
說明:靜態(tài)成員函數(shù)能夠直接訪問該類的靜態(tài)數(shù)據(jù)和函數(shù)成員,而訪問非靜態(tài)成員,必須經(jīng)
過參數(shù)傳遞方式得到對(duì)象名,然后經(jīng)過對(duì)象名來訪問。
19.對(duì)于友元描述正確的是(B)
A.友元是本類的成員函數(shù)B.友元不是本類的成員函數(shù)C.友元不是函數(shù)D.友元不能訪問
本類私有成員
20.在哪種派生方式中,派生類能夠訪問基類中的protected成員(B)
A.publicprivateB.publicprotectedC.protected^0privateD.僅protected
資料僅供參考
二、填空題(本大題共20小題,每小題1分,共20分)
請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無分。
21.設(shè)要把一個(gè)文件輸出流對(duì)象myFile與文件“f:\myText.txt相關(guān)聯(lián),所用的C++語
句是:myFile.open("f:\\myText.txt");。
22.C++中ostream類的直接基類是如“類。
23.運(yùn)算符[]只能用成員運(yùn)算符來重載,不能用友元運(yùn)算符來重載。
24.定義虛函數(shù)所用的關(guān)鍵字是字是uaL25.vector類中用于返回向量中第1個(gè)對(duì)象的
方法是front()O
26.在C++中,利用向量類模板定義一個(gè)具有20個(gè)char的向量E,其元素均被置為字符
't',實(shí)現(xiàn)此操作的語句是vector〈char>E(20,'t')。
27.類的繼承是指子類繼承基類的數(shù)據(jù)邈和成員函數(shù)。
28.不同對(duì)象能夠調(diào)用相同名稱的函數(shù),但可導(dǎo)致完全不同的行為的現(xiàn)象稱為多態(tài)性或(類
的多態(tài)性)。
29.梃值姬指令指示編譯器將一個(gè)源文件嵌入到帶該指令的源文件之中。
30.設(shè)類A有成員函數(shù)
voidFun(void);
若要定義一個(gè)指向類成員函數(shù)的指針變量pafn來指向Fun,該指針變量的聲明語句是:
void(A::*pafn)(void);。
31.設(shè)在程序中使用如下語句申請(qǐng)了一個(gè)對(duì)象數(shù)組:
Point*ptr=newPoint[2];
則在需要釋放ptr指向的動(dòng)態(tài)數(shù)組對(duì)象時(shí),所使用的語句是de在te[]ptr;。
32.在保護(hù)派生中,基類權(quán)限為Private的成員在派生類中不可訪問。
33.類A有如下成員函數(shù)
intA::fun(doublex){return(int)x/2;)
intA::fun(intx){returnx*2;}
資料僅供參考
設(shè)a為類A的對(duì)象,在主函數(shù)中有ints=a.fun(6.0)+a.fun(2),則執(zhí)行該語句后,s的
值為工。
34.對(duì)象傳送的消息一般由3部分組成:接收對(duì)象名、調(diào)用操作名和必要的參數(shù)。
35.將指向?qū)ο蟮闹羔樧鳛楹瘮?shù)參數(shù),形參是對(duì)象指針,實(shí)參是對(duì)象的地址值。
36.在使用string類的find成員函數(shù)來檢索主串中是否含有指定的子串時(shí),若在主串中
不含指定的子串,find函數(shù)的返回值是-10
37.在C++中,聲明布爾類型變量所用的關(guān)鍵字是bo的。
38.執(zhí)行下列代碼
inta=29,b=100;
cout?setw(3)?a?b?endl;
程序的輸出結(jié)果是:29100o
39.執(zhí)行下列代碼
cout<<"Hex:"?hex?255;
程序的輸出結(jié)果為Hex:ff.
40.C++語言中能夠?qū)崿F(xiàn)輸出一個(gè)換行符并刷新流功能的操控符是endl
三、改錯(cuò)題(本大題共5小題,每小題2分,共10分)
下面的類定義中有一處錯(cuò)誤,請(qǐng)用下橫線標(biāo)出錯(cuò)誤所在行并給出修改意見。
41.4include<iostream.h>
voidmain(){
intx=5,y=6;
constint*p=&x;
*p=y;
cout?*p?endl;
資料僅供參考
}
*P=y;指針P所指向的為一常量,不能進(jìn)行左值操作
42.#include<iostream.h>
classf{
private:intx,y;
public:fl(){x=0;y=0;}
print(){cout?x?f,?y?endl;}
)1
voidmain(){
fa;
a.fl(l,1);
a.print();
}
a.fl(l,1);fl()調(diào)用時(shí)實(shí)參與形參數(shù)量不一致
43.#include<iostream.h>
classf{
private:intx=0,y=0;
public:voidfl(inta,intb){x=a;y=b;}
voidget(){cout?x?,?y?endl;}
};
voidmain(){
fa;
a.fl(1,3);
資料僅供參考
a.get();
}
private:intx=0,y=0;數(shù)據(jù)成員聲明時(shí)不允許直接賦值
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);
cout?a.max(a,b);
}
cout?a.max(a,b);max()不是類的成員函數(shù),不能用a.max()方式調(diào)用
45.#include<iostream.h>
template<classT>
classf{
private:Tx,y;
public:voidfl(Ta,Tb){x=a;y=b;}
Tmax(){retum(x>y)?x:y;}
資料僅供參考
voidmain(){
fa;
a.fl(1.5,3.8);'
cout<<a.x?a.y?a.max()?endl;
)
cout?a.x?a.y?a.max()?endl;x,y是私有類型,不能在主函數(shù)中直接使用
四、完成程序題(本大題共5小題,每小題4分,共20分)
46.完成下面類中的成員函數(shù)的定義。
classpoint
(
private:
intm,n;
public:
point(int,int);
point(point&);
};
point::point(inta,intb)
(
m=a;
n_=b;
)
point::point(point&t)
資料僅供參考
m=t.m;
n=t.n;
)
47.下面是一個(gè)輸入半徑,輸出其面積和周長(zhǎng)的C++程序,在下劃線處填上正確的語句。
#include<iostream>
usingnamespacestd;
constdoublepi=3.14159;
voidmain()
(
doubler;
cout?,fr=";
cin?r;
double1=2.0*pi*r;
doubles=pi*r*r;
cout?,/\nThelongis:"?l?endl;
cout?,/Theareais:"?s?endl;
)
48.在下劃線處填上缺少的部分。
#include<iostream>
#include<fstream>
usingnamespacestd;
classcomplex
資料僅供參考
public:
intreal;
intimag;
complex(intr=0,inti=0)
(
real=r;
imag=i;
)
};
complexoperator+(complex&a,complex&b)
(
intr=a.real+b.real;
inti=a.imag+b.imag;
returncomplex(r,i);
}
voidmain()
(
complexx(l,2),y(3,4),z;
z=x+y;
cout?z.real?,/+"?z.imag?,/i"?endl;
49.程序的輸出結(jié)果如下:
資料僅供參考
1,9
50,30
請(qǐng)根據(jù)輸出數(shù)據(jù)在下面程序中的下劃線處填寫正確的語句。
源程序如下:
#include<iostream>
usingnamespacestd;
classbase
(
private:
intm;
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()<<","?a[l].get()?endl;
cout?ptr->get()<<",";
ptr=ptr-l;
cout<<ptr->get()<<endl;
delete[]ptr;
)
50.在下面橫線處填上求兩個(gè)浮點(diǎn)數(shù)之差的cha函數(shù)的原型聲明、調(diào)用方法。
#include<iostream>
usingnamespacestd;
voidmain()
(
floata,b;
floatcha(float,float);//函數(shù)cha的原型聲明
a=12.5;
b=6.5;
floatc=cha(a,b);//調(diào)用函數(shù)cha
cout?c?endl;
)
floatcha(floatx,floaty)
(
floatw;
w=x-y;
returnw;
資料僅供參考
五、程序分析題(本大題共4小題,每小題5分,共20分)
51.給出下面程序的輸出結(jié)果。
#include<iostream.h>
template<classT>
classSample
(
Tn;
public:
Sampledi){n=i;}
intoperator==(Sample&);
};
template<classT>
intSample<T>::operator=(Sample&s)
(
if(n==s.n)
return1;
else
return0;
}
voidmain()
Sample<int>sl(2),s2(3);
資料僅供參考
cout?/,si與s2的數(shù)據(jù)成員〃<<(sl=s2?〃相等〃:〃不相等〃)?endl;
Sample<double>s3(2.5),s4(2.5);
cout<<〃s3與s4的數(shù)據(jù)成員〃<<(s3=s4?〃相等〃:"不相等")?endl;
)
S1與S2的數(shù)據(jù)成員不相等
S3與S4數(shù)據(jù)成員相等
52.給出下面程序的輸出結(jié)果。
#include<iostream>
usingnamespacestd;
template<classT>
Tmax(TmLTm2)
{return(ml>m2)?ml:m2:}
voidmain(){
cout<<max(l,7)?"\t"?max(2.0,5.0)?endl;
cout?max(,y','b’<<〃\t"?max(/,A","a")?endl;
)75
ya
53.給出下面程序的輸出結(jié)果
ttinclude<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;}
1315
資料僅供參考
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*strl,constchar*str2,constintnum)
intlen=strlen(strl);
title=newchar[len+1];
strcpy(title,strl);
len=strlen(str2);author=newchar[len+1];
strcpy(author,str2);numsold=num;
)
資料僅供參考
?Book(){
deletetitle;deleteauthor;
)
voidprint(ostream&output){
output?n書名:"?title?endl;
output。"作者:"?author?endl;
output*"月銷售量:"<<numsold?endl;
}.
);
voidmain(){
Bookobjl(〃數(shù)據(jù)結(jié)構(gòu)〃,〃嚴(yán)蔚敏〃,200),obj2;
objl.print(cout);
obj2.setbook(〃C++語言程序設(shè)計(jì)","李春葆〃,210);
obj2.print(cout);
)
六、程序設(shè)計(jì)題(本大題共1小題,共10分)
55.在三角形類TRI實(shí)現(xiàn)兩個(gè)函數(shù),功能是輸入三個(gè)頂點(diǎn)坐標(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(....);//用于輸入三個(gè)頂點(diǎn)坐標(biāo)
....test(....);//用于判斷是否構(gòu)成三角形
};請(qǐng)寫出兩個(gè)函數(shù)的過程(如果需要形式參數(shù),請(qǐng)給出形參類型和數(shù)量,以及返回值類型)
判斷三條邊能構(gòu)成三角形的條件:任
意兩邊之和大于第三邊或任意兩邊之
差小于第3邊。
voidtri::settri(floatxl,floatyl,floatx2,floaty2,floatx3,floaty3)
{x.set(xl,yl);y.set(x2,y2);z.set(x3,y3);}
voidtri::test(){
sl=sqrt((x.getx()-y.getx())*(x.g
etx()-y.getx())+(x.gety()-y.gety
())*(x.gety()-y.gety()));
s2=sqrt((x.getx()-z.getx())*(x.getx()-z.getx())+(x.gety()-z.gety())*(x.gety()-z.gety()));
s3=sqrt((y.getx()-z.getx())*(y.getx()-z.getx())+(y.gety()-z.gety())*(y.gety()-z.gety()));
全國1月自學(xué)考試C++程序設(shè)計(jì)試題
課程代碼:04737
-單項(xiàng)選擇題(本大題共20小題,每小題1分,共20分)
在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫在題后的括號(hào)內(nèi)。錯(cuò)選、多選或未
選均無分。
1.C++源程序文件擴(kuò)展名為(A)
A..cppB..hC..libD..obj
資料僅供參考
2.在C++中使用流進(jìn)行輸入輸出,其中專用于從鍵盤進(jìn)行輸入的流是(B)
A.cerrB.cinC.coutD.cfile
3.包含自定義頭文件file.h的預(yù)處理指令是(D)
A.#define<file.h>B.^includefile,hC.#definefile,hD.#include*file.h*
4.用于標(biāo)識(shí)十六進(jìn)制前綴或后綴是(D)
A.無B.后綴L或eC.前綴零D.前綴Ox
5.設(shè)存在整型變量intx,則下列句與其它三項(xiàng)含義不同的是(A)
A.int*p=&x;B.int&p=x;C.int&p=x;D.int&p=x;
6.在定義類成員時(shí),為產(chǎn)生封裝性,則需使用哪個(gè)關(guān)鍵字(D)
A.publicB.publishC.protectedD.private
7.設(shè)函數(shù)voidswap(int&,int&)將交換兩形參的值,如兩整型變量inta=10;intb=15;
則執(zhí)行swap(a,b)后,a、b值分別為(C)
A.10,10B.10,15C.15,10D.15,15
8.函數(shù)默認(rèn)參數(shù)在函數(shù)原型中說明,默認(rèn)參數(shù)必須放在參數(shù)序列的(C)
A.前部B.中部C.后部D.兩端
9.設(shè)存在函數(shù)intmin(int,int)返回兩參數(shù)中較小值,若求15,26,47三者中最小值,下列表示式中錯(cuò)誤
的是(B)
A.intm=min(min(15,26),min(15,47));
B.intm=min(15,26,47);
C.intm=min(15,min(47,26));
D.intm=min(min(47,26),16);
10.下列函數(shù)不能和函數(shù)voidprint(char)構(gòu)成重載的是(C)
A.intprint(int);B.voidprint(char,char);
C.intprint(char);D.voidprint(int,int);
11.在下列成正確表示式中,運(yùn)算結(jié)果類型相同的一對(duì)是(D)
A.7/2和7.0/2.0B.7/2.0和7/2
C.7.0/2和7/2D.7.0/2.0和7.0/2
12.內(nèi)聯(lián)函數(shù)的特點(diǎn)是(A)
A.減少代碼量,加快訪問速度B.減少代碼量,減緩訪問速度
C.增加代碼量,減緩訪問速度D.增加代碼量,加快訪問速度
13.類的私有成員可在何處被訪問(A)
A.本類的成員函數(shù)中B.本類及子類的成員函數(shù)中
C.經(jīng)過對(duì)象名在任何位置D.不可訪問
14.類的構(gòu)造函數(shù)在以下什么情況下會(huì)被自動(dòng)調(diào)用(B)
A.定義成員函數(shù)時(shí)B.定義對(duì)象時(shí)
C.定義數(shù)據(jù)成員時(shí)D.定義友元函數(shù)時(shí)
15.下列關(guān)于析構(gòu)函數(shù)描述正確的是(D)
資料僅供參考
A.能夠重載B.函數(shù)體中必須有delete語句
C.返回類型必須是void類型D.不能指定返回類型
16.設(shè)有函數(shù)TSum(Tx,Ty){returnx+y;},其中T為模板類型,則下列語句中對(duì)該函數(shù)錯(cuò)誤的使用是
(D)
A.Sum(l,2);B.Sum(3.0,2.2);C.Sum('A',,C');D.Sum("A","C");
17.下列哪個(gè)編譯指令屬于條件編譯指令(C)
A.#includeB.^defineC.#elseD.^pragma
18.關(guān)于類的靜態(tài)成員函數(shù)描述錯(cuò)誤的是(A)
A.在創(chuàng)立對(duì)象前不存在B.不能說明為虛函數(shù)
C.不能直接訪問非靜態(tài)函數(shù)D.不是對(duì)象的成員
19.如果類A被聲明成類B的友元,則(D)
A.類A的成員即類B的成員
B.類B的成員即類A的成員
C.類A的成員函數(shù)不得訪問類B的成員
D.類B不一定是類A的友元
20.派生類的對(duì)象能夠訪問以下那種情況繼承的基類成員(D)
A.私有繼承的私有成員B.公有繼承的私有成員
C.私有繼承的保護(hù)成員D.公有繼承的公有成員
二、填空題(本大題共20小題,每小題1分,共20分)
請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無分。
21.若使用標(biāo)準(zhǔn)輸出流把整型變量a的值輸出到屏幕上,實(shí)現(xiàn)此操作的C++語句是_cout?a;一。
22.C++將數(shù)據(jù)從一個(gè)對(duì)象流向另一個(gè)對(duì)象的流動(dòng)抽象為“流”,從流中獲取數(shù)據(jù)的操作稱為—提取—.
23.執(zhí)行下列代碼
intb=100;cout?*Hex:*?hex?b;
程序的輸出結(jié)果是_Hex:64o
24.靜態(tài)聯(lián)編所支持的多態(tài)性稱為一編譯時(shí)的多態(tài)性。
25.C++程序必須有且只有一個(gè)主函數(shù),其函數(shù)名為_main—。
26.寫出聲明一個(gè)復(fù)數(shù)對(duì)象的語句,并使該對(duì)象被初始化為2.2+1.3i,此聲明語句是_complex〈double>
c(2.2,1.3);o
27.若有函數(shù)定義為:
intadd(intml=0,intm2=2,intm3=4)
{returnml+m2+m3;}
在主函數(shù)中有ints=add(l)+add(0,l)+add(0,1,2);
則執(zhí)行此語句后s的值為_15—o
28.C++中使用_inline_關(guān)鍵字說明函數(shù)為內(nèi)聯(lián)函數(shù)。
29.在源程序中有宏定義:#definePI3.14,則若不想使該宏定義影響到程序的其它地方,能夠使用一#undef
PI刪除該宏定義。(注:配套教材上沒有)
資料僅供參考
30.類和其它數(shù)據(jù)類型不同的是,組成這種類型的不但能夠有數(shù)據(jù),還能夠有對(duì)數(shù)據(jù)進(jìn)行操作的—函數(shù)o
31.有下列代碼inta=0;doubleb=0;cin?a?b;當(dāng)用鍵盤輸入1.25時(shí),b=_0.25。
32.對(duì)于類Point而言,其析構(gòu)函數(shù)的定義原型為「Point();。
33.對(duì)象成員構(gòu)造函數(shù)的調(diào)用順序取決于這些對(duì)象在類中說明的順序,與它們?cè)诔蓡T初始化列表中給出的順序
—無關(guān)一。
34.類的簡(jiǎn)單成員函數(shù)是指聲明中不含.const、volatile、static關(guān)鍵字的函數(shù)。
35.與操作對(duì)象的數(shù)據(jù)類型相互獨(dú)立的算法稱為—范型算法—o
36.從一個(gè)或多個(gè)以前定義的類產(chǎn)生新類的過程稱為一派生___o
37.在vector類中向向量尾部插入一個(gè)對(duì)象的方法是_push_back()。
38.C++中用于動(dòng)態(tài)創(chuàng)立對(duì)象,并返回該對(duì)象的指針的關(guān)鍵字是_new—。
39.C++的流類庫預(yù)定義的與標(biāo)準(zhǔn)輸出設(shè)備相聯(lián)接的流是_cout.
40.執(zhí)行下列代碼
cout?noshowpoint?123.0;
程序輸出結(jié)果是_123-o
三、改錯(cuò)題(本大題共5小題,每小題2分,共10分)
下面的類定義中有一處錯(cuò)誤,請(qǐng)用下橫線標(biāo)出錯(cuò)誤所在行并給出修改意見。
41.#include<iostream.h>
classf{
private:floatx,y;
public:f(floata,floatb){x=a;y=b;}
floatmax(){return(x<y)?x:y;}//求最大值〃error應(yīng)改為floatmax(){return(x>y)?x:y;}
);
main(){
fa(l.5,3.8);cout?a.max()?endl;
)
42.#include<iostream.h>
classtest{
private:intx;
public:test(inta){x=a;}
voidset(inta){x=a;}
voidget(){cout?x?endl;}
}//error缺少分號(hào);
mainO{
consttesta(3);
a.set(5);
a.get();
}
資料僅供參考
43.#include<iostream.h>
classpoint{
private:floatx,y;
public:fl(floata,floatb){x=a;y=b;}
point(){x=0;y=0;}
voidgetxO{cout?x?endl;}
voidgetyO{cout?y?endl;}
};
voidprint(pointa){cout?a.x?endl;"/error:應(yīng)將print函數(shù)說明為point類的友元函數(shù)
main(){
pointa;
a.fl(3.0,5.0);
print(a);
)
44.#include<iostream.h>
classf{
private:intx,y;
public:fl(inta,intb){x=a;y=b;}
voidprint(){cout?x?y?endl;}
);
mainO{
fa;
a.fl(1.5,1.8);//error:實(shí)際參數(shù)類型與fl函數(shù)的形參類型不一致,應(yīng)修改為一致。
a.print();
)
45.#include<iostream.h>
mainO{
intx=6;
constint*p=x;//error:應(yīng)改為constint*p=&x;
cout?*p?endl;
)
四、完成程序題(本大題共5小題,每小題4分,共20分)
46.完成下面程序,使其輸出10,并在退出運(yùn)行時(shí)正確釋放分配給指針的存儲(chǔ)空間。
#include<iostream>
usingnamespacestd;
voidmainO
資料僅供參考
int*a,*p;
a=newint(10);
P=_a;
cout?*p?endl;
___deletep;(或deletea;)
)
47.ttinclude<iostream>
usingnamespacestd;
classbase
{
private:intx;
public:base(inta){x=a;}
intget(){returnx;}
voidshowbase(){cout<<"x="<<x<<endl;}
);
classDerived:publicbase
{private:inty;
public:Derived(inta,intb):base(a){y=b;}
voidshowderived()
{cout?*x=*?get()<<",y=*?y?endl;}
);
voidmain()
(
baseb⑶;
Derivedd(6,7);
b.showbase();
d.showderived();
b=d;
b.showbase();
Derivedbl(d);(或Derivedbl(6,7);或basebl(6);或basebl(d);)
bl.showbase();
base*pb=&bl;
pb->showbase();
d.showderived();
b.showbase();
輸出結(jié)果如下:
資料僅供參考
x=3
x=6,y=7
x=6
x=6
x=6
x=6,y=7
x=6
48.下面程序的運(yùn)行結(jié)果如下:
B::display()
C::display()
在下劃線處填上缺少的部分。源程序如下:
#include<iostream>
usingnamespacestd;
classB
(
public:
virtualvoiddisplay(){cout?"B::display()/z?endl;}
);
classC:publicB
(
public:
virtualvoid(或void)display。{cout?^C::display0*?endl;}
);
voidfun(B*p)
(
p->display();
)
voidmain()
(
Bb,*pb;
Cc;
pb=&b;
fun(pb);
pb=&c;
fun(pb);
}
49.下面程序的運(yùn)行結(jié)果如下:
資料僅供參考
Thisislinel
Thisisline2
Thisisline3
在下劃線處填上缺少的部分。源程序如下:
ttinclude<iostream>
ttinclude<fstream)
usingnamespacestd;
voidmain()
(
fstreamfin,fout;
fout.open(^my.txt",ios::out);
if(!fout.is_open())
return;
for(inti=0;i<3;i=i+l)
fout<<"Thisisline/z?i+l?endl;
fout.close();
fin.open("my.txt",ios::in);
if(!fin.is_open())
return;
charstr[100];
while(!fin.eof()(或等價(jià)答案))
(
fin.getline(str,100);
cout?str?endl;
)
fin.close();
)
50.在下劃線處填上缺少的部分。源程序如下:
ttinclude<iostream>
usingnamespacestd;
template<classT>
Tfun(Tx)
(
-T_y;
y=x*x-T(5);
returny;
)
資料僅供參考
voidmain()
floata=2;
cout?fun(a);
}
五、程序分析題(本大題共4小題,每小題5分,共20分)
51.請(qǐng)寫出myTextl.txt文本文件中的內(nèi)容
#include<iostream>
ttinclude<string>
usingnamespacestd;
#include<fstream>
voidmain()
(
ofstreammyFilel;
myFilel.openCmyTextl.txt");
cout?/rEnterthedatainChineseformat(e.g.,,May25):*?endl;
stringDate(",January1");
stringYear二Date,substr(0,4);
intk=Date.find(",");
inti=Date.find("");
stringMonth=Date.substr(k+1,i-k-l);
stringDay=Date.substr(i+1,2);
stringNewDate=Day+""+Month+"*+Year;
myFilel?/zoriginaldate:“<<Date?endl;
myFi1e1?^Converteddate:*?NewDate?endl;
myFilel.close();
)
originaldate:,January1
Converteddate:1January
52.給出下面程序的輸出結(jié)果
#include<iostream>
usingnamespacestd;
classSimple
(
intx,y;
public:
Simple(){x=y=0;}
資料僅供參考
Simple(inti,intj){x=i;y=j;}
voidcopy(Simple&s);
voidsetxy(inti,intj){x=i;y=j;}
voidprint(){cout<<"x="<<x<<",y="<<y?endl;}
);
voidSimple::copy(Simple&s)
(
x=s.x;y=s.y;
}
voidfunc(Simplesi,Simple&s2)
(
si.setxy(30,40);
s2.setxy(70,80);
)
voidmain()
(
Simpleobjl(1,2),obj2;
obj2.copy(objl);
func(objl,obj2);
objl.print();
obj2.print();
)
x=l,y=2
x=70,y=80
53.給出下面程序的輸出結(jié)果
ttinclude*iostream.h"
intmain()
(
inti=17;
while(i>=10)
if(一i%4==3)continue;
else
cout?"i="?i—?endl;
)
i=16
i=14
資料僅供參考
i=12
i=10
54.給出下面程序的輸出結(jié)果
#include<iostream>
usingnamespacestd;
voidmainO
(
intnum=300;
int&ref=num;
cout?ref;
ref=ref-100;
cout<<""<<num;
num=num-50;
cout?**?ref?endl;
)
300200150
六、程序設(shè)計(jì)題(本大題共1小題,共10分)
55.定義堆棧類模板Stack(先進(jìn)后出),棧的大小由使用者確定。要求該類模板對(duì)外提供
如下二種基本操作:
(1)push入棧(2)pop出棧,用數(shù)組來實(shí)現(xiàn)
#include<iostream>
usingnamespacestd;
template<classT,intsize>
classStack{
Tx[size];
intcurrent;
public:
Stack(){current=0;}
.???push(....);
....pop(....);
};
請(qǐng)寫出兩個(gè)函數(shù)的過程(如果需要形式參數(shù),請(qǐng)給出形參類型和數(shù)量,以及返回值類型)
參考答案
#include<iostream>
usingnamespacestd;
template<classT,intsize>
classStack{
資料僅供參考
Tx[size];
intcurrent;
public:
Stack(){current=O;}
boolPush(Te);
boolPop(T&e);
};
template<classT,intsize>
boolStack<T,size>::Push(Te){〃插入新元素e為新的棧頂元素
if(current=size){〃棧滿
returnfalse;
)
x[++current]=e;
returntrue;
}//Push
template<classT,intsize>
boolStack<T,size>::Pop(T&e){〃若棧不空,刪除棧頂元素,并用e返回其值,并返回true,否則返回false
if(current==0)returnfalse;
e=x[current-];
returntrue;
}//Pop
〃測(cè)試程序,不是答案的一部分
voidmain(){
Stack<int,5>s;
s.Push(1);s.Push(2);
inte;
if(s.Pop(e))
cout?e?endl;
else
cout<<"???<<endl;
cout<<"再次出棧,試試看?..”<<endl;
if(s.Pop(e))
cout?e?endl;
else
cout<〈”棧己空Kendl;
資料僅供參考
全國自考C++程序設(shè)計(jì)模擬試卷(-)38
一、單項(xiàng)選擇題(本大題共20小題,每小題1分,共20分)在每小題列出的四個(gè)備選
項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫在題后的括號(hào)內(nèi)。錯(cuò)選、多選或未
選均無分。
1.編寫C++程序一般需經(jīng)過的幾個(gè)步驟依次是。
A.編輯、調(diào)試、編譯、連接
B.編輯、編譯、連接、運(yùn)行
C.編譯、調(diào)試、編輯、連接
D.編譯、編輯、連接、運(yùn)行
答案:B解析:(P21)經(jīng)過編輯、編譯、連接和運(yùn)行四個(gè)步驟。編輯是將C++源程序輸入計(jì)算機(jī)
的過程,保存文件名為cpp。編譯是使用系統(tǒng)提供的編譯器將源程序cpp生成機(jī)器語言的過程,
目標(biāo)文件為obj,由于沒有得到系統(tǒng)分配的絕對(duì)地址,還不能直接運(yùn)行。連接是將目標(biāo)文件obj
轉(zhuǎn)換為可執(zhí)行程序的過程,結(jié)果為exe。運(yùn)行是執(zhí)行exe,在屏幕上顯示結(jié)果的過程。
2.決定C++語言中函數(shù)的返回值類型的是。
A.return語句中的表示式類型
B.調(diào)用該函數(shù)時(shí)系統(tǒng)隨機(jī)產(chǎn)生的類型
C.調(diào)用該函數(shù)時(shí)的主調(diào)用函數(shù)類型
D.在定義該函數(shù)時(shí)所指定的數(shù)據(jù)類型答案:D解析:(P51)函數(shù)的返回值類型由定義函數(shù)時(shí)的指定
的數(shù)據(jù)類型決定的。A項(xiàng)的表示式的值要轉(zhuǎn)換成函數(shù)的定義時(shí)的返回類型。
3.下面敘述不正確的是O
A.派生類一般都用公有派生
B.對(duì)基類成員的訪問必須是無二義性的
C.賦值兼容規(guī)則也適用于多重繼承的組合
D.基類的公有成員在派生類中依然是公有的答案:D解析:(P136)繼承方式有三種:公有、私有
和保護(hù)。多繼承中,多個(gè)基類具有同名成員,在它們的子類中訪問這些成員,就產(chǎn)生了二義
性,但進(jìn)行訪問時(shí),不能存在二義性。賦值兼容規(guī)則是指派生類對(duì)象能夠當(dāng)作基類對(duì)象使用,
只要存在繼承關(guān)系,因此單繼承或多繼承都適用?;愔械墓谐蓡T采用私有繼承時(shí),在派生
類中變成了私有成員,因此D項(xiàng)錯(cuò)誤。
4.所謂數(shù)據(jù)封裝就是將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)操作組裝在一起,形成一個(gè)實(shí)體,這實(shí)體
也就是()
A.類
B.對(duì)象
C.函數(shù)體
D.數(shù)據(jù)塊
資料僅供參考
答案:A解析:(P39)類即數(shù)據(jù)和操作的組合體,數(shù)據(jù)是類的靜態(tài)特征,操作是類具
有的動(dòng)作。
5.在公有派生類的成員函數(shù)不能直接訪問基類中繼承來的某個(gè)成員,則該成員一定是基類中
的()
A.私有成員
B.公有成員
C.保護(hù)成員
D.保護(hù)成員或私有成員
答案:A解析:(P133)在派生類中基類的保護(hù)或者基類公有都能夠直接訪問,基類的私有成員
只能是基類的成員函數(shù)來訪問。因此選擇A項(xiàng)。
6.對(duì)基類和派生類的關(guān)系描述中,錯(cuò)誤的是()
A.派生類是基類的具體化
B.基類繼承了派生類的屬性
C.派生類是基類定義的延續(xù)
D,派生類是基類的特殊化答案:B解析:(P129)派生類的成員一個(gè)是來自基類,一個(gè)來自本身,
因此派生類是基類的擴(kuò)展,也是基類的具體化和特殊化,派生類是對(duì)基類擴(kuò)展。B項(xiàng)基類不能繼
承派生類成員,因此錯(cuò)誤。
7.關(guān)于this指針使用說法正確的是()
A.保證每個(gè)對(duì)象擁有自己的數(shù)據(jù)成員,但共享處理這些數(shù)據(jù)的代碼
B.保證基類私有成員在子類中能夠被訪問。
C.保證基類保護(hù)成員在子類中能夠被訪問。
D,保證基類公有成員在子類中能夠被訪問。
答案:A解析:(P86)this指針是隱藏的,能夠使用該指針來訪問調(diào)用對(duì)象中的數(shù)據(jù)?;惖某?/p>
員在派生類中能否訪問,與繼承方式有關(guān),與this沒有關(guān)系。因此選擇A項(xiàng)。
8.所謂多態(tài)性是指()
A.不同的對(duì)象調(diào)用不同名稱的函數(shù)
B.不同的對(duì)象調(diào)用相同名稱的函數(shù)
C.一個(gè)對(duì)象調(diào)用不同名稱的函數(shù)
D.一個(gè)對(duì)象調(diào)用不同名稱的對(duì)象答案:B解析:(P167)多態(tài)性有兩種靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)性,
靜態(tài)多態(tài)性是指調(diào)用同名函數(shù),由于參數(shù)的不同調(diào)用不同的同名函數(shù);動(dòng)態(tài)多態(tài)性是指不同對(duì)
象調(diào)用同名函數(shù)時(shí),由于對(duì)象不同調(diào)用不同的同名函數(shù)。多態(tài)性肯定具有相同的函數(shù)名,因此
選擇B項(xiàng)。
9.一個(gè)函數(shù)功能不太復(fù)雜,但要求被頻繁調(diào)用,則應(yīng)把它定義為。
A.內(nèi)聯(lián)函數(shù)
B.重載函數(shù)
資料僅供參考
C.遞歸函數(shù)
D.嵌套函數(shù)
答案:A解析:(P59)內(nèi)聯(lián)函數(shù)特征代碼少,頻繁調(diào)用,執(zhí)行效率高。重載函數(shù)解決統(tǒng)一接口的問
題;遞歸是子程序調(diào)用,程序調(diào)用要耗費(fèi)很多空間和時(shí)間,循環(huán)/迭代都比遞歸有效率得多,遞歸只
是從形式上,邏輯比較簡(jiǎn)潔。嵌套函數(shù)即重復(fù)調(diào)用,速度較慢。因此選擇A項(xiàng)。
10.下面函數(shù)模板定義中不正確的是()
A.A
B.B
C.C
D.D
答案:A解析:(P147)A項(xiàng)中F是一個(gè)返回Q類型的值,而return中用返回類型作為返回值錯(cuò)
誤。因此選擇
A項(xiàng)。
11.假設(shè)ClassY:publicX,即類Y是類X的派生類,則說明一個(gè)Y類的對(duì)象時(shí)和刪除Y類對(duì)
象時(shí)
,調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的次序分別為()
A.X,Y;Y,X
B.X,Y;X,Y
C.Y,X;X.Y
D.Y.X;Y,X
答案:A解析:(P130)派生類構(gòu)造函數(shù)必須對(duì)這三類成員進(jìn)行初始化,其執(zhí)行順序:調(diào)用基類
構(gòu)造函數(shù)
;調(diào)用子對(duì)象的構(gòu)造函數(shù);派生類的構(gòu)造函數(shù)體。析構(gòu)函數(shù)在執(zhí)行過程中也要對(duì)基類和成員對(duì)
象進(jìn)行操作,但它的執(zhí)行過程與構(gòu)造函數(shù)正好相反,即對(duì)派生類新增普通成員進(jìn)行清理;調(diào)用
成員對(duì)象析構(gòu)函數(shù),對(duì)派生類新增的成員對(duì)象進(jìn)行清理;調(diào)用基類析構(gòu)函數(shù),對(duì)基類進(jìn)行清
理,因此選擇A項(xiàng)。
12.適宜采用inline定義函數(shù)情況是()
A.函數(shù)體含有循環(huán)語句
B.函數(shù)體含有遞歸語句
C.函數(shù)代碼少、頻繁調(diào)用
D.函數(shù)代碼多、不常調(diào)用
答案:C解析:(P59)內(nèi)聯(lián)函數(shù)具有程序代碼少、頻繁調(diào)用和執(zhí)行效率高的特征,因此選擇C
項(xiàng)。
13.假定一個(gè)類的構(gòu)造函數(shù)為A(intaa,intbb){a=aa—;b=a*bb;},則執(zhí)行Ax
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 36917.2-2024牙科學(xué)技工室用刃具第2部分:技工室用硬質(zhì)合金刃具
- 管風(fēng)琴項(xiàng)目運(yùn)營指導(dǎo)方案
- 電動(dòng)干衣機(jī)市場(chǎng)發(fā)展前景分析及供需格局研究預(yù)測(cè)報(bào)告
- 人臉識(shí)別與機(jī)器學(xué)習(xí)行業(yè)經(jīng)營分析報(bào)告
- 電解水制氫氧設(shè)備項(xiàng)目運(yùn)營指導(dǎo)方案
- 5G無人飛行器行業(yè)經(jīng)營分析報(bào)告
- 廚房洗滌槽出租行業(yè)營銷策略方案
- 修指甲工具產(chǎn)品供應(yīng)鏈分析
- 紋章牌紙封簽市場(chǎng)分析及投資價(jià)值研究報(bào)告
- 福建寧德五校2024-2025學(xué)年高三上學(xué)期11月期中考試英語試題 (解析版)
- 現(xiàn)代科技檔案管理學(xué)課件
- 百葉窗安裝施工方案及施工工藝方法
- 小學(xué)科學(xué)教育科學(xué)三年級(jí)上冊(cè)空氣 我們來做熱氣球 省一等獎(jiǎng) 省賽獲獎(jiǎng)
- 籌集資金的核算課件
- 義務(wù)教育課程實(shí)施情況匯報(bào)
- 蘇科版三年級(jí)上冊(cè)勞動(dòng)第一課《包書皮》課件(定稿)
- 慢阻肺上課完整版課件
- 銀監(jiān)會(huì)英語考試六篇英語閱讀理解和一篇完形填空
- 聽覺理解能力評(píng)估記錄表
- 食品企業(yè)生產(chǎn)部門年終總結(jié)報(bào)告精編ppt
- DBJ50∕T-338-2019 輕質(zhì)隔墻條板應(yīng)用技術(shù)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論