版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MOOCC++程序設計-淮陰工學院中國大學慕課答案11-1隨堂測驗1、問題:C++語言是從早期的C語言逐漸發(fā)展演變而來的,與C語言相比,它在求解問題方法上進行的?最大改進是(?)??選項:A、面向過程B、面向對象?C、安全性?D、復用性正確答案:【面向對象?】2、問題:下列標識符中都是合法的是(?)??選項:A、_key,?example,?a_bB、5ap,?test1,?_3a?C、bcp,?@mail,?_c_d?D、INL,?_paper,?union正確答案:【_key,?example,?a_b】3、問題:classAnimal{public:voidsleep(doubleh=1){hour+=h;}private:doubledistance;doublehour;};小明將類中成員函數進行類外定義如下,請問有幾處錯誤?classAnimal{public:voidsleep(doubleh=1);private:doubledistance;doublehour;};voidsleep(doubleh=1){hour+=h;}選項:A、1B、2C、3D、4正確答案:【2】4、問題:類的成員函數只能在類內定義。選項:A、正確B、錯誤正確答案:【錯誤】5、問題:voidAccount::SetAccount(intd,doublem){id=d;money=m;}相當于:voidAccount::SetAccount(intd,doublem){this-id=d;this-money=m;}選項:A、正確B、錯誤正確答案:【正確】11-2對象測驗1、問題:數據封裝就是將一組數據和與這組數據有關操作組裝在一起,形成一個實體,這實體也就是(??)。?選項:A、類B、對象C、函數體D、數據塊正確答案:【類】2、問題:類的實例化是指(???)。?選項:A、定義類?B、創(chuàng)建類的對象C、指明具體類D、調用類的成員正確答案:【創(chuàng)建類的對象】3、問題:以下創(chuàng)建對象的方法中,哪個是錯誤的?選項:A、Tdatedate1,date2,date3;B、classTdate{//成員函數實現//數據成員定義}date1,date2;C、class{//成員函數實現//數據成員定義}date1,date2;D、Tdatedate1正確答案:【Tdatedate1】4、填空題:類的訪問限定符包括public、________和private。正確答案:【protected】5、填空題:類成員默認的訪問方式是________。正確答案:【private】類和對象作業(yè)類和對象測驗題1、問題:關于面向對象的程序設計方法,下列說法正確的是______。選項:A、封裝性指的是將不同類型的相關數據組合在一起,作為一個整體進行處理B、多態(tài)性指的是對象的狀態(tài)會根據運行時要求自動變化C、基類的私有成員在派生類的對象中不可訪問,也不占內存空間D、在面向對象的程序設計中,結構化程序設計方法仍有著重要作用正確答案:【在面向對象的程序設計中,結構化程序設計方法仍有著重要作用】2、問題:在C++中,實現封裝性需借助______。選項:A、枚舉B、類C、數組D、函數正確答案:【類】3、問題:下列關于類和對象的敘述中,錯誤的是______。選項:A、一個類只能有一個對象B、對象是類的具體實例C、類是對某一類對象的抽象D、類和對象是一種數據類型與變量的關系正確答案:【一個類只能有一個對象】4、問題:以下關鍵字不能用來聲明類的訪問權限的是______。選項:A、publicB、staticC、protectedD、private正確答案:【static】5、問題:有如下類聲明:classFoo{intbar;};則Foo類的成員bar是______。選項:A、公有數據成員B、公有成員函數C、私有數據成員D、私有成員函數正確答案:【私有數據成員】6、填空題:在C++面向對象程序設計框架中,______是程序的基本組成單元。正確答案:【類##%_YZPRLFH_%##class】7、填空題:在面向對象的程序設計中,將數據和處理數據的操作封裝成一個整體就定義了一種事物的類型,稱作類。類是一種抽象的概念,屬于該類的一個實例叫做______。正確答案:【對象】8、填空題:與指針成員訪問表達式p-name等價的表達式是______。正確答案:【(*p).name】9、填空題:有如下類聲明:classMyClass{inti;private:intj;protected:intk;public:intm,n;};其中,私有成員的數量為______。正確答案:【2##%_YZPRLFH_%##兩個##%_YZPRLFH_%##2個】12-1構造函數測驗1、問題:下列說法中正確的是(???)。選項:A、類定義中只能說明函數成員的函數頭,不能定義函數體???????B、類中的函數成員可以在類體中定義,也可以在類體之外定義C、類中的函數成員在類體之外定義時必須要與類聲明在同一文件中D、在類體之外定義的函數成員不能操作該類的私有數據成員正確答案:【類中的函數成員可以在類體中定義,也可以在類體之外定義】2、問題:類的構造函數被自動調用執(zhí)行的情況是在創(chuàng)建該類的(??)選項:A、成員函數時B、數據成員時C、對象時D、友元函數時正確答案:【對象時】3、問題:在下列函數原型中,可以作為類AA構造函數的是(????)選項:A、void?AA(int);B、int?AA();C、AA(int)const;D、AA(int)正確答案:【AA(int)const;】4、問題:Account類定義如下,用該類創(chuàng)建對象錯誤的是()classAccount{public://公有成員函數Account(intd=1151,doublem=0.0){//默認參數構造函數id=d;money=m;//初始化數據成員}voiddeposit(doublem){//一般成員函數money+=m;}voidwithdraw(doublem){//一般成員函數money-=m;}voidprint(){//一般成員函數cout“ID:”id“,Money:”moneyendl;}private://私有數據成員intid;doublemoney;};選項:A、Accountac;B、Accountbc(1151);C、Accountcc(1151,10);D、Accountcc(1151,10,1);正確答案:【Accountcc(1151,10,1);】5、問題:構造函數在類體外實現時要通過類名進行限定。選項:A、正確B、錯誤正確答案:【正確】12-2類成員初始化測驗1、問題:對象成員構造函數的調用發(fā)生在類的構造函數調用之前選項:A、正確B、錯誤正確答案:【正確】2、問題:classPerson{public:Person(char*n,inth){strcpy(name,n);height=h;}private:charname[20];intheight;Birthdaybirth(2016,2,24);};以上代碼能夠對birth進行初始化。選項:A、正確B、錯誤正確答案:【錯誤】3、填空題:類對象作為數據成員時,用______調用類對象的構造函數進行初始化。正確答案:【初始化表】12-3析構函數測驗1、問題:()不是析構函數的特點選項:A、一個類中只能有一個析構函數B、析構函數名和類名相同,前面再加一個~C、析構函數沒有返回類型D、析構函數可以有一個或多個參數正確答案:【析構函數可以有一個或多個參數】2、問題:每個類必須有一個析構函數,若未提供類的析構函數,則C++會提供一個默認的析構函數。選項:A、正確B、錯誤正確答案:【正確】3、問題:類對象成員析構的順序是:按照類對象成員聲明順序依次調用析構函數。選項:A、正確B、錯誤正確答案:【錯誤】構造函數和析構函數作業(yè)構造函數與析構函數測試1、問題:有以下類定義classMyClass{public:MyClass(){cout1;}};則執(zhí)行語句MyClassa,b[2],*p[2];后,程序的輸出結果是______。A:11B:111C:1111D:11111選項:A、11B、111C、1111D、11111正確答案:【111】2、問題:關于類的概念下列說法正確的是______。選項:A、類和結構體是同一個概念B、類的數據成員外界都不可訪問C、類可以沒有顯式的構造函數D、類一定要有顯式的析構函數正確答案:【類可以沒有顯式的構造函數】3、問題:有如下兩個類的定義classAA{};classBB{AAv1,*v2;BBv3;int*v4;};其中有一個成員變量的定義是錯誤的,這個變量是_____________。選項:A、v1B、v2C、v3D、v4正確答案:【v3】4、問題:Sample是一個類,定義如下classSample{intval;public:Sample(intv):val(v){}};執(zhí)行下面語句后,調用Sample類的構造函數的次數是_______。Samplea[3],*p=newSample;選項:A、0B、2C、3D、4正確答案:【4】5、問題:有如下程序:className{char*name;public:Name():name(NULL){}Name(char*fname)//將fname所指字符串拷貝到name所指向的存儲空間{name=________________;strcpy(name,fname);}~Name(){delete[]name;}};橫線處應填寫的表達式是__________________。選項:A、newchar[strlen(fname)+1]B、char[strlen(fname)+1]C、char[strlen(fname)]D、newchar[sizeof(fname)]正確答案:【newchar[strlen(fname)+1]】6、填空題:有如下定義:classMA{intvalue;public:MA(intn=0):value(n){}};MA*ta,tb;其中MA類的對象名標識符是______。正確答案:【tb】7、填空題:己知下列程序的輸出結果是42,請將畫線處缺失的部分補充完整。#includeiostreamusingnamespacestd;classFoo{intvalue;public:Foo():value(0){}voidsetValue(intvalue){______=value;}//給Foo的數據成員value賦值voidprint(){coutvalue;}};intmain(){Foof;f.setValue(42);f.print();return0;}正確答案:【this->value##%_YZPRLFH_%##Foo::value##%_YZPRLFH_%##(*this).value】8、填空題:1、插入排序算法的主要思想是:每次從未排序序列中取出的一個數據,插入到已排序序列中的正確位置。InsertSort類的成員函數sort()實現了插入排序算法。請將畫線處缺失的部分補充完整。classInsertSort{public:InsertSort(int*a0,intn0):a(a0),n(n0){}//參數a0是某數組首地址,n是數組元素個數voidsort(){//此函數假設已排序序列初始化狀態(tài)只包含a[0],未排序序列初始為a[1]…a[n-1]for(inti=1;in;++i){intt=a[i];intj;for(______;j0;--j){if(t=a[j-1])break;a[j]=a[j-1];}a[j]=t;}}protected:int*a,n;//指針a用于存放數組首地址,n用于存放數組元素個數};正確答案:【j=i】拷貝構造函數作業(yè)拷貝構造函數測試1、問題:有如下程序:#includeiostreamusingnamespacestd;classA{public:A(inti=0):r(i){}A(Aa){r=a.r;cout1;}voidprint(){coutr;}private:intr;};voidfun(Aa){a.print();}Afun(){Aa(2);returna;}intmain(){Aa1(2),a2(a1),a3,a4;a3=fun();a4=a1;fun(A(6));coutendl;return0;}運行此程序時,類A的拷貝構造函數執(zhí)行的次數是_________________。選項:A、0B、2C、3D、4正確答案:【3】2、問題:有如下程序#includeiostreamusingnamespacestd;classMyClass{public:MyClass(intx):val(x){}voidprint()const{coutconst:val=val\t;}voidprint(){coutval=val\t;}private:intval;};intmain(){constMyClassobj1(10);MyClassobj2(20);obj1.print();obj2.print();return0;}程序的輸出結果是______________。選項:A、val=10const:val=20B、const:val=10const:val=20C、const:val=10val=20D、val=10val=20正確答案:【const:val=10val=20】3、問題:拷貝構造函數使用的場合有_______________。選項:A、由一個對象初始化另一個對象時B、當對象作為函數實參傳遞給函數形參時C、當對象作為函數的返回值,創(chuàng)建一個臨時對象時D、創(chuàng)建任何類的對象時正確答案:【由一個對象初始化另一個對象時#當對象作為函數實參傳遞給函數形參時#當對象作為函數的返回值,創(chuàng)建一個臨時對象時】4、填空題:有如下類定義,請將Sample類的拷貝構造函數補充完整。classSample{public:Sample(){}~Sample(){if(p)deletep;}Sample(constSamples){p=newint;*p=___________;}voidSetData(intdata){p=newint(data);}voidprint(){cout*pendl;}private:int*p;};正確答案:【*(s.p)##%_YZPRLFH_%##*(s.p)】常量成員、靜態(tài)成員與友元測驗常量成員、靜態(tài)成員與友元測驗1、問題:有如下類定義和變量定義:classA{public:A(){data=0;}~A(){}intGetData()const{returndata;}voidSetData(intn){data=n;}private:intdata;};constAa;Ab;下列函數調用中錯誤的是__________。選項:A、a.GetData();B、a.SetData(10);C、b.GetData();D、b.SetData(10);正確答案:【a.SetData(10);】2、問題:有如下程序#includeiostreamusingnamespacestd;classTest{public:Test(){data=0;k++;}~Test(){}intgetK(){returnk;}private:staticintk;intdata;};intTest::k=0;intmain(){Testa[2],*ptr;Testb;coutb.getK()endl;return0;}程序的輸出結果是______________。選項:A、0B、1C、2D、3E、4正確答案:【3】3、問題:關于友元說法錯誤的是______。選項:A、友元函數可以訪問類中的所有數據成員B、友元函數必須被聲明在public區(qū)C、友元類的所有成員函數都是另一個類友元函數D、友元函數不可以在類內部被定義正確答案:【友元函數必須被聲明在public區(qū)】4、問題:一個類的友元函數能夠通過成員訪問運算符符訪問該類的______。選項:A、私有成員B、保護成員C、公有成員D、公有成員、保護成員、私有成員正確答案:【公有成員、保護成員、私有成員】5、問題:下列各種函數中,______不是類的成員函數。選項:A、構造函數B、析構函數C、友元函數D、拷貝構造函數正確答案:【友元函數】6、填空題:將一個函數聲明為一個類的友元函數必須使用關鍵字______。正確答案:【friend】7、填空題:若需要把一個函數voidF();定義為一個類AB的友元函數,則應在類AB的定義中加入一條聲明語句:______。正確答案:【friendvoidF();】繼承與派生作業(yè)(1)繼承與派生測驗(1)1、問題:在公有派生的情況下,派生類中定義的成員函數只能訪問原基類的______。選項:A、公有成員和私有成員B、私有成員和保護成員C、公有成員和保護成員D、私有成員、保護成員和公有成員正確答案:【公有成員和保護成員】2、問題:下列說法中錯誤的是______。選項:A、公有繼承時基類中的public成員在派生類中仍是public的B、公有繼承時基類中的private成員在派生類中仍是private的C、私有繼承時基類中的public成員在派生類中是private的D、保護繼承時基類中的public成員在派生類中時protected的正確答案:【公有繼承時基類中的private成員在派生類中仍是private的】3、問題:若有如下類定義:classB{voidfun1(){}protected:doublevar1;public:voidfun2(){}};classD:publicB{protected:voidfun3(){}};已知obj是類D的對象,下列語句中不違反類成員訪問控制權限的是______。選項:A、obj.fun1();B、obj.var1;C、obj.fun2();D、obj.fun3()正確答案:【obj.fun2();】4、問題:下列關于派生類的描述中錯誤的是______。選項:A、一個派生類可以作為另一個派生類的基類B、派生類至少有一個基類C、派生類的缺省繼承方式是privateD、派生類只繼承了基類的公有成員和保護成員正確答案:【派生類只繼承了基類的公有成員和保護成員】5、問題:下列關鍵字中,不能用來表示繼承方式的是______。選項:A、privateB、staticC、publicD、protected正確答案:【static】6、填空題:基類中被說明為______的成員只能被其派生類的成員函數訪問,不能被外界函數訪問。正確答案:【protected##%_YZPRLFH_%##保護##%_YZPRLFH_%##基類中被說明為protected的成員只能被其派生類的成員函數訪問,不能被其它的函數訪問?!?、填空題:類繼承中,缺省的繼承方式是______。正確答案:【私有繼承##%_YZPRLFH_%##private繼承##%_YZPRLFH_%##私有##%_YZPRLFH_%##private##%_YZPRLFH_%##本題考查的是繼承的基本概念。類的繼承方式有公有、保護、私有三種。默認的繼承方式為私有繼承?!坷^承與派生測驗(2)——虛函數與抽象類1、問題:關于虛函數的描述中,正確的是______。選項:A、虛函數是一個static類型的成員函數B、虛函數是一個非成員函數C、基類中聲明了虛函數后,派生類中將其對應的函數可不必聲明為虛函數D、派生類的虛函數與基類的虛函數具有不同的參數個數和類型正確答案:【基類中聲明了虛函數后,派生類中將其對應的函數可不必聲明為虛函數】2、問題:關于純虛函數,下列表述正確的是______。選項:A、純虛函數是用static聲明的虛函數B、純虛函數的聲明總是以=0;結束C、派生類必須實現基類的純虛函數D、含有純虛函數的類不可能是派生類正確答案:【純虛函數的聲明總是以=0;結束】3、問題:有如下程序:#includeiostreamusingnamespacestd;classA{public:virtualvoidf(){cout1;}voidg(){cout2;}};classB:publicA{public:virtualvoidf(){cout3;}voidg(){cout4;}};voidshow(Aa){a.f();a.g();}intmain(){Bb;show(b);return0;}運行時的輸出結果是_____________選項:A、12B、34C、14D、32正確答案:【32】4、問題:有如下程序:#includeiostreamusingnamespacestd;classBase{public:voidoutput(){cout1;}virtualvoidPrint(){cout'B';}};classDerived:publicBase{public:voidoutput(){cout2;}voidPrint(){cout'D';}};intmain(){Base*ptr=newDerived;//合法ptr-output();ptr-Print();deleteptr;return0;}程序的輸出結果是______。選項:A、1BB、1DC、2BD、2D正確答案:【1D】5、問題:下列有關繼承和派生的敘述中,正確的是______。選項:A、如果一個派生類私有繼承其基類,則該派生類中的成員不能訪問基類的保護成員B、派生類的成員函數可以訪問基類的所有成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現基類的一個純虛函數,則該派生類是一個抽象類正確答案:【如果派生類沒有實現基類的一個純虛函數,則該派生類是一個抽象類】6、填空題:有如下程序:#includeiostreamusingnamespacestd;classMonitor{public:Monitor(chart):type(t){}voidPrint()const{coutThetypeofmonitoristypeendl;}private:chartype;};classComputer{public:Computer(inti,charc):____________{id=i;}voidPrint()const{coutThecomputerisidendl;mon.Print();}private:intid;Monitormon;//注意這里};intmain(){constComputermyComputer(101,'B');myComputer.Print();return0;}請將程序補充完整,使程序在運行時輸出:Thecomputeris101'ThetypeofmonitorisB正確答案:【mon(c)##%_YZPRLFH_%##mon(c)##%_YZPRLFH_%##mon(c)##%_YZPRLFH_%##mon(c)】7、填空題:“圖形”類Shape中定義了純虛函數CalArea(),“三角形”類Triangle繼承了類Shape,請將Triangle類中的CalArea函數補充完整。#includeiostreamusingnamespacestd;classShape{public:virtualdoubleCalArea()=0;//求面積};classTriangle:publicShape{public:Triangle(doubles,doubleh):side(s),height(h){}________________{returnside*height/2;}//求三角形面積private:doubleside;//底邊長doubleheight;//底邊上的高};intmain(){Triangletri(3,5);coutTrianglearea=tri.CalArea()endl;return0;}正確答案:【virtualdoubleCalArea()##%_YZPRLFH_%##doubleCalArea()##%_YZPRLFH_%##virtualdoubleCalArea()##%_YZPRLFH_%##doubleCalArea()】多態(tài)性作業(yè)多態(tài)性測驗1、問題:關于虛函數的描述中,正確的是______。選項:A、基類中聲明了虛函數后,派生類中將其對應的函數可不必聲明為虛函數B、虛函數是一個static類型的成員函數C、虛函數是一個非成員函數D、派生類的虛函數與基類的虛函數具有不同的參數個數和類型正確答案:【基類中聲明了虛函數后,派生類中將其對應的函數可不必聲明為虛函數】2、問題:關于純虛函數,下列表述正確的是______。選項:A、純虛函數的聲明總是以=0;結束B、純虛函數是用static聲明的虛函數C、派生類必須實現基類的純虛函數D、含有純虛函數的類不可能是派生類正確答案:【純虛函數的聲明總是以=0;結束】3、問題:有如下程序:#includeiostreamusingnamespacestd;classA{public:virtualvoidf(){cout1;}voidg(){cout2;}};classB:publicA{public:virtualvoidf(){cout3;}voidg(){cout4;}};voidshow(Aa){a.f();a.g();}intmain(){Bb;show(b);return0;}運行時的輸出結果是_____________選項:A、32B、12C、34D、14正確答案:【32】4、問題:有如下程序:#includeiostreamusingnamespacestd;classBase{public:voidoutput(){cout1;}virtualvoidPrint(){cout'B';}};classDerived:publicBase{public:voidoutput(){cout2;}voidPrint(){cout'D';}};intmain(){Base*ptr=newDerived;//合法ptr-output();ptr-Print();deleteptr;return0;}程序的輸出結果是______。選項:A、1DB、1BC、2BD、2D正確答案:【1D】5、問題:下列有關繼承和派生的敘述中,正確的是______。選項:A、如果派生類沒有實現基類的一個純虛函數,則該派生類是一個抽象類B、如果一個派生類私有繼承其基類,則該派生類中的成員不能訪問基類的保護成員C、派生類的成員函數可以訪問基類的所有成員D、基類對象可以賦值給派生類對象正確答案:【如果派生類沒有實現基類的一個純虛函數,則該派生類是一個抽象類】6、填空題:有如下程序:#includeiostreamusingnamespacestd;classMonitor{public:Monitor(chart):type(t){}voidPrint()const{coutThetypeofmonitoristypeendl;}private:chartype;};classComputer{public:Computer(inti,charc):____________{id=i;}voidPrint()const{coutThecomputerisidendl;mon.Print();}private:intid;Monitormon;//注意這里};intmain(){constComputermyComputer(101,'B');myComputer.Print();return0;}請將程序補充完整,使程序在運行時輸出:Thecomputeris101'ThetypeofmonitorisB正確答案:【mon(c)##%_YZPRLFH_%##mon(c)##%_YZPRLFH_%##mon(c)##%_YZPRLFH_%##mon(c)】7、填空題:“圖形”類Shape中定義了純虛函數CalArea(),“三角形”類Triangle繼承了類Shape,請將Triangle類中的CalArea函數補充完整。#includeiostreamusingnamespacestd;classShape{public:virtualdoubleCalArea()=0;//求面積};classTriangle:publicShape{public:Triangle(doubles,doubleh):side(s),height(h){}________________{returnside*height/2;}//求三角形面積private:doubleside;//底邊長doubleheight;//底邊上的高};intmain(){Triangletri(3,5);coutTrianglearea=tri.CalArea()endl;return0;}正確答案:【virtualdoubleCalArea()##%_YZPRLFH_%##doubleCalArea()##%_YZPRLFH_%##virtualdoubleCalArea()##%_YZPRLFH_%##doubleCalArea()】繼承小作業(yè)小測驗1、問題:下列有關繼承和派生的敘述中,正確的是______。選項:A、派生類不能訪問基類的保護成員B、抽象類不能被實例化C、派生類應當向基類的構造函數傳遞參數D、虛函數必須在派生類中重新實現正確答案:【抽象類不能被實例化】2、問題:下列有關抽象類和純虛函數的敘述中,錯誤的是______。選項:A、擁有純虛函數的類是抽象類,不能用來定義對象B、抽象類的派生類若不實現純虛函數,它也是抽象類C、純虛函數的聲明以=0;結束D、純虛函數都不能有函數體正確答案:【純虛函數都不能有函數體】3、問題:有如下程序:#includeiostreamusingnamespacestd;classBase{public:voidfun(){coutBase::funend1endl;}};classDerived:publicBase{public:voidfun(){______coutDerived::funend1endl;}};intmain(){Derivedd;d.fun();return0;}已知其執(zhí)行后的輸出結果為:Base::funDerived::fun則程序中下劃線處應填入的語句是______。選項:A、Base.fun();B、Base::fun();C、Base-fun();D、fun();正確答案:【Base::fun();】4、問題:有如下程序:#includeiostreamusingnamespacestd;classGA{public:virtualintf(){return1;}};classGB:publicGA{public:virtualintf(){return2;}};voidshow(GAg){coutg.f();}voiddisplay(GAg){coutg.f();}intmain(){GAa;show(a);display(a);GBb;show(b);display(b);return0;}運行時的輸出結果是______。選項:A、1111B、1211C、1112D、1212正確答案:【1112】運算符重載作業(yè)(1)運算符重載測試(1)1、問題:通過運算符重載,可以改變運算符原有的______。選項:A、操作數類型B、操作數個數C、優(yōu)先級D、結合性正確答案:【操作數類型】2、問題:下列關于運算符函數的描述中,錯誤的是()。選項:A、運算符函數的名稱總是以operator為前綴B、運算符函數的參數可以是對象C、運算符函數只能定義為類的成員函數D、在表達式中使用重載的運算符相當于調用運算符重載函數正確答案:【運算符函數只能定義為類的成員函數】3、問題:在下面的運算符重載函數的原型中,錯誤的是______。選項:A、Volumeoperator-(double,double);B、doubleVolume::operator-(double);C、VolumeVolume::operator-(Volume);D、Volumeoperator-(Volume,Volume);正確答案:【Volumeoperator-(double,double);】4、問題:有以下程序#includeiostreamusingnamespacestd;classComplex//復數類{public:Complex(doubler=0,doublei=0):re(r),im(i){}doublereal()const{returnre;}doubleimag()const{returnim;}Complexoperator+(Complexc)const{returnComplex(re+c.re,im+c.im);}private:doublere,im;//實部,虛部};intmain(){Complexa=Complex(1,1)+Complex(5);couta.real()'+'a.imag()'i'endl;return0;}程序執(zhí)行后的輸出結果是______。選項:A、6+6iB、6+1iC、1+6iD、1+1i正確答案:【6+1i】5、問題:下面程序中對一維坐標點類Point進行運算符重載#includeiostreamusingnamespacestd;classPoint{public:Point(intval){x=val;}Pointoperator++(){x++;return*this;}Pointoperator++(int){Pointold=*this;++(*this);returnold;}intGetX()const{returnx;}private:intx;};intmain(){Pointa(10);cout(++a).GetX();couta++.GetX();return0;}編譯和運行情況是______。選項:A、運行時輸出1011B、運行時輸出1111C、運行時輸出1112D、編譯有錯正確答案:【運行時輸出1111】6、填空題:若將一個二元運算符重載為類的成員函數,其形參個數應該是______個。正確答案:【1##%_YZPRLFH_%##一##%_YZPRLFH_%##壹##%_YZPRLFH_%##one】7、填空題:在下面程序的橫線處填上適當的內容,使程序執(zhí)行后的輸出結果為1/2005。#includeiostream.hclassDate{public:Date(intm=1,inty=0):month(m),year(y){}voidPrint(){coutmonth/yearendl;}__________operator+(constDated1,constDated2);private:intmonth,year;};Dateoperator+(constDated1,constDated2){intyear,month;year=d1.year+d2.year;month=d1.month+d2.month;year+=(month-1)/12;month=(month-1)%12+1;returnDate(month,year);}intmain(){Dated1(3,2004),d2,d3(10);d2=d3+d1;d2.Print();return0;}正確答案:【friendDate##%_YZPRLFH_%##friendDate】8、填空題:Staff類含有int型數據成員ID,兩個Staff對象相等是指它們的ID相同。下面的函數重載了運算符==,它用來判斷兩個Staff對象是否相等,相等時返回true,否則返回false。請將橫線處缺失部分補充完整。boolStaff::Staff==(constStaffs){return();}正確答案:【ID==s.ID##%_YZPRLFH_%##s.ID==ID##%_YZPRLFH_%##s.ID==this->ID##%_YZPRLFH_%##this->ID==s.ID##%_YZPRLFH_%##(*this).ID==s.ID##%_YZPRLFH_%##s.ID==(*this).ID】運算符重載作業(yè)(2)運算符重載測驗(2)1、問題:1.在表達式x+y*z中,+是作為成員函數重載的運算符,*是作為非成員函數重載的運算符。下列敘述中正確的是______。選項:A、operator+有兩個參數,operator*有兩個參數B、operator+有兩個參數,operator*有一個參數C、operator+有一個參數,operator*有兩個參數D、operator+有一個參數,operator*有一個參數正確答案:【operator+有一個參數,operator*有兩個參數】2、問題:有如下程序:#includeiostreamusingnamespacestd;classAmount{intamount;public:Amount(intn=0):amount(n){}intgetAmount()const{returnamount;}Amountoperator+=(Amounta){amount+=a.amount;return______;}};intmain(){Amountx(3),y(7);x+=y;coutx.getAmount()endl;return0;}已知程序的運行結果是10,則下劃線處缺失的表達式是______。選項:A、*thisB、thisC、amountD、amount正確答案:【*this】3、填空題:多數運算符既能作為類的成員函數重載,也能作為類的非成員函數重載,但[]運算符只能作為類的______函數重載。正確答案:【成員】4、填空題:補充完整下面的類定義:classMyString{char*a;public:MyString(char*as){//構造函數a=newchar[strlen(aa)+1];strcpy(a,aa);}MyStringoperator=(constMyStringx){//重載賦值運算符Delele[]a;a=newchar[strlen(x.a)+l];strcpy(a,x.a)return________;}~MyString(){delete[]a;}};正確答案:【*this】函數模板作業(yè)函數模板測驗1、問題:有如下函數模板:templateclassTTsquare(Tx){returnx*x;}其中T是______。選項:A、函數形參B、函數實參C、模板形參D、模板實參正確答案:【模板形參】2、問題:下列函數模板的定義中,合法的是______。選項:A、templatetypenameTTabs(Tx){returnx0?-x:x;}B、templateclassTTabs(Tx){returnx0?-x:x;}C、templateTclassTabs(Tx){returnx0?-x:x;}D、templateTabs(Tx){returnx0?-x:x;}正確答案:【templatetypenameTTabs(Tx){returnx0?-x:x;}】3、問題:C++中的模板包括______。選項:A、對象模板和函數模板B、對象模板和類模板C、函數模板和類模板D、變量模板和對象模板正確答案:【函數模板和類模板】4、問題:下列是模板聲明的開始部分,其中正確的是______。選項:A、templateTB、templateclassT1,T2C、templateclassT1,classT2D、templateclassT1;classT2正確答案:【templateclassT1,classT2】5、問題:執(zhí)行下列程序后,輸出的結果是______。#includeiostreamusingnamespacestd;templatetypenameTTtotal(T*data){Ts=0;while(*data)s+=*data++;returns;}intmain(){intx[]={2,4,6,8,0,12,14,16,18};couttotal(x);return0;}選項:A、20B、40C、60D、80正確答案:【20】6、填空題:1、已知intDBL(intn){returnn+n;}和longDBL(Longn){returnn+n;}是一個函數模板的兩個實例,請補充完整該函數模板的定義:_____________TDBL(Tn){returnn+n;}正確答案:【template##%_YZPRLFH_%##template##%_YZPRLFH_%##template##%_YZPRLFH_%##template】類模板作業(yè)類模板測驗1、問題:以下關于類模板的模板參數的敘述中,錯誤的是______。選項:A、模板參數可以作為數據成員的類型B、模板參數可以作為成員函數的返回類型C、模板參數可以作為成員函數的參數類型D、模板參數不能作為成員函數的局部變量的類型正確答案:【模板參數不能作為成員函數的局部變量的類型】2、問題:關于關鍵字class和typename,下列表述中正確的是______。選項:A、程序中所有的typename都可以替換為classB、程序中所有的class都可以替換為typenameC、A)和B)都正確D、A)和B)都不正確正確答案:【程序中所有的typename都可以替換為class】3、問題:關于類模板下列說法不正確的是______。選項:A、用類模板創(chuàng)建一個對象時,不能省略實際參數B、類模板只是虛擬類型的參數C、類模板本身在編譯中不會生成任何代碼D、類模板的成員函數都是模板函數正確答案:【類模板只是虛擬類型的參數】4、填空題:補充完整下面的模板定義:templateclassType//Type為類型參數classXtwo{//由兩個Type類型的數據成員構成的模板類Typea;Typeb;public:Xtwo(Typeaa=0,Typebb=0):a(aa),b(bb){}intCcmpare(){//比較a和b的大小if(ab)returm1;elseif(a==b)return0;elsereturn-1;}TypeSnm(){returna+b;}//返回a和b之和TypeMult();//函數聲明,返回a和b之乘積};templateclassType____________::Mult()//Mult函數的類外定義{returna*b;}正確答案:【Xtwo##%_YZPRLFH_%##Xtwo##%_YZPRLFH_%##Xtwo##%_YZPRLFH_%##Xtwo】C++標準庫作業(yè)2020-2021-2<>(下)期末試卷1、問題:有如下類定義和變量定義:classA{public:A(){data=0;}~A(){}intGetData()const{returndata;}voidSetData(intn){data=n;}private:intdata;};constAa;Ab;下列函數調用中錯誤的是__________。選項:A、a.SetData(10);B、a.GetData();C、b.GetData();D、b.SetData(10);正確答案:【a.SetData(10);】2、問題:在公有派生的情況下,派生類中定義的成員函數只能訪問原基類的______。選項:A、公有成員和保護成員B、公有成員和私有成員C、私有成員和保護成員D、私有成員、保護成員和公有成員正確答案:【公有成員和保護成員】3、問題:關于友元說法錯誤的是______。選項:A、友元函數必須被聲明在public區(qū)B、友元函數可以訪問類中的所有數據成員C、友元類的所有成員函數都是另一個類友元函數D、友元函數不可以在類內部被定義正確答案:【友元函數必須被聲明在public區(qū)】4、問題:關于虛函數的描述中,正確的是______。選項:A、基類中聲明了虛函數后,派生類中將其對應的函數可不必聲明為虛函數B、虛函數是一個static類型的成員函數C、虛函數是一個非成員函數D、派生類的虛函數與基類的虛函數具有不同的參數個數和類型正確答案:【基類中聲明了虛函數后,派生類中將其對應的函數可不必聲明為虛函數】5、問題:下列關于派生類的描述中錯誤的是______。選項:A、派生類只繼承了基類的公有成員和保護成員B、一個派生類可以作為另一個派生類的基類C、派生類至少有一個基類D、派生類的缺省繼承方式是private正確答案:【派生類只繼承了基類的公有成員和保護成員】6、問題:關于純虛函數,下列表述正確的是______。選項:A、純虛函數的聲明總是以=0;結束B、純虛函數是用static聲明的虛函數C、派生類必須實現基類的純虛函數D、含有純虛函數的類不可能是派生類正確答案:【純虛函數的聲明總是以=0;結束】7、問題:有如下程序:#includeiostreamusingnamespacestd;classBase{public:voidoutput(){cout1;}virtualvoidPrint(){cout'B';}};classDerived:publicBase{public:voidoutput(){cout2;}voidPrint(){cout'D';}};intmain(){Base*ptr=newDerived;//合法ptr-output();ptr-Print();deleteptr;return0;}程序的輸出結果是______。選項:A、1DB、1BC、2BD、2D正確答案:【1D】8、問題:通過運算符重載,可以改變運算符原有的______。選項:A、操作數類型B、操作數個數C、優(yōu)先級D、結合性正確答案:【操作數類型】9、問題:有如下函數模板:templateclassTTsquare(Tx){returnx*x;}其中T是______。選項:A、模板形參B、函數形參C、函數實參D、模板實參正確答案:【模板形參】10、問題:C++中的模板包括______。選項:A、函數模板和類模板B、對象模板和函數模板C、對象模板和類模板D、變量模板和對象模板正確答案:【函數模板和類模板】11、問題:若磁盤上己存在某個文本文件,其全路徑文件名為d:\myfile\test.txt,下列語句中不能打開該文件的是______。選項:A、ifstreamfile(d:\\myfile\\test.txt);B、ifstreamfile;file.open(d:\\myfile\\test.txt);C、ifstream*pFile=newifstream(d:\\myfile\\test.txt);D、ifstreamfile(d:\myfile\test.txt);正確答案:【ifstreamfile(d:\myfile\test.txt);】12、問題:關于面向對象的程序設計方法,下列說法正確的是______。選項:A、在面向對象的程序設計中,結構化程序設計方法仍有著重要作用B、封裝性指的是將不同類型的相關數據組合在一起,作為一個整體進行處理C、多態(tài)性指的是對象的狀態(tài)會根據運行時要求自動變化D、基類的私有成員在派生類的對象中不可訪問,也不占內存空間正確答案:【在面向對象的程序設計中,結構化程序設計方法仍有著重要作用】13、問題:在C++中,實現封裝性需借助______。選項:A、類B、枚舉C、數組D、函數正確答案:【類】14、問題:下列關于類和對象的敘述中,錯誤的是______。選項:A、一個類只能有一個對象B、對象是類的具體實例C、類是對某一類對象的抽象D、類和對象是一種數據類型與變量的關系正確答案:【一個類只能有一個對象】15、問題:有如下類聲明:classFoo{intbar;};則Foo類的成員bar是______。選項:A、私有數據成員B、公有數據成員C、公有成員函數D、私有成員函數正確答案:【私有數據成員】16、問題:有以下類定義classMyClass{public:MyClass(){cout1;}};則執(zhí)行語句MyClassa,b[2],*p[2];后,程序的輸出結果是______。選項:A、11B、111C、1111D、11111正確答案:【11】17、問題:有如下兩個類的定義classAA{};classBB{AAv1,*v2;BBv3;int*v4;};其中有一個成員變量的定義是錯誤的,這個變量是_____________。選項:A、V3B、V1C、V2D、V4正確答案:【V3】18、問題:Sample是一個類,定義如下classSample{intval;public:Sample(intv):val(v){}};執(zhí)行下面語句后,調用Sample類的構造函數的次數是_______。選項:A、4B、0C、2D、3正確答案:【4】19、問題:有如下類的定義:classTeacher{public:inta;protected:intb;private:intc;};classStudent:protectedTeacher{public:intm;protected:intn;};則派生類Student中保護數據成員的個數是___個。選項:A、3B、1C、2D、4正確答案:【3】20、問題:下列哪個不屬于C++的預定義的流對象______。選項:A、iostreamB、cinC、cerrD、clog正確答案:【iostream】21、填空題:在C++面向對象程序設計框架中,______是程序的基本組成單元。正確答案:【類##%_YZPRLFH_%##class##%_YZPRLFH_%##Class##%_YZPRLFH_%##CLASS】22、填空題:在面向對象的程序設計中,將數據和處理數據的操作封裝成一個整體就定義了一種事物的類型,稱作類。類是一種抽象的概念,屬于該類的一個實例叫做______。正確答案:【對象】23、填空題:與指針成員訪問表達式p-name等價的表達式是______。正確答案:【(*p).name】24、填空題:有如下類聲明:classMyClass{inti;private:intj;protected:intk;public:intm,n;};其中,私有成員的數量為______。正確答案:【2##%_YZPRLFH_%##2個##%_YZPRLFH_%##兩個】25、填空題:如果一個類中至少有一個純虛函數,則該類稱為_____________。正確答案:【抽象類】26、填空題:在C++類中可以包含______、_______和___三種具有不同訪問控制權的成員。(填寫中文)正確答案:【私有##%_YZPRLFH_%##公有##%_YZPRLFH_%##保護】27、填空題:友員函數是用關鍵字__________修飾的非成員函數。正確答案:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 拱棚工程施工方案(3篇)
- 致敬英烈-緬懷革命先烈主題班會課件
- 2025年河北省職教高考《職測》核心考點必刷必練試題庫(含答案)
- 《道路交通安全法》知識考試題庫150題(含答案)
- 2025年江西師范高等??茖W校高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年江南影視藝術職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 專題03 冠詞(第02期) 帶解析
- 2025科學儀器行業(yè)市場動態(tài)與技術發(fā)展趨勢
- 無人駕駛與機器人行業(yè)的關聯(lián)與前景
- 消防設計工程合同模板
- 中央2025年公安部部分直屬事業(yè)單位招聘84人筆試歷年參考題庫附帶答案詳解
- 三年級數學(上)計算題專項練習附答案
- 中醫(yī)診療方案腎病科
- 2025年安慶港華燃氣限公司招聘工作人員14人高頻重點提升(共500題)附帶答案詳解
- 人教版(2025新版)七年級下冊數學第七章 相交線與平行線 單元測試卷(含答案)
- 玩具有害物質風險評估-洞察分析
- 春節(jié)節(jié)后復工全員安全意識提升及安全知識培訓
- 2024年3月天津第一次高考英語試卷真題答案解析(精校打?。?/a>
- 2024年河南省公務員錄用考試《行測》真題及答案解析
- 2023年上海鐵路局集團有限公司招聘筆試真題
- 信永中和在線測評85題
評論
0/150
提交評論