2023年C++試題及答案2_第1頁
2023年C++試題及答案2_第2頁
2023年C++試題及答案2_第3頁
2023年C++試題及答案2_第4頁
2023年C++試題及答案2_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

單項選擇題(本大題共20小題,每小題1分,共20分)1.編寫C++程序一般需通過的幾個環(huán)節(jié)依次是()A.編輯、調(diào)試、編譯、連接B.編輯、編譯、連接、運營C.編譯、調(diào)試、編輯、連接D.編譯、編輯、連接、運營答案:B2.決定C++語言中函數(shù)的返回值類型的是()A.return語句中的表達(dá)式類型B.調(diào)用該函數(shù)時系統(tǒng)隨機(jī)產(chǎn)生的類型C.調(diào)用該函數(shù)時的主調(diào)用函數(shù)類型D.在定義該函數(shù)時所指定的數(shù)據(jù)類型答案:D3.下面敘述不對的的是()A.派生類一般都用公有派生B.對基類成員的訪問必須是無二義性的C.賦值兼容規(guī)則也合用于多重繼承的組合D.基類的公有成員在派生類中仍然是公有的答案:D4.所謂數(shù)據(jù)封裝就是將一組數(shù)據(jù)和與這組數(shù)據(jù)有關(guān)操作組裝在一起,形成一個實體,這實體也就是()A.類B.對象C.函數(shù)體D.數(shù)據(jù)塊答案:A5.在公有派生類的成員函數(shù)不能直接訪問基類中繼承來的某個成員,則該成員一定是基類中的()A.私有成員B.公有成員C.保護(hù)成員D.保護(hù)成員或私有成員答案:A6.對基類和派生類的關(guān)系描述中,錯誤的是()A.派生類是基類的具體化B.基類繼承了派生類的屬性C.派生類是基類定義的延續(xù)D.派生類是基類的特殊化答案:B7.關(guān)于this指針使用說法對的的是()A.保證每個對象擁有自己的數(shù)據(jù)成員,但共享解決這些數(shù)據(jù)的代碼B.保證基類私有成員在子類中可以被訪問。C.保證基類保護(hù)成員在子類中可以被訪問。D.保證基類公有成員在子類中可以被訪問。答案:A8.所謂多態(tài)性是指()A.不同的對象調(diào)用不同名稱的函數(shù)B.不同的對象調(diào)用相同名稱的函數(shù)C.一個對象調(diào)用不同名稱的函數(shù)D.一個對象調(diào)用不同名稱的對象答案:B9.一個函數(shù)功能不太復(fù)雜,但規(guī)定被頻繁調(diào)用,則應(yīng)把它定義為()A.內(nèi)聯(lián)函數(shù)B.重載函數(shù)C.遞歸函數(shù)D.嵌套函數(shù)答案:A10.下面函數(shù)模板定義中不對的的是()A.AB.BC.CD.D答案:A11.假設(shè)ClassY:publicX,即類Y是類X的派生類,則說明一個Y類的對象時和刪除Y類對象時,調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的順序分別為()A.X,Y;Y,XB.X,Y;X,YC.Y,X;X,YD.Y,X;Y,X答案:A12.適宜采用inline定義函數(shù)情況是()A.函數(shù)體具有循環(huán)語句B.函數(shù)體具有遞歸語句C.函數(shù)代碼少、頻繁調(diào)用D.函數(shù)代碼多、不常調(diào)用答案:C13.假定一個類的構(gòu)造函數(shù)為A(intaa,intbb){a=aa--;b=a*bb;},則執(zhí)行Ax(4,5);語句后,x.a和x.b的值分別為()A.3和15B.5和4C.4和20D.20和5答案:C14.在類中說明的成員可以使用關(guān)鍵字的是()A.publicB.externC.cpuD.register答案:A15.下列不能作為類的成員的是()A.自身類對象的指針B.自身類對象C.自身類對象的引用D.另一個類的對象答案:B16.使用地址作為實參傳給形參,下列說法對的的是()A.實參是形參的備份B.實參與形參無聯(lián)系C.形參是實參的備份D.實參與形參是同一對象答案:D17.下列程序的輸出結(jié)果是()#include<iostream.h>voidmain(){intn[][3]={10,20,30,40,50,60};int(*p)[3];p=n;cout<<p[0][0]<<","<<*(p[0]+1)<<","<<(*p)[2]<<endl;}A.10,30,50B.10,20,30C.20,40,60D.10,30,60答案:B18.在C++中,使用流進(jìn)行輸入輸出,其中用于屏幕輸入()A.cinB.cerrC.coutD.clog答案:A19.假定AA為一個類,a()為該類公有的函數(shù)成員,x為該類的一個對象,則訪問x對象中函數(shù)成員a()的格式為()A.x.aB.x.a()C.x->aD.(*x).a()答案:B20.關(guān)于對象概念的描述中,說法錯誤的是()A.對象就是C語言中的結(jié)構(gòu)變量B.對象代表著正在創(chuàng)建的系統(tǒng)中的一個實體C.對象是類的一個變量D.對象之間的信息傳遞是通過消息進(jìn)行的答案:A二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上對的答案。錯填、不填均無分。1.C++的流庫預(yù)定義了4個流,它們是cin、cout、clog和___。答案:(P193)cerr2.每個對象都是所屬類的一個___。答案:(P69)實例3.在已經(jīng)定義了整型指針ip后,為了得到一個涉及10個整數(shù)的數(shù)組并由ip所指向,應(yīng)使用語句___。答案:(P78)int*ip=newint[10];4.函數(shù)模板中緊隨template之后尖括號內(nèi)的類型參數(shù)都要冠以保存字___。答案:(P145)class5.定義類的動態(tài)對象數(shù)組時,系統(tǒng)只可以自動調(diào)用該類的___構(gòu)造函數(shù)對其進(jìn)行初始化。答案:(P80)無參6.表達(dá)式cout<<end1還可表達(dá)為___。答案:‘\n’7.在C++中,訪問一個指針?biāo)赶虻膶ο蟮某蓡T所用的指向運算符是___。答案:->8.假如一個類的名稱為MyClass,使用這個類的一個對象初始化該類的另一個對象時,可以調(diào)用___構(gòu)造函數(shù)來完畢此功能。答案:(P80)復(fù)制或拷貝9.對賦值運算符進(jìn)行重載時,應(yīng)聲明為___函數(shù)。答案:(P183)類成員10.假如要把A類成員函數(shù)f()且返回值為void聲明為類B的友元函數(shù),則應(yīng)在類B的定義中加入的語句___。答案:(P109)friendvoidA::f();11.下列程序段的輸出結(jié)果是___。for(i=0,j=10,k=0;i<=j;i++,j-=3,k=i+j);cout<<k;答案:412.String類的___方法返回查找到的字符串在主串的位置。答案:(P40)n=0;while(n=1)n++;while循環(huán)執(zhí)行次數(shù)是___。答案:無限次14.控制格式輸入輸出的操作中,函數(shù)___是用來設(shè)立填充字符。規(guī)定給出函數(shù)名和參數(shù)類型答案:(P195)setfill(char)15.C++語言支持的兩種多態(tài)性分別是編譯時的多態(tài)性和___的多態(tài)性。答案:(P167)運營時16.設(shè)函數(shù)sum是由函數(shù)模板實現(xiàn)的,并且sum(3,6)和sum(4.6,8)都是對的的函數(shù)調(diào)用,則函數(shù)模板具有___個類型參數(shù)。答案:(P61)217.執(zhí)行下列代碼stringstr("HelloC++");cout<<str.substr(5,3);程序的輸出結(jié)果是___。答案:(P42)C++18.在面向?qū)ο蟮某绦蛟O(shè)計中,將一組對象的共同特性抽象出來形成___。答案:(P38)類19.定義類動態(tài)對象數(shù)組時,元素只能靠自動調(diào)用該類的___來進(jìn)行初始化。答案:(P77)無參構(gòu)造函數(shù)20.已知有20個元素int類型向量V1,若用V1初始化為V2向量,語句是___。答案:(P151)ector<int>V2(V1);改錯題(本大題共5小題,每小題2分,共10分)1.#include<iostream.h>classTest{private:intx,y=20;public:Test(inti,intj){x=i,y=j;}intgetx(){returnx;}intgety(){returny;}};voidmain(){Testmt(10,20);cout<<mt.getx()<<endl;cout<<mt.gety()<<endl;}答案:intx,y=20;在類內(nèi)部不能對數(shù)據(jù)成員直接賦值。[修改]intx,y;2.#include<iostream.h>classTest{intx,y;public:fun(inti,intj){x=i;y=j;}show(){cout<<"x="<<x;if(y)cout<<",y="<<y<<endl;cout<<endl;}};voidmain(){Testa;a.fun(1);a.show();a.fun(2,4);a.show();}答案:inti,intj調(diào)用時,既有一個參數(shù),也有兩個參數(shù),且沒有重載,所以參數(shù)需要帶默認(rèn)值。所以inti,intj錯誤。[修改]inti,intj=0//注j只要有一個int類型的數(shù)據(jù)就行。3.#include<iostream.h>classA{inti;public:virtualvoidfun()=0;A(inta){i=a;}};classB:publicA{intj;public:voidfun(){cout<<"B::fun()\n";}B(intm,intn=0):A(m),j(n){}};voidmain(){A*pa;Bb(7);pa=&b;}答案:B(intm,intn=0):A(m),j(n){}由于基類是抽象類,不能被實例化,所以在派生類中不能調(diào)用初始化基類對象。所以B(intm,intn=0):A(m),j(n){}錯誤,刪去A(m)。[修改]B(intm,intn=0):j(n){}4.#include<iostream.h>classX{public:intx;public:X(intx){cout<<this->x=x<<endl;}X(X&t){x=t.x;cout<<t.x<<endl;}voidfun(X);};voidfun(Xt){cout<<t.x<<endl;}voidmain(){fun(X(10));}答案:cout<<this->x=x<<endl;要輸出this->x=x表達(dá)式的值要加括號。[修改]cout<<(this->x=x)<<endl;5.#include<iostream.h>#include<string.h>classBas{public:Bas(char*s="\0"){strcpy(name,s);}voidshow();protected:charname[20];};Basb;voidshow(){cout<<"name:"<<<<endl;}voidmain(){Basd2("hello");show();}答案:voidshow();是普通函數(shù)不是成員函數(shù),但是要訪問類成員,需要定義為友元函數(shù)。修改]friendvoidshow();四、完畢程序題(本大題共5小題,每小題4分,共20分)1.在下面程序橫線處填上適當(dāng)字句,以使該程序執(zhí)行結(jié)果為:504342110010.111.1#include<iostream.h>template<classT>voidf(__________){__________;for(inti=0;i<n/2;i++)t=a[i],a[i]=a[n-1-i],a[n-1-i]=t;}voidmain(){inta[5]={10,21,34,4,50};doubled[6]={11.1,10.1,9.1,8.1,7.1};f(a,5);f(d,6);for(inti=0;i<5;i++)cout<<a[i]<<"";cout<<endl;for(i=0;i<6;i++)cout<<d[i]<<"";cout<<endl;}答案:Ta[],intn,Tt=0;[解析]不同的數(shù)據(jù)類型的調(diào)用,使用了模板。f函數(shù)增長t變量,由于實參類型不同,所以t的類型應(yīng)當(dāng)是T類型的。2.在下面程序的底畫線處填上適當(dāng)?shù)淖志?,使該程序?zhí)行結(jié)果為40。#include<iostream.h>classTest{public:______;Test(inti=0){x=i+x;}intGetnum(){returnTest::x+7;}};_______;voidmain(){Testtest;cout<<test.Getnum()<<endl;;}答案:staticintx;,intTest::x=30;[解析]從成員函數(shù)訪問方式類名::成員可知是靜態(tài)成員所以staticintx;從結(jié)果要對初始化為30,且在類外進(jìn)行初始化,intTest::x=30;。3.在下列程序的空格處填上適當(dāng)?shù)淖志洌馆敵鰹椋?,2,10。#include<iostream.h>#include<math.h>classMagic{doublex;public:Magic(doubled=0.00):x(fabs(d)){}Magicoperator+(______){returnMagic(sqrt(x*x+c.x*c.x));}_______operator<<(ostream&stream,Magic&c){stream<<c.x;returnstream;}};voidmain(){Magicma;cout<<ma<<","<<Magic(2)<<","<<ma+Magic(-6)+Magic(-8)<<endl;}答案:operator+(Magic&c),friendostream&operator[解析]對加法進(jìn)行重載,operator+(Magic&c),是對插入符進(jìn)行重載,要訪問成員所以定義為友元函數(shù),friendostream&operator。4.下面是一個輸入半徑,輸出其面積和周長的C++程序,在下劃線處填上對的的語句。#include<iostream>_________;_________;voidmain(){doublerad;cout<<"rad=";cin>>rad;doublel=2.0*pi*rad;doubles=pi*rad*rad;cout<<"\nThelongis:"<<l<<endl;cout<<"Theareais:"<<s<<endl;}答案:usingnamespacestd,#definepi3.14159[解析]進(jìn)行輸入或輸出要引入iostream,所以usingnamespacestd;從標(biāo)點看沒有分號,所以使用宏定義,#definepi3.14159。5.程序?qū)崿F(xiàn)大寫字母轉(zhuǎn)換成小寫字母。#include<iostream.h>voidmain(){chara;_______;cin>>a;if(_______)a=a+i;cout<<a<<endl;}答案:inti=32;,a>=A&&a<=Z[解析]大寫字母變小寫字母相差32,需要對i聲明并初始化。大寫字母變小寫字母。要判斷字符是大寫字母。五、程序分析題(本大題共4小題,每小題5分,共20分)1.給出下面程序輸出結(jié)果。#include<iostream.h>classa{public:virtualvoidprint(){cout<<"aprog..."<<endl;};};classb:publica{};classc:publicb{public:voidprint(){cout<<"cprog..."<<endl;}};voidshow(a*p){(*p).print();}voidmain(){aa;bb;cc;show(&a);show(&b);show(&c);}答案:aprog...aprog...cprog...[解析]考察多態(tài)性的。a類對象調(diào)用自身的虛函數(shù),b類由于沒有覆寫print,所以仍然調(diào)用基類的虛函數(shù)。而c類重新定義print虛函數(shù),所以調(diào)用c類的print。2.給出下面程序輸出結(jié)果。#include<math.h>#include<iostream.h>#include<iomanip.h>boolfun(longn);voidmain(){longa=10,b=30,l=0;if(a%2==0)a++;for(longm=a;m<=b;m+=2)if(fun(m)){if(l++%10==0)cout<<endl;cout<<setw(5)<<m;}}boolfun(longn){intsqrtm=(int)sqrt(n);for(inti=2;i<=sqrtm;i++)if(n%i==0)returnfalse;returntrue;}答案:111317192329[解析]循環(huán)體用來判斷n是否是質(zhì)數(shù)的函數(shù),在main函數(shù)判斷10~30之間質(zhì)數(shù)。3.給出下面程序輸出結(jié)果。#include<iostream.h>classTest{intx,y;public:Test(inti,intj=0){x=i;y=j;}intget(inti,intj){returni+j;}};voidmain(){Testt1(2),t2(4,6);int(Test::*p)(int,int=10);p=Test::get;cout<<(t1.*p)(5)<<endl;Test*p1=&t2;cout<<(p1->*p)(7,20)<<endl;}答案:1527[解析]指向類成員函數(shù)的指針的使用,*p指向Test類中有兩個參數(shù)的函數(shù)的一個指針。P=Test::get.這樣p就和get發(fā)生了聯(lián)系。(t1.*p)(5)等價于調(diào)用一個參數(shù)的get函數(shù)。4.#include<iostream.h>#include<string.h>#include<iomanip.h>classstudent{charname[8];intdeg;charlevel[7];friendclassprocess;//說明友元類public:student(charna[],intd){strcpy(name,na);deg=d;}};classprocess{public:voidtrans(student&s){inti=s.deg/10;switch(i){case9:strcpy(s.level,"優(yōu)");break;case8:strcpy(s.level,"良");break;case7:strcpy(s.level,"中");break;case6:strcpy(s.level,"及格");break;default:strcpy(s.level,"不及格");}}voidshow(student&s){cout<<setw(10)<<<<setw(4)<<s.deg<<setw(8)<<s.level<<endl;}};voidmain(){studentst[]={student("張三",78),student("李四",92),student("王五",62),student("孫六",88)};processp;cout<<"結(jié)果:"<<"姓名"<<setw(6)<<"成績"<<setw(8)<<"等級"<<endl;for(inti=0;i<4;i++){p.trans(st[i]);p.show(st[i]);}}答案:結(jié)果:姓名成績等級張三78中李四92優(yōu)王五62及格孫六88良六、程序設(shè)計題(本大題共1小題,共10分)1.已定義一個Shape抽象類,在此基礎(chǔ)上派生出矩形Rectangle和圓形Circle類,兩者都有GetPerim()函數(shù)計算對象的周長,并編寫測試main()函數(shù)。classShape{public:Shape(){}~Shape(){}virtualfloatGetPerim()=0;}答案:classRectangle:publicShape{public:Rectangle(floati,floatj):L(i),W(j){}~Rectangle(){}floatGetPerim(){return2*(L+W);}private:floatL,W;};classCircle:publicShape{public:Circle(floatr):R(r){}floatGetPerim(){return3.14*2*R;}private:floatR;};voidmain(){Shape*sp;sp=newCircle(10);cout<<sp->GetPerim()<<endl;sp=newRectangle(6,4);cout<<sp->GetPerim()<<endl;}一、單項選擇題(本大題共20小題,每小題1分,共20分)在每小題列出的四個備選項中只有一個是符合題目規(guī)定的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均無分。1.靜態(tài)成員函數(shù)沒有()A.返回值B.this指針C.指針參數(shù)D.返回類型答案:B2.假定AB為一個類,則執(zhí)行“ABa(2),b[3],*p[4];”語句時調(diào)用該類構(gòu)造函數(shù)的次數(shù)為()A.3B.4C.5D.9答案:B3.有關(guān)多態(tài)性說法不對的的是()A.C++語言的多態(tài)性分為編譯時的多態(tài)性和運營時的多態(tài)性B.編譯時的多態(tài)性可通過函數(shù)重載實現(xiàn)C.運營時的多態(tài)性可通過模板和虛函數(shù)實現(xiàn)D.實現(xiàn)運營時多態(tài)性的機(jī)制稱為動態(tài)多態(tài)性答案:C4.假定一個類的構(gòu)造函數(shù)為“A(inti=4,intj=0){a=i;b=j;}”,則執(zhí)行“Ax(1);”語句后,x.a和x.b的值分別為()A.1和0B.1和4C.4和0D.4和1答案:A5.類MyA的拷貝初始化構(gòu)造函數(shù)是()A.MyA()B.MyA(MyA*)C.MyA(MyA&)D.MyA(MyA)答案:C6.在C++中,函數(shù)原型不能標(biāo)記()A.函數(shù)的返回類型B.函數(shù)參數(shù)的個數(shù)C.函數(shù)參數(shù)類型D.函數(shù)的功能答案:D7.友元關(guān)系不能()A.提高程序的運營效率B.是類與類的關(guān)系C.是一個類的成員函數(shù)與另一個類的關(guān)系D.繼承答案:D8.實現(xiàn)兩個相同類型數(shù)加法的函數(shù)模板的聲明是()A.add(Tx,Ty)B.Tadd(x,y)C.Tadd(Tx,y)D.Tadd(Tx,Ty)答案:D9.在inta=3,int*p=&a;中,*p的值是()A.變量a的地址值B.無意義C.變量p的地址值D.3答案:D10.下列不是描述類的成員函數(shù)的是()A.構(gòu)造函數(shù)B.析構(gòu)函數(shù)C.友元函數(shù)D.拷貝構(gòu)造函數(shù)答案:C11.假如從原有類定義新類可以實現(xiàn)的是()A.信息隱藏B.數(shù)據(jù)封裝C.繼承機(jī)制D.數(shù)據(jù)抽象答案:C12.下面有關(guān)類說法不對的的是()A.一個類可以有多個構(gòu)造函數(shù)B.一個類只有一個析構(gòu)函數(shù)C.析構(gòu)函數(shù)需要指定參數(shù)D.在一個類中可以說明具有類類型的數(shù)據(jù)成員答案:C13.在函數(shù)定義中的形參屬于()A.全局變量B.局部變量C.靜態(tài)變量D.寄存器變量答案:B14.下列有關(guān)重載函數(shù)的說法中對的的是()A.重載函數(shù)必須具有不同的返回值類型B.重載函數(shù)參數(shù)個數(shù)必須相同C.重載函數(shù)必須有不同的形參列表D.重載函數(shù)名可以不同答案:C15.this指針存在的目的是()A.保證基類私有成員在子類中可以被訪問B.保證基類保護(hù)成員在子類中可以被訪問C.保證每個對象擁有自己的數(shù)據(jù)成員,但共享解決這些數(shù)據(jù)成員的代碼D.保證基類公有成員在子類中可以被訪問答案:C16.關(guān)于new運算符的下列描述中,錯誤的是()A.它可以用來動態(tài)創(chuàng)建對象和對象數(shù)組B.使用它創(chuàng)建的對象或?qū)ο髷?shù)組可以使用運算符delete刪除C.使用它創(chuàng)建對象時要調(diào)用構(gòu)造函數(shù)D.使用它創(chuàng)建對象數(shù)組時必須指定初始值答案:D17.已知:p是一個指向類A數(shù)據(jù)成員m的指針,A1是類A的一個對象。假如要給m賦值為5,對的的是()A.A1.p=5;B.A1->p=5;C.A1.*p=5;D.*A1.p=5;答案:C18.以下基類中的成員函數(shù)表達(dá)純虛函數(shù)的是()A.virtualvoidtt()=0B.voidtt(int)=0C.virtualvoidtt(int)D.virtualvoidtt(int){}答案:A19.C++類體系中,不能被派生類繼承的有()A.常成員函數(shù)B.構(gòu)造函數(shù)C.虛函數(shù)D.靜態(tài)成員函數(shù)答案:B20.靜態(tài)成員函數(shù)不能說明為()A.整型函數(shù)B.浮點函數(shù)C.虛函數(shù)D.字符型函數(shù)答案:C二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上對的答案。錯填、不填均無分。1.假設(shè)inta=1,b=2;則表達(dá)式(++a/b)*b--的值為___。答案:22.抽象類中至少要有一個___函數(shù)。答案:(P173)純虛3.一個抽象類的派生類可以實例化的必要條件是實現(xiàn)了所有的___。答案:(P173)純虛函數(shù)的定義4.下面程序的輸出結(jié)果為___。#include<iostream.h>voidmain(){intnum=2,i=6;do{i--;num++;}while(--i);cout<<num<<endl;}答案:55.靜態(tài)成員函數(shù)、友元函數(shù)、構(gòu)造函數(shù)和析構(gòu)函數(shù)中,不屬于成員函數(shù)的是___。答案:(P109)友元函數(shù)6.在用C++進(jìn)行程序設(shè)計時,最佳用___代替malloc。答案:(P10)new7.由const修飾的對象稱為___。答案:(P113)常對象8.在C++程序設(shè)計中,建立繼承關(guān)系倒掛的樹應(yīng)使用___繼承。答案:(P138)單9.基類的公有成員在派生類中的訪問權(quán)限由___決定。答案:(P132)訪問控制方式或繼承方式10.不同對象可以調(diào)用相同名稱的函數(shù),但執(zhí)行完全不同行為的現(xiàn)象稱為___。答案:(P167)多態(tài)性11.this指針始終指向調(diào)用成員函數(shù)的___。答案:對象12.預(yù)解決命令以___符號開頭。答案:(P183)operater13.類模板用來表達(dá)具有___的模板類對象集。答案:(P145)相同解決方法14.C++程序的源文獻(xiàn)擴(kuò)展名為___。答案:(P21)cpp15.在#include命令中所包含的頭文獻(xiàn),可以是系統(tǒng)定義的頭文獻(xiàn),也可以是___的頭文獻(xiàn)。答案:(P7)自定義16.vector類中向向量尾部插入一個對象的方法是___。答案:(P157)push_back17.C++語言中假如調(diào)用函數(shù)時,需要改變實參或者返回多個值,應(yīng)當(dāng)采用___方式。答案:(P51)傳地址或引用18.語句序列ifstreaminfile;infile.open(“data.dat”);的功能可用一個語句實現(xiàn),這個語句是___。答案:(P199)ifstreaminfile(“data.dat”);19.假如要把類B的成員函數(shù)voidfun()說明為類A的友元函數(shù),則應(yīng)在類A中加入語句___。答案:(P111)friendvoidB::fun();20.在編譯指令中,宏定義使用___指令。答案:(P6、97)#define改錯題(本大題共5小題,每小題2分,共10分)1.#include<iostream>#include<fstream>#include<string>usingnamespacestd;classA{public:A(constchar*na){strcpy(name,na);}private:charname[80];};classB:publicA{public:B(constchar*nm):A(nm){}voidshow();};voidB::show(){cout<<"name:"<<name<<endl;}voidmain(){Bb1("B");b1.show();}答案:private:由于name假如是私有的,在派生類中無法訪問,而基類沒有提供成員函數(shù)來訪問name,所以更改name訪問權(quán)限為公有或保護(hù),這樣對于派生類來說是透明的。[修改]public:或protected:2.#include<iostream.h>voidf(int*a,intn){inti=0,j=0;intk=0;for(;i<n/2;i++){k=a[i];a[i]=a[n-i-1];a[n-i-1]=k;}}voidshow(inta[],intn){for(inti=0;i<n;i++)cout<<a[i]<<"";cout<<endl;}voidmain(){intp[5];inti=0,n=5;for(;i<5;i++){p[i]=i;}f(*p,n);show(p,n);答案:[修改]f(p,n);[解析]f(*p,n);f函數(shù)第一個參數(shù)是指針而調(diào)用時使用*p,*p表達(dá)p所指向的變量或?qū)ο螅皇堑刂芳床皇侵羔槨?.#include<iostream.h>voidmain(){inti(3),j(8);int*constp=&i;cout<<*p<<endl;p=&j;cout<<*p<<endl;}答案:int*constp=&i;在指針變量前加const表達(dá)一個常指針即地址不能變化,它指向的變量不能改變且定義時必須設(shè)立指向變量或?qū)ο蟮牡刂?。[修改]int*p=&i;4.#include<iostream.h>voidmain(){inti,*p;i=10;*p=i;cout<<*p<<endl;}答案:*p=i;指針即地址沒有被賦值。[修改]p=&i;5.#include<iostream.h>classA{private:intx,y;public:voidfun(inti,intj){x=i;y=j;}voidshow(){cout<<x<<""<<y<<endl;}};voidmain(){Aa1;a1.fun(2);a1.show();}答案:voidfun(inti,intj)調(diào)用時有一個參數(shù),形參有兩個,可以使第二個帶默認(rèn)值。[修改]voidfun(inti,intj=0)四、完畢程序題(本大題共5小題,每小題4分,共20分)1.完畢下面類中成員函數(shù)的定義。#include<iostream>#include<string>usingnamespacestd;classstr{private:char*st;public:str(char*a){set(a);}str&operator=(____){deletest;set(a.st);return*this;}voidshow(){cout<<st<<endl;}~str(){deletest;}voidset(char*s)//初始化st{_____strcpy(st,s);}};voidmain(){strs1("he"),s2("she");s1.show(),s2.show();s2=s1;s1.show(),s2.show();}答案:str&a,st=newchar[strlen(s)+1];2.一個類的頭文獻(xiàn)如下所示,num初始化值為5,程序產(chǎn)生對象T,且修改num為10,并使用show()函數(shù)輸出num的值10。#include<iostream.h>classTest{private:staticintnum;public:Test(int);voidshow();};_________Test::Test(intn){num=n;}voidTest::show(){cout<<num<<endl;}voidmain(){Testt(10);_________}答案:intTest::num=5;,t.show();3.下面是一個三角形三邊,輸出其面積C++程序,在下劃線處填上對的的語句。#include<iostream.h>#include<math.h>voidarea(){doublea,b,c;cout<<"Inputabc:";________if(a+b>c&&a+c>b&&c+b>a){doublel=(a+b+c)/2;_______cout<<"Theareais:"<<s<<endl;}elsecout<<"Error"<<endl;}voidmain(){area();}答案:cin>>a>>b>>c;,doubles=sqrt(l*(l-a)*(l-b)*(l-c));4.下面程序中Base是抽象類。請在下面程序的橫線處填上適當(dāng)內(nèi)容,以使程序完整,并使程序的輸出為:Der1called!Der2called!#include<iostream.h>classBase{public:_______________;};classDer1:publicBase{public:voiddisplay(){cout<<"Der1called!"<<endl;}};classDer2:publicBase{public:voiddisplay(){cout<<"Der2called!"<<endl;}};voidfun(______________){p->display();}voidmain(){Der1b1;Der2b2;Base*p=&b1;fun(p);p=&b2;fun(p);}答案:virtualvoiddisplay()=0;,Base*p5.下面程序中用來求數(shù)組和。請在下面程序的橫線處填上適當(dāng)內(nèi)容,以使程序完整,并使程序的輸出為:s=150。#include<iostream.h>classArr{int*a,n;public:Arr():a(0),n(0){}Arr(int*aa,intnn){n=nn;a=newint[n];for(inti=0;i<nn;i++)*(a+i)=*(aa+i);}~Arr(){deletea;}_____________;{return*(a+i);}};voidmain(){intb[5]={10,20,30,40,50};Arra1(b,5);inti=0,s=0;_____________s+=a1.GetValue(i);cout<<"s="<<s<<endl;}答案:intGetValue(inti),for(;i<5;i++)五、程序分析題(本大題共4小題,每小題5分,共20分)1.給出下面程序輸出結(jié)果。#include<iostream.h>classexample{inta;public:example(intb=5){a=b++;}voidprint(){a=a+1;cout<<a<<"";}voidprint()const{cout<<a<<endl;}};voidmain(){examplex;constexampley(2);x.print();y.print();}答案:622.給出下面程序輸出結(jié)果。#include<iostream.h>voidmain(){int*p1;int**p2=&p1;intb=20;p1=&b;cout<<**p2<<endl;}答案:203.給出下面程序輸出結(jié)果。#include<iostream.h>classBase{private:intY;public:Base(inty=0){Y=y;cout<<"Base("<<y<<")\n";}~Base(){cout<<"~Base()\n";}voidprint(){cout<<Y<<"";}};classDerived:publicBase{private:intZ;public:Derived(inty,intz):Base(y){Z=z;cout<<"Derived("<<y<<","<<z<<")\n";}~Derived(){cout<<"~Derived()\n";}voidprint(){Base::print();cout<<Z<<endl;}};voidmain(){Derivedd(10,20);d.print();}答案:Base(10)Derived(10,20)1020~Derived()~Base()4.給出下面程序輸出結(jié)果。#include<iostream.h>classA{public:A(){cout<<"A構(gòu)造函數(shù)\n";fun();}virtualvoidfun(){cout<<"A::fun()函數(shù)\n";}};classB:publicA{public:B(){cout<<"B構(gòu)造函數(shù)\n";fun();}voidfun(){cout<<"B::fun()calle函數(shù)\n";}};voidmain(){Bd;}答案:A構(gòu)造函數(shù)A::fun()函數(shù)B構(gòu)造函數(shù)B::fun()calle函數(shù)六、程序設(shè)計題(本大題共1小題,共10分)1.編寫類String的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)和測試程序。已知類String的原型為:#include<iostream.h>#include<string.h>classString{public:String(constchar*str=NULL);//普通構(gòu)造函數(shù)String(constString&other);//拷貝構(gòu)造函數(shù)~String();//析構(gòu)函數(shù)String&operator=(constString&other);//賦值函數(shù)voidshow(){cout<<m_data<<endl;}private:char*m_data;//用于保存字符串};答案:String::~String(){delete[]m_data;//由于m_data是內(nèi)部數(shù)據(jù)類型,也可以寫成deletem_data;}String::String(constchar*str){if(str==NULL){m_data=newchar[1];//若能加NULL判斷則更好*m_data=\0;}else{intlength=strlen(str);m_data=newchar[length+1];//若能加NULL判斷則更好strcpy(m_data,str);}}String::String(constString&other){intlength=strlen(other.m_data);m_data=newchar[length+1];//若能加NULL判斷則更好strcpy(m_data,other.m_data);}String&String::operator=(constString&other){if(this==&other)return*this;delete[]m_data;intlength=strlen(other.m_data);m_data=newchar[length+1];//若能加NULL判斷則更好strcpy(m_data,other.m_data);return*this;}voidmain(){Stringstr1("aa"),str2;str1.show();str2=str1;str2.show();Stringstr3(str2);str3.show();}一、單項選擇題(本大題共20小題,每小題1分,共20分)1.設(shè)有定義inti;doublej=5;,則10+i+j值的數(shù)據(jù)類型是()A.intB.doubleC.floatD.不擬定答案:B2.要嚴(yán)禁修改指針p自身,又要嚴(yán)禁修改p所指向的數(shù)據(jù),這樣的指針應(yīng)定義為()A.constchar*p=“ABCD”;B.char*constp=“ABCD”;C.charconst*p=“ABCD”;D.constchar*constp=“ABCD”;答案:D3.類的構(gòu)造函數(shù)被自動調(diào)用執(zhí)行的情況是在定義該類的()A.成員函數(shù)時B.數(shù)據(jù)成員時C.對象時D.友元函數(shù)時答案:C4.已知類A是類B的友元,類B是類C的友元,則()A.類A一定是類C的友元B.類C一定是類A的友元C.類C的成員函數(shù)可以訪問類B的對象的任何成員D.類A的成員函數(shù)可以訪問類B的對象的任何成員答案:C5.假定一個類的構(gòu)造函數(shù)為“A(inti=4,intj=0){a=i;b=j;}”,則執(zhí)行“Ax(1);”語句后,x.a和x.b的值分別為()A.1和0B.1和4C.4和0D.4和1答案:A6.關(guān)于this指針使用說法對的的是()A.保證每個對象擁有自己的數(shù)據(jù)成員,但共享解決這些數(shù)據(jù)的代碼B.保證基類私有成員在子類中可以被訪問。C.保證基類保護(hù)成員在子類中可以被訪問。D.保證基類公有成員在子類中可以被訪問。答案:A7.所謂多態(tài)性是指()A.不同的對象調(diào)用不同名稱的函數(shù)B.不同的對象調(diào)用相同名稱的函數(shù)C.一個對象調(diào)用不同名稱的函數(shù)D.一個對象調(diào)用不同名稱的對象答案:B8.友元關(guān)系不能()A.提高程序的運營效率B.是類與類的關(guān)系C.是一個類的成員函數(shù)與另一個類的關(guān)系D.繼承答案:D9.語句ofstreamf(“TEMP.DAT”,ios::app|ios::binary)?的功能是建立流對象f,試圖打開文獻(xiàn)TEMP.DAT并與之連接,并且()A.若文獻(xiàn)存在,將文獻(xiàn)寫指針定位于文獻(xiàn)尾;若文獻(xiàn)不存在,建立一個新文獻(xiàn)B.若文獻(xiàn)存在,將其置為空文獻(xiàn);若文獻(xiàn)不存在,打開失敗C.若文獻(xiàn)存在,將文獻(xiàn)寫指針定位于文獻(xiàn)首;若文獻(xiàn)不存在,建立一個新文獻(xiàn)D.若文獻(xiàn)存在,打開失?。蝗粑墨I(xiàn)不存在,建立一個新文獻(xiàn)答案:A10.構(gòu)造函數(shù)不具有的特性是()A.構(gòu)造函數(shù)的函數(shù)名與類名相同B.構(gòu)造函數(shù)可以重載C.構(gòu)造函數(shù)可以設(shè)立默認(rèn)參數(shù)D.構(gòu)造函數(shù)必須指定類型說明答案:D11.在公有繼承的情況下,基類的公有或保護(hù)成員在派生類中的訪問權(quán)限()A.受限制B.保持不變C.受保護(hù)D.不受保護(hù)答案:B12.假定一個類的構(gòu)造函數(shù)為A(intaa,intbb){a=aa--;b=a*bb;},則執(zhí)行Ax(4,5);語句后,x.a和x.b的值分別為()A.3和15B.5和4C.4和20D.20和5答案:C13.C++對C語言做了很多改善,即從面向過程變成為面向?qū)ο蟮闹匾蛩厥牵ǎ〢.增長了一些新的運算符B.允許函數(shù)重載,并允許設(shè)立缺省參數(shù)C.規(guī)定函數(shù)說明符必須用原型D.引進(jìn)了類和對象的概念答案:D14.在類中說明的成員可以使用關(guān)鍵字的是()A.publicB.externC.cpuD.register答案:A15.C++語言中所有在函數(shù)中定義的變量,連同形式參數(shù),都屬于()A.全局變量B.局部變量C.靜態(tài)變量D.函數(shù)答案:B16.在私有繼承的情況下,基類成員在派生類中的訪問權(quán)限()A.受限制B.保持不變C.受保護(hù)D.不受保護(hù)答案:A17.使用地址作為實參傳給形參,下列說法對的的是()A.實參是形參的備份B.實參與形參無聯(lián)系C.形參是實參的備份D.實參與形參是同一對象答案:D18.C++的繼承性允許派生類繼承基類的()A.部分特性,并允許增長新的特性或重定義基類的特性B.部分特性,但不允許增長新的特性或重定義基類的特性C.所有特性,并允許增長新的特性或重定義基類的特性D.所有特性,但不允許增長新的特性或重定義基類的特性答案:A19.對于int*pa[5];的描述,對的的是()A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素B.pa是一個指向某個數(shù)組中第5個元素的指針,該元素是int型變量C.pa[5]表達(dá)某個數(shù)組的第5個元素的值D.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針答案:D20.以下基類中的成員函數(shù)表達(dá)純虛函數(shù)的是()A.virtualvoidtt()=0B.voidtt(int)=0C.virtualvoidtt(int)D.virtualvoidtt(int){}答案:A二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上對的答案。錯填、不填均無分。1.單目運算符作為類成員函數(shù)重載時,形參個數(shù)為___個。答案:(P189)02.抽象類中至少要有一個___函數(shù)。答案:(P173)純虛3.設(shè)類A有成員函數(shù)voidf(void);若要定義一個指向類成員函數(shù)的指針變量pf來指向f,該指針變量的聲明語句是:___。答案:(P117)void(A::*pf)(void)=&A::f;4.執(zhí)行下列程序doublea=3.1415926,b=3.14;cout<<setprecision(5)<<a<<","<<setprecision(5)<<b<<endl;程序的輸出結(jié)果是___。答案:3.1416,3.145.vector類中用于刪除向量中的所有對象的方法是___。答案:(P151)clear()6.重載的運算符保持其原有的___、優(yōu)先級和結(jié)合性不變。答案:(P183)操作數(shù)7.編譯時的多態(tài)性通過___函數(shù)實現(xiàn)。答案:(P165)重載8.基類的公有成員在派生類中的訪問權(quán)限由___決定。答案:(P132)訪問控制方式或繼承方式9.假設(shè)類X的對象x是類Y的成員對象,則“YObj”語句執(zhí)行時,先調(diào)用類___的構(gòu)造函數(shù)。答案:(P130)X10.下列程序段的輸出結(jié)果是___。cout.setf(ios::showpos);cout<<509.3<<endl;答案:(P193)+509.311.下列程序段的輸出結(jié)果是___。for(i=0,j=10,k=0;i<=j;i++,j-=3,k=i+j);cout<<k;答案:412.C++中ostream的直接基類___。答案:(P193)n=0;while(n=1)n++;while循環(huán)執(zhí)行次數(shù)是___。答案:無限次14.C++中有兩種繼承:單繼承和___。答案:(P138)多繼承15.在C++中,運用向量類模板定義一個具有10個int的向量A,其元素均被置為1,實現(xiàn)此操作的語句是___。答案:(P151)vector<int>A(10,1)16.vector類中向向量尾部插入一個對象的方法是___。答案:(P157)push_back17.C++語言中假如調(diào)用函數(shù)時,需要改變實參或者返回多個值,應(yīng)當(dāng)采用___方式。答案:(P51)傳地址或引用18.若函數(shù)的定義處在調(diào)用它的函數(shù)之前,則在程序開始可以省去該函數(shù)的___語句。答案:聲明19.在C++中有兩種參數(shù)傳遞方式:傳值和___。答案:(P51)傳引用20.將指向?qū)ο蟮囊米鳛楹瘮?shù)的形參,形參是對象的引用,實參是___。答案:(P53)對象名三、改錯題(本大題共5小題,每小題4分,共20分)1.classABC{inta;public:ABC(intaa)a(aa){}};答案:ABC(intaa)a(aa){}初始化列表格式錯誤。[修改]ABC(intaa):a(aa){}2.#include<iostream.h>classAton{intX,Y;protected:intzx,zy;public:voidinit(inti,intj){zx=i;zy=j;}Aton(inti,intj,intn=0,intm=0){X=i,Y=j,zx=m,zy=n;}};voidmain(){AtonA(25,20,3,5);A.init(5,9);cout<<A.X()<<endl;答案:intX,Y;由于X,Y都是私有的,在類外無法直接訪問。[修改]public:intX,Y;3.#include<iostream.h>classBas{public:~Bas(){cout<<"Basconstruct"<<endl;}virtualvoidf()=0;};classDev:publicBas{public:~Dev(){cout<<"Basconstruct"<<endl;}virtualvoidf(){cout<<"Dev::f"<<endl;}};voidmain(){Bas*a=newBas();Devp;a=&p;a->f();}答案:[修改]Bas*a;4.以下程序?qū)崿F(xiàn)互換a,b變量的值,請用下橫線標(biāo)犯錯誤所在行并給出修改意見。#include<iostream.h>voidswap(int&a,int&b){a=a+b;b=a-b;a=a-b;}voidmain(){inta=19,b=15;cout<<"a="<<a<<",b="<<b<<endl;swap(&a,&b);cout<<"a="<<a<<",b="<<b<<endl;}答案:swap(&a,&b);函數(shù)的形參是變量的引用,調(diào)用時的實參應(yīng)當(dāng)是地址。[修改]swap(a,b);5.#include<iostream.h>voidmain(){inti(3),j(8);int*constp=&i;cout<<*p<<endl;p=&j;cout<<*p<<endl;}答案:int*constp=&i;在指針變量前加const表達(dá)一個常指針即地址不能變化,它指向的變量不能改變且定義時必須設(shè)立指向變量或?qū)ο蟮牡刂贰#坌薷模輎nt*p=&i;四、完畢程序題(本大題共5小題,每小題4分,共20分)1.在下面程序橫線處填上適當(dāng)內(nèi)容,使程序執(zhí)行結(jié)果為:"hello,andylin"。#include<iostream>#include<string.h>usingnamespacestd;classmystring{public:char*pdata;mystring(intlen){pdata=newchar[len+1];}~mystring(){deletepdata;}voidshow(){cout<<pdata<<endl;}};voidfun(mystring**array,intlen){mystring*old=*array;_______;memcpy(*array,old,len);}voidmain(){mystringstr(20);mystring*pstr=&str;mystring**ppstr=&pstr;strcpy(str.pdata,"hello,andylin");fun(ppstr,20);_______}答案:*array=newmystring(len);,(**ppstr).show();或str.show();2.在下面程序橫線處填上適當(dāng)字句,完畢類的定義。classline;classbox{private:intcolor;intupx,upy;intlowx,lowy;public:_________voidset_color(intc){color=c;}voiddefine_box(intx1,inty1,intx2,inty2){upx=x1;upy=y1;lowx=x2;lowy=y2;}};classline{private:intcolor;intstartx,starty;intendx,endy;public:friendintsame_color(linel,boxb);voidset_color(intc){color=c;}voiddefine_line(___________){startx=x1;starty=y1;endx=x2;endy=y2;}};intsame_color(linel,boxb){if(l.color==b.color)return1;return0;}答案:friendintsame_color(linel,boxb);,intx1,inty1,intx2,inty23.下面程序用來求直角三角形斜邊長度。#include<iostream.h>#include<math.h>classPoint{private:doublex,y;__________public:Point(doublei=0,doublej=0){x=i;y=j;}Point(Point&p){x=p.x;y=p.y;}};classLine{private:Pointp1,p2;public:Line(Point&xp1,Point&xp2):________{}doubleGetLength();};doubleLine::GetLength(){doubledx=p2.x-p1.x;doubledy=p2.y-p1.y;returnsqrt(dx*dx+dy*dy);}voidmain(){Pointp1,p2(6,8);LineL1(p1,p2);cout<<L1.GetLength()<<endl;}答案:friendLine;,p1(xp1),p2(xp2)五、程序分析題(本大題共2小題,每小題5分,共10分)1.運營程序,寫出程序執(zhí)行的結(jié)果。#include<iostream.h>voidmain(){inta,b,c;charch;cin>>a>>ch>>b>>c;//從鍵盤上輸入1.5×c×10×20,×表達(dá)一個空格cout<<a<<endl<<ch<<endl<<b<<endl<<c<<endl;}答案:1.502.給出下面程序輸出結(jié)果。#include<iostream.h>classA{public:A(){cout<<"Ascons."<<endl;}virtual~A(){cout<<"Asdes."<<endl;}virtualvoidf(){cout<<"Asf()."<<endl;}voidg(){f();}};classB:publicA{public:B(){f();cout<<"Bscons."<<endl;}~B(){cout<<"Bsdes."<<endl;}};classC:publicB{public:C(){cout<<"Cscons."<<endl;}~C(){cout<<"Csdes."<<endl;}voidf(){cout<<"Csf()."<<endl;}};voidmain(){A*a=newC;a->g();deletea;}答案:Asf().Bscons.Cscons.Csf().Csdes.Bsdes.Asdes.六、程序設(shè)計題(本大題共1小題,共10分)1.已知交通工具類定義如下。規(guī)定:(1)實現(xiàn)這個類;(2)定義并實現(xiàn)一個小車類car,是它的公有派生類,小車自身的私有屬性有載人數(shù),小車的函數(shù)有init(設(shè)立車輪數(shù),重量和載人數(shù)),getpassenger(獲取載人數(shù)),print(打印車輪數(shù),重量和載人數(shù))。classvehicle{protected:intwheels;//車輪數(shù)floatweight;//重量public:voidinit(intwheels,floatweight);intget_wheels();floatget_weight();voidprint();};voidvehicle::init(intwheels,floatweight){this->wheels=wheels;this->weight=weight;cout<<wheels<<endl;}intvehicle::get_wheels(){returnwheels;}floatvehicle::get_weight(){returnweight;}voidvehicle::print(){cout<<"車輪數(shù):"<<wheels<<","<<"重量:"<<weight<<endl;}答案:classcar:publicvehicle{private:intpassengers;public:voidinit(intwheels,floatweight,intpass);intgetpassenger();voidprint();};voidcar::init(intwheels,floatweight,intpass){vehicle::init(wheels,weight);passengers=pass;}intcar::getpassenger(){returnpassengers;}voidcar::print(){vehicle::print();cout<<"可載人數(shù):"<<passengers<<endl;}__一、單項選擇題(本大題共20小題,每小題1分,共20分)在每小題列出的四個備選項中只有一個是符合題目規(guī)定的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均無分。1.當(dāng)一個類的某個函數(shù)被說明為virtual時,該函數(shù)在該類的所有派生類中()A.都是虛函數(shù)B.只有被重新說明時才是虛函數(shù)C.只有被重新說明為virtual時才是虛函數(shù)D.都不是虛函數(shù)答案:A2.要嚴(yán)禁修改指針p自身,又要嚴(yán)禁修改p所指向的數(shù)據(jù),這樣的指針應(yīng)定義為()A.constchar*p=“ABCD”;B.char*constp=“ABCD”;C.charconst*p=“ABCD”;D.constchar*constp=“ABCD”;答案:D3.函數(shù)調(diào)用func((exp1,exp2),(exp3,exp4,exp5))中所含實參的個數(shù)為()A.1B.2C.4D.5答案:B4.設(shè)有函數(shù)模板template<classQ>QSum(Qx,Qy){return(x)+(y);}則下列語句中對該函數(shù)模板錯誤的使用是()A.Sum(10,2);B.Sum(5.0,6.7);C.Sum(15.2f,16.0f);D.Sum(“AB”,”CD”);答案:D5.類B是類A的公有派生類,類A和類B中都定義了虛函數(shù)func(),p是一個指向類A對象的指針,則p->A::func()將()A.調(diào)用類A中的函數(shù)func()B.調(diào)用類B中的函數(shù)func()C.根據(jù)p所指的對象類型而擬定調(diào)用類A中或類B中的函數(shù)func()D.既調(diào)用類A中函數(shù),也調(diào)用類B中的函數(shù)答案:A6.在面向?qū)ο蟮某绦蛟O(shè)計中,一方面在問題域中辨認(rèn)出若干個()A.函數(shù)B.類C.文獻(xiàn)D.過程答案:B7.已知f1和f2是同一類的兩個成員函數(shù),但f1不能直接調(diào)用f2,這說明()A.f1和f2都是靜態(tài)函數(shù)B.f1不是靜態(tài)函數(shù),f2是靜態(tài)函數(shù)C.f1是靜態(tài)函數(shù),f2不是靜態(tài)函數(shù)D.f1和f2都不是靜態(tài)函數(shù)答案:C8.下列有關(guān)模板和繼承的敘述對的的是()A.模板和繼承都可以派生出一個類系B.從類系的成員看,模板類系的成員比繼承類系的成員較為穩(wěn)定C.從動態(tài)性能看,繼承類系比模板類系具有更多的動態(tài)特性D.相同類模板的不同實例一般沒有聯(lián)系,而派生類各種類之間有兄弟父子等關(guān)系答案:D9.有關(guān)C++編譯指令,以下敘述對的的是()A.C++每行可以寫多條編譯指令B.#include指令中的文獻(xiàn)名可具有途徑信息C.C++的編譯指令可以以#或//開始D.C++中不管#if后的常量表達(dá)式是否為真,該部分都需要編譯答案:B10.在C++中不返回任何類型的函數(shù)應(yīng)當(dāng)說明為()A.intB.charC.voidD.double答案:C11.若Sample類中的一個成員函數(shù)說明如下:voidset(Sample&a),則Sample&a的含義是()A.指向類Sample的名為a的指針B.a是類Sample的對象引用,用來作函數(shù)Set()的形參C.將a的地址賦給變量SetD.變量Sample與a按位與的結(jié)果作為函數(shù)Set的參數(shù)答案:B12.下列關(guān)于靜態(tài)數(shù)據(jù)成員的描述中對的的是()A.靜態(tài)數(shù)據(jù)成員是類的所有對象所共有的B.靜態(tài)數(shù)據(jù)成員要在構(gòu)造函數(shù)內(nèi)初始化C.類的每個對象有自己的靜態(tài)數(shù)據(jù)成員D.靜態(tài)數(shù)據(jù)成員不能通過類的對象調(diào)用答案:D13.在編譯指令中,宏定義使用哪個指令()A.#ifB.#includeC.#defineD.#error答案:C14.類的析構(gòu)函數(shù)是對一個對象進(jìn)行以下哪種操作時自動調(diào)用的是()A.建立B.撤消C.賦值D.引用答案:B解析:(P80)刪除對象或結(jié)束程序時,自動調(diào)用析構(gòu)函數(shù)。15.關(guān)于new運算符的下列描述中,錯誤的是()A.它可以用來動態(tài)創(chuàng)建對象和對象數(shù)組B.使用它創(chuàng)建的對象或?qū)ο髷?shù)組可以使用運算符delete刪除C.使用它創(chuàng)建對象時要調(diào)用構(gòu)造函數(shù)D.使用它創(chuàng)建對象數(shù)組時必須指定初始值答案:D16.假如類A被說明成類B的友元,則()A.類B不一定是類A的友元B.類B的成員即類A的成員C.類A的成員即類B的成員D.類A的成員函數(shù)不得訪問類B的成員答案:A17.假定一個類的構(gòu)造函數(shù)為A(intaa,intbb){a=aa++;b=a*++bb;},則執(zhí)行Ax(4,5);語句后,x.a和x.b的值分別為()A.4和5B.4和20C.4和24D.20和5答案:C18.下列運算符中,在C++語言中不能重載的是()A.*B.>=C.::D./答案:C19.C++語言建立類族是通過()A.類的嵌套B.類的繼承C.虛函數(shù)D.抽象類答案:B20.在C++語言中,數(shù)據(jù)封裝要解決的問題是()A.數(shù)據(jù)的規(guī)范化B.便于數(shù)據(jù)轉(zhuǎn)換C.避免數(shù)據(jù)丟失D.防止不同模塊之間數(shù)據(jù)的非法訪問答案:D二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上對的答案。錯填、不填均無分。1.若要使用string類,需要引入的頭文獻(xiàn)是___。答案:(P40)string.h2.在函數(shù)前面用___保存字修飾時,則表達(dá)該函數(shù)表為內(nèi)聯(lián)函數(shù)。答案:(P59)inline3.向量操作方法中___方法返回向量中的第一個對象。答案:(P151)front4.C++派生類使用兩種基本的面向?qū)ο蠹夹g(shù):第一種稱為性質(zhì)約束,即對基類的性質(zhì)加以限制;第二種稱為___,即增長派生類的性質(zhì)。答案:(P129)性質(zhì)擴(kuò)展5.重載的運算符保持其原有的___、優(yōu)先級和結(jié)合性不變。答案:(P183)操作數(shù)6.編譯時的多態(tài)性通過___函數(shù)實現(xiàn)。答案:(P165)重載7.預(yù)解決語句有三種,分別是宏定義、文獻(xiàn)包含和___。答案:(P7)條件編譯8.構(gòu)造函數(shù)、析構(gòu)函數(shù)和友元函數(shù)中,不是該類成員的是___。答案:(P109)友元函數(shù)9.控制格式輸入輸出的操作中,函數(shù)___是設(shè)立域?qū)挼?。?guī)定給出函數(shù)名和參數(shù)類型)。答案:(P193)setw(int)10.派生類的成員一般分為兩部分,一部分是___,另一部分是自己定義的新成員。答案:(P127)從基類繼承的成員11.C++中ostream的直接基類___。答案:(P193)ios12.vector的___方法返回向量中的最后一個對象。答案:(P151)back13.執(zhí)行下列代碼inti=230;cout<<"i="<<hex<<i<<endl;程序的輸出結(jié)果為___。答案:(P193)i=e614.在C++中有兩種參數(shù)傳遞方式即值傳遞和___傳遞。答案:(P51)引用15.使用new為int數(shù)組動態(tài)分派10個存儲空間是___。答案:(P10)newint[10];16.面向?qū)ο蟮乃膫€基本特性是多態(tài)性、繼承性、和封裝性___。答案:(P37)抽象17.定義虛函數(shù)所用的關(guān)鍵字是___。答案:(P170)virtual18.執(zhí)行下列代碼cout<<“oct:”<<oct<<

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論