版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
一、填空題(每空1分,共15分,將正確答案寫在()中)1.C++中有兩種數(shù)據(jù)類型:(整型)和(字符型)可以使用signed修飾符。在C++中,用數(shù)組、指針、和(引用)作為函數(shù)參數(shù),能夠?qū)?shù)值帶回。2.為了降低函數(shù)調(diào)用的時(shí)間開銷,建議將小的調(diào)用頻繁的函數(shù)定義為(內(nèi)聯(lián)函數(shù)),方法是在函數(shù)類型前加上(inline)關(guān)鍵字。3.面向?qū)ο蟮某绦蛟O(shè)計(jì)有四大特征,它們是抽象、封裝、(繼承)、(多態(tài))。4.拷貝構(gòu)造函數(shù)是在用一個(gè)對象初始化另一個(gè)對象時(shí)被調(diào)用,系統(tǒng)缺省的拷貝構(gòu)造函數(shù)的工作方法是(拷貝每一個(gè)數(shù)據(jù)成員)?;蛑鹨豢截?.用new申請某一個(gè)類的動態(tài)對象數(shù)組時(shí),在該類中必須能夠匹配到(默認(rèn))構(gòu)造函數(shù),否則應(yīng)用程序會產(chǎn)生一個(gè)編譯錯(cuò)誤。6.靜態(tài)數(shù)據(jù)成員必須在類外進(jìn)行初始化,且靜態(tài)數(shù)據(jù)成員的一個(gè)拷貝被類的所有對象(共享)。7.在C++中,定義重載函數(shù)時(shí),應(yīng)至少使重載函數(shù)的參數(shù)個(gè)數(shù)或參數(shù)類型(有一個(gè)不同)。8.在C++中,雖然友元提供了類之間數(shù)據(jù)進(jìn)行訪問的一種方式,但它破壞了面向?qū)ο蟪绦蛟O(shè)計(jì)的(封裝)特性。9.預(yù)編譯指令由三種,它們是:文件包含、(宏定義)(條件編譯)10.靜態(tài)的成員函數(shù)沒有隱含的(this指針),所以,它們只能直接訪問類的靜態(tài)的數(shù)據(jù)成員。11.在C++中,函數(shù)的參數(shù)有兩種傳遞方式,它們是值傳遞和(引用傳遞)。12.當(dāng)非靜態(tài)成員函數(shù)被調(diào)用時(shí),該成員函數(shù)的(this指針)指向調(diào)用它的對象。13.拷貝構(gòu)造函數(shù)使用(一個(gè)已經(jīng)存在的對象)作為參數(shù)初始化創(chuàng)建中的對象。14.在公有繼承的情況下,基類數(shù)據(jù)成員在派生類中的訪問權(quán)限(保持不變)。15.在C++中,構(gòu)造派生類對象時(shí),總是先從(基類)的初始化開始的。16.當(dāng)需要統(tǒng)計(jì)程序中某個(gè)類創(chuàng)建對象的個(gè)數(shù)時(shí),需要給該類定義(靜態(tài)數(shù)據(jù))成員。17.在多個(gè)類之間有重復(fù)繼承時(shí),為避免被重復(fù)繼承的基類數(shù)據(jù)成員在內(nèi)存中有多個(gè)拷貝,應(yīng)將該基類定義為(虛基類)。18.在C++類中,有一種不能定義對象的類,這樣的類只能被繼承,稱之為(抽象類),定義該類至少具有一個(gè)(純虛函數(shù))。19.在C++中構(gòu)造一個(gè)對象時(shí),其數(shù)據(jù)成員在構(gòu)造函數(shù)中初始化。對于內(nèi)嵌的對象、(常量)(基類)數(shù)據(jù)成員需要在構(gòu)造函數(shù)的成員初始化列表中初始化。20.在類的定義中,說明為protected的數(shù)據(jù)成員稱為保護(hù)成員。保護(hù)數(shù)據(jù)成員具有雙重作用:對于其派生類而言,(是公有的);而對于其外部的程序而言,(是私有的)。21.控制格式輸出的操縱符中,(setprecision)是設(shè)置數(shù)據(jù)精度的,(hex)是設(shè)置十六進(jìn)制的。22.如果s是int型變量,且s=6,則下面s%2+(s+1)%2表達(dá)式的值為___1_。23.已知字母a的ASCII碼為十進(jìn)制數(shù)97,且設(shè)ch為字符型變量,則表達(dá)式ch=’a’+4’的值為__e__。24.?dāng)?shù)組與函數(shù)參數(shù)聯(lián)系密切,當(dāng)用數(shù)組元素作函數(shù)參數(shù)時(shí),這是屬于值傳遞;當(dāng)數(shù)組名作為參數(shù)時(shí),這是屬于引用傳遞,對形參的改變可影響到實(shí)參。25.利用“對象名.成員變量”形式訪問的對象成員僅限于被聲明為public的成員;若要訪問其他成員變量,需要通過成員函數(shù)或友元函數(shù)函數(shù)。26.一個(gè)__類__和_對象__的關(guān)系,正如基本數(shù)據(jù)類型與該類型的變量一個(gè)。27.類成員的默認(rèn)訪問方式是__私有___.28.一個(gè)類有_多個(gè)_個(gè)構(gòu)造函數(shù),有___一個(gè)__析構(gòu)函數(shù)。29.類的__靜態(tài)__成員函數(shù)不能對類中的非靜態(tài)成員進(jìn)行默認(rèn)訪問。30.如果說明類B是類A的友元類,則類B的所有成員函數(shù)都是類A的__友元函數(shù)____。31.利用成員函數(shù)對二元運(yùn)算符重載,其左操作數(shù)為this指針右操作數(shù)為成員函數(shù)參數(shù)。32.類有兩種用法:一種是類的實(shí)例化,即生成類的_對象_____;另一種是通過__繼承_____派生出新的類。33.運(yùn)算函數(shù)中的關(guān)鍵字是_operator_____,它和運(yùn)算符一起組成該運(yùn)算符函數(shù)的函數(shù)名。34.如果一個(gè)類中有一個(gè)或多個(gè)純虛函數(shù),則這個(gè)類稱為__抽象類____。35.文件的打開是通過通過使用類_fstream__的成員函數(shù)___open()_____來實(shí)現(xiàn)的。36.設(shè)所有變量均為整型,則表達(dá)式(e=2,f=5,e++,f++,e+f)的值為_9_。37.已知c的ASCII碼為十進(jìn)制數(shù)99,設(shè)k為字符型變量,則表達(dá)式k=‘c’+1的值為___d_____。38.函數(shù)的形參在未被調(diào)用之前不會分配空間,函數(shù)的形參的個(gè)數(shù)和類型要和實(shí)參的相同。39.類的成員分為數(shù)據(jù)成員和_成員函數(shù)______。40.類完成了面向?qū)ο蟪绦蛟O(shè)計(jì)的__封裝___特性。41.構(gòu)造函數(shù)是__對象____被創(chuàng)建時(shí)自動執(zhí)行,對象消失時(shí)自動執(zhí)行的成員函數(shù)稱為__析構(gòu)函數(shù)_____對象42.C++將類繼承分為單繼承和多繼承兩種。43.在繼承機(jī)制下,當(dāng)對象消亡時(shí),編譯系統(tǒng)先執(zhí)行派生類的析構(gòu)函數(shù),然后才執(zhí)行派生類中子對象類的析構(gòu)函數(shù),最后執(zhí)行基類的析構(gòu)函數(shù)。44.類的__public__數(shù)據(jù)成員是類所有對象共享的成員。45.友元函數(shù)__不是_類的成員函數(shù)。(是/不是)46.如果類A繼承了類B,則類A稱為___派生類____,類B稱為____基類___。47.運(yùn)算符重載后,原運(yùn)算符的優(yōu)先級和結(jié)合特性___不會__改變。(會/不會)48.___純虛函數(shù)___是一個(gè)在基類中說明的虛函數(shù),但未給出具體的實(shí)現(xiàn),要求在其派生類實(shí)現(xiàn)。49.文件的關(guān)閉是通過通過使用類__fstream__的成員函數(shù)__close()______來實(shí)現(xiàn)的。二、選擇題1.面向?qū)ο蟮模˙)是一種信息隱蔽技術(shù),目的在于將對象的使用者與設(shè)計(jì)者分開。不允許使用者直接存取對象的屬性,只能通過有限的接口與對象發(fā)生聯(lián)系。A.多態(tài)性B.封裝性C.繼承性D.重用性2.C++的合法注釋是(B)。A./*ThisisaCprogram/*B.//ThisisaCprogramC.“ThisisaCprogram”D./*ThisisaCprogram//3.關(guān)于C++和C語言的描述中,(D)是錯(cuò)誤的?A.C是C++的一個(gè)子集B.C程序在C++環(huán)境可以運(yùn)行C.C++程序在C環(huán)境可以運(yùn)行D.C++是面向?qū)ο蟮亩鳦是面向過程的4.運(yùn)算符+、<=、=、%中,優(yōu)先級最低的運(yùn)算符是(C)。A.+B.<=C.=D.%5.已知a=4,b=6,c=8,d=9,則“(a++,b>a++&&c>d)?++d:a<b”值為(D)。A.9B.6C.8D.0(假)6.對while、do…while循環(huán)結(jié)構(gòu),下面說法正確的是(B)。A.只是表達(dá)形式不同 B.do…while結(jié)構(gòu)中的語句至少執(zhí)行一次(先執(zhí)行后判斷)C.while結(jié)構(gòu)中的語句至少執(zhí)行一次D.條件成立時(shí),它們有可能一次也不執(zhí)行7.對中斷語句的說法下面不正確的是(B)。A.用戶可以指定中斷的位置B.用戶可以指定轉(zhuǎn)移的位置C.break語句可以跳出本循環(huán)D.continue語句可以結(jié)束本次循環(huán)8.以下正確的說法是()。A.用戶若需要調(diào)用標(biāo)準(zhǔn)函數(shù),調(diào)用前必須重新定義B.用戶可以直接調(diào)用所有標(biāo)準(zhǔn)庫函數(shù)C.用戶可以定義和標(biāo)準(zhǔn)庫函數(shù)重名的函數(shù),但是在使用時(shí)調(diào)用的是系統(tǒng)庫函數(shù)9.下列哪個(gè)不是重載函數(shù)在調(diào)用時(shí)選擇的依據(jù)()。A.參數(shù)類型B.參數(shù)個(gè)數(shù)C.函數(shù)類型D.函數(shù)名10.對數(shù)組名作函數(shù)的參數(shù),下面描述正確的是(B)。A.?dāng)?shù)組名作函數(shù)的參數(shù),調(diào)用時(shí)將實(shí)參數(shù)組復(fù)制給形參數(shù)組B.?dāng)?shù)組名作函數(shù)的參數(shù),主調(diào)函數(shù)和被調(diào)函數(shù)共用一段存儲單元C.?dāng)?shù)組名作參數(shù)時(shí),形參定義的數(shù)組長度不能省略D.?dāng)?shù)組名作參數(shù),不能改變主調(diào)函數(shù)中的數(shù)據(jù)12.在定義一個(gè)共用體變量時(shí),系統(tǒng)為其分配存儲空間的原則是(B)。A.按所有成員需要的存儲空間總和分配。B.按成員中占存儲空間最大者分配。C.按成員占存儲空間最小者分配。D.按第一個(gè)成員所需的存儲空間分配。13.下面(B)項(xiàng)是對構(gòu)造函數(shù)和析構(gòu)函數(shù)的正確定義。A.voidX::X(),voidX::~X()B.X::X(參數(shù)),X::~X()(析構(gòu)括號沒參數(shù))C.X::X(參數(shù)),X::~X(參數(shù))D.voidX::X(參數(shù)),voidX::~X(參數(shù))14.拷貝構(gòu)造函數(shù)具有的下列特點(diǎn)中,(D)是錯(cuò)誤的。A.
如果一個(gè)類中沒有定義拷貝構(gòu)造函數(shù)時(shí),系統(tǒng)將自動生成一個(gè)默認(rèn)的B.
拷貝構(gòu)造函數(shù)只有一個(gè)參數(shù),并且是該類對象的引用C.拷貝構(gòu)造函數(shù)是一種成員函數(shù)D.拷貝構(gòu)造函數(shù)的名字不能用類名A.一般成員函數(shù)B.類的初始化C.對象初始化D.刪除對象16.下列對派生類的描述中,(D)是錯(cuò)誤的。A.一個(gè)派生類可以作為另一個(gè)派生類的基類B.派生類至少有一個(gè)基類C.派生類的成員除了它自己的成員外,還包含了它的基類成員D.派生類中繼承的基類成員的訪問權(quán)限到派生類保持不變A規(guī)律性B.傳遞性C.重復(fù)性D.多樣性A.構(gòu)造函數(shù)B.虛函數(shù)C.析構(gòu)函數(shù)D.友元函數(shù)19.下列關(guān)于動態(tài)聯(lián)編的描述中,錯(cuò)誤的是(D)。A.動態(tài)聯(lián)編是以虛函數(shù)為基礎(chǔ)B.動態(tài)聯(lián)編是運(yùn)行時(shí)確定所調(diào)用的函數(shù)代碼的C.動態(tài)聯(lián)編調(diào)用函數(shù)操作是指向?qū)ο蟮闹羔樆驅(qū)ο笠肈.動態(tài)聯(lián)編是在編譯時(shí)確定操作函數(shù)的(如果已經(jīng)確定還談什么動態(tài))20.關(guān)于純虛函數(shù)和抽象類的描述中,錯(cuò)誤的是(C)。A.純虛函數(shù)是一種特殊的虛函數(shù),它沒有具體的實(shí)現(xiàn)B.抽象類是指具有純虛函數(shù)的類C.一個(gè)基類中說明有純虛函數(shù),該基類派生類一定不再是抽象類(如果派生類沒有重新定義純虛函數(shù),而派生類只是繼承基類的純虛函數(shù),則這個(gè)派生類仍然還是一個(gè)抽象類)D.抽象類只能作為基類來使用,其純虛函數(shù)的實(shí)現(xiàn)由派生類給出21.C++源文件的擴(kuò)展名為(A)。A.cppB.cC.txtD.exe22.在C++語言中,(A)的陳述是正確的。A.能使用關(guān)鍵字并區(qū)分大小寫B(tài).能使用關(guān)鍵字并不區(qū)分大小寫C.不能使用關(guān)鍵字并區(qū)分大小寫D.不能使用關(guān)鍵字并不區(qū)分大小寫23.運(yùn)算符+、=、*、>=中,優(yōu)先級最高的運(yùn)算符是(C)。A.+B.=C.*D.>=24.下列不合法的變量名為(A)。A.intB.int1C.name_1D.name025.已知x=43,ch=‘A’,y=0;則表達(dá)式(x>=y&&ch<’B’&&!y)的值是(C)。A.0B.語法錯(cuò)C.1(!y=!0=1只有!0為1,其他都為0)D.“假”26.以下不正確的是(C)。 A.語句for(i=0;;i++)表示無限循環(huán)B.for(;;)表示無限循環(huán)C.for()也表示無限循環(huán)(B才對)D.while(1)表示無限循環(huán)27.在函數(shù)的返回值類型與返回值表達(dá)式的類型的描述中,錯(cuò)誤的是()。A.函數(shù)返回值的類型是在定義函數(shù)時(shí)確定,在函數(shù)調(diào)用時(shí)是不能改變的B.函數(shù)返回值的類型就是返回值表達(dá)式的類型(看ACD)D.函數(shù)返回值類型決定了返回值表達(dá)式的類型28.如果一個(gè)函數(shù)無返回值,定義時(shí)它的函數(shù)類型應(yīng)是(C)。A.任意B.intC.voidD.無29.在C++語言中,關(guān)于參數(shù)默認(rèn)值的描述正確的是(B)。A.只能在函數(shù)定義時(shí)設(shè)置參數(shù)默認(rèn)值B.設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)當(dāng)從右向左設(shè)置(如inta,b,c=1,d=33)C.設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)當(dāng)全部設(shè)置D.設(shè)置參數(shù)默認(rèn)值后,調(diào)用函數(shù)不能再對參數(shù)賦值30.若有以下定義,則說法錯(cuò)誤的是(D)。 inta=100,*p=&a;A.聲明變量p,其中*表示p是一個(gè)指針變量B.變量p經(jīng)初始化,獲得變量a的地址C.變量p只可以指向一個(gè)整形變量D.變量p的值為100(獲得變量a的地址)31.列關(guān)于結(jié)構(gòu)體的說法錯(cuò)誤的是(D)。A.結(jié)構(gòu)體是由用戶自定義的一種數(shù)據(jù)類型B.結(jié)構(gòu)體中可設(shè)定若干個(gè)不同數(shù)據(jù)類型的成員C.結(jié)構(gòu)體中成員的數(shù)據(jù)類型可以是另一個(gè)已定義的結(jié)構(gòu)體D.在定義結(jié)構(gòu)體時(shí),可以為成員設(shè)置默認(rèn)值32.下列有關(guān)類的說法不正確的是(C)。A.
對象是類的一個(gè)實(shí)例B.
任何一個(gè)對象只能屬于一個(gè)具體的類C.
一個(gè)類只能有一個(gè)對象D.類與對象的關(guān)系和數(shù)據(jù)類型與變量的關(guān)系相似33.(C)的功能是對象進(jìn)行初始化。A.析構(gòu)函數(shù)B.數(shù)據(jù)成員C.構(gòu)造函數(shù)D.靜態(tài)成員函數(shù)34.關(guān)于友元的描述中,(A)是錯(cuò)誤的。A.
友元函數(shù)是成員函數(shù)(不能),它被說明在類體內(nèi)B.
友元函數(shù)可直接訪問類中的私有成員C.
友元函數(shù)破壞封裝性,使用時(shí)盡量少用D.
友元類中的所有成員函數(shù)都是友元函數(shù)35.了使類中的某個(gè)成員不能被類的對象通過成員操作符訪問,則不能把該成員的訪問權(quán)限定義為(A)。A.publicB.protectedC.privateD.static36.派生類的對象對它的(A)是可以訪問的。A.公有繼承的基類的公有成員B.公有繼承的基類的保護(hù)成員C.公有繼承的基類的私有成員D.保護(hù)繼承的基類的公有成員37.多繼承派生類構(gòu)造函數(shù)構(gòu)造對象時(shí),(B)被最先調(diào)用。A.派生類自己的構(gòu)造函數(shù)B.虛基類的構(gòu)造函數(shù)C.非虛基類的構(gòu)造函數(shù)D.派生類中子對象類的構(gòu)造函數(shù)38.C++類體系中,不能被派生類繼承的有(A)。A.構(gòu)造函數(shù)(構(gòu)造函數(shù)和析構(gòu)函數(shù)都不可被派生類繼承)B.虛函數(shù)C.靜態(tài)成員函數(shù)D.賦值操作函數(shù)39.編譯時(shí)的多態(tài)性可以通過使用(C)獲得。A.虛函數(shù)和指針B.重載函數(shù)和析構(gòu)函數(shù)C.虛函數(shù)和對象D.虛函數(shù)和引用40.下列描述中,(D)是抽象類的特征。A.可以說明虛函數(shù)B.可以進(jìn)行構(gòu)造函數(shù)重載C.可以定義友元函數(shù)D.不能說明其對象三、指出并改正下列程序段中的語法錯(cuò)誤。(6×2,12分)題目答案1. floatx=3.26f; int&ref1=x;1.float&refl=x;2. intd1=3,d2=2; int*constdp=&d1; dp=&d2; *dp=5;2.去掉const3.//Nums為已定義的類Nums*fp; fp=newint[4];3.int改為Nums4.voidfunc(intfirst,int2_secnd);4.voidfunc(intfirst,intsecnd);數(shù)字不能在開頭5.voidPixel::operator=(Pixel&p1,Pixel&p2);5.Pixel&Pixel::operator=(Pixel&p1);6.//Pixel有兩個(gè)整型成員x和yPixelPixel::operator+=(Pixle&p)const{ x+=p.x;y+=p.y; return*this;}6.去掉const2、指出并改正下列程序段中的語法錯(cuò)誤。(6×2,12分)題目答案1. intx=13; constint&ref=x; ref=10;1.去掉const2.double*fp; fp=newint(3);2.double改成int3.voidfunc(first,intsecnd);3.voidfunc(intfirst,intsecnd);4.//Pixel有兩個(gè)整型成員x和y,其拷//拷貝構(gòu)造函數(shù)定義如下:voidPixel(constPixle&p);4Pixel(constPixle&p);5.friendPixel&operator=(Pixel&p1,Pixel&p2);5.Pixel&operator=(Pixel&p1);6.//Pixel有兩個(gè)整型成員x和yPixelPixel::operator++(int){ x++; y++; return*this;}(返回值不能確定是哪個(gè))6.PixelPixel::operator++(int){Pixeltemp;temp.x=x++;temp.y=y++;returntemp;}四、程序填空1.編寫函數(shù)將字符串按逆序存放。#include<iostream.h>#include<stdio.h>//put()#include<string.h>voidmain(){ inti,n; chars[100],temp; cout<<"inputstring:"<<endl; cin>>s;//(1)注意它的用法! n=strlen(s);(2) for(i=0;i<n/2;i++) { temp=s[i];s[i]=s[n-i-1];s[n-i-1]=temp; }//前后調(diào)換 cout<<"Now,string:"<<endl; puts(s);//輸出新排列的字符串S}2.下列程序定義了類Pixel,請完成前置++和后置++的運(yùn)算符函數(shù)的定義。(注意這道題?。ヽlassPixel{ intx,y;public: Pixel(intxx=0,intyy=0){x=xx;y=yy;} Pixeloperator++(); Pixeloperator++(int); voiddisplay();};PixelPixel::operator++(){ x++; y++; return*this(3)}PixelPixel::operator++(int){s Pixeltemp=*this;(4) x++; y++; return(5)temp;}voidPixel::display(){ cout<<"("<<x<<","<<y<<")"<<endl;}3.根據(jù)給定的程序執(zhí)行結(jié)果,將下列程序補(bǔ)充完整。#include<iostream.h>classBase{public: virtual~Base(){cout<<”DeleteBase”<<endl;}(6)};classDerived:publicBase{public: ~Derived(){cout<<”DeleteDerived”<<endl;}(7)};voidmain(){ Base*p1=newDerived;(8) deletep1;//Derived先得出結(jié)果,故可能為析構(gòu)函數(shù)。//釋放了P1就自動調(diào)用~Derived()析構(gòu)函數(shù)。就不執(zhí)行~Base(),故~Base()是虛函數(shù)。}程序的執(zhí)行結(jié)果如下:DeleteDerivedDeleteBase4.定義一個(gè)字符串類String,有兩個(gè)私有數(shù)據(jù)成員:char*content和intlen;要求1)在構(gòu)造函數(shù)中提示用戶輸入字符串,;2)用戶能提取和顯示字符串;(分別由兩個(gè)函數(shù)完成)3)實(shí)現(xiàn)對字符串中所有小寫字母變成大寫,并顯示。注意內(nèi)存的分配與釋放。類定義的部分代碼如下,請補(bǔ)充代碼使類的定義完整。#include<iostream.h>#include<string>#include<stdlib.h>classString{ char*content; intlen;public: String(); ~String(){delete[]content;(1)} voiddisplay(); voidupper_str(); char*get_str()const{returncontent;(2)}};String::String(){ charch[50]; cout<<"enterastring:\n"; cin>>ch; len=strlen(ch); content=newchar[len+1];(3) if(!content) { cout<<"Memoryallocationeror!"; exit(1); } strcpy(content,ch);}voidString::display(){ cout<<content<<"have"<<len<<"characters."<<endl;}voidString::upper_str(){ for(inti=0;i<len;i++) if(content<=’z’&&content>=’a’)(4) content[i]=toupper(content[i]);(5)}5.下列程序定義了類Point,請完成前置--和后置--的運(yùn)算符函數(shù)的定義。classPoint{ floatx,y;public: Point(floatxx=0,floatyy=0){x=xx;y=yy;} Pointoperator--(); Pointoperator--(int); voiddisplay();};PointPoint::operator--(){ x--; y--; return*this;(6)}PointPoint::operator--(int){ Pointtemp=*this;(7) x--; y=y--; returntemp;(8)}voidPoint::display(){ cout<<"("<<x<<","<<y<<")"<<endl;}6、程序填空,直接將答案寫在空行上(6×2,12分)1.#include<iostream.h>_//_1_classA{ inta;public: A(inti){a=i;} voidprint(){cout<<a<<endl;}};classB{ Aobj_a; intb;public: __B(intj,inti):obj_a(j)//2_{b=i;} voidprint();};voidB::print()//3_{ obj_a.print(); cout<<b<<endl;}intmain(){ Bobj_b(3,4); obj_b.print(); return0;}2.#include<iostream.h>#include<math.h>classComplex{ doublereal,image;public: Complex(doubler=0,doublei=0){real=r;image=i;};friendostream&operator<<(ostream&output,Complex&obj);};ostream&operator<<(ostream&output,Complex&obj){output<<obj.real<<obj.image;returnoutput;6;}intmain(){ Complexc; cout<<c;return0;}//重載<<五、寫出程序的運(yùn)行結(jié)果1.(3分)#include<iostream.h>intmain(void){ charstr[]="configuration"; char*p=str; cout<<p<<endl;for(inti=0;i<sizeof(str);i=i+2) cout<<str[i]; cout<<endl;//字符c的ASCII碼是99 for(i=0;i<4;i++) cout<<*p+i<<'';//如果是*(p+i)就是輸出字符,否者輸出ASCII碼 cout<<endl; return0;}第第1題的運(yùn)行結(jié)果如下:configurationcniuain991001011022.(4分)#include<iostream.h>classNode{public: intdata;第2題程序運(yùn)行結(jié)果:輸入第2題程序運(yùn)行結(jié)果:輸入2a顯示2->*Node(intd,Node*q=0){data=d;next=q;}};intmain(){ intn; Node*p; Node*q=0; while(cin>>n){ p=newNode(n,q); q=p; } for(;p;p=p->next) cout<<p->data<<"->"; cout<<"*\n"; return0;}//假定,輸入如下3個(gè)數(shù)據(jù):234567↙3.(3分)#include<iostream.h>classConstTest{ intm1,m2;public: ConstTest(intx,inty){m1=x;m2=y;}voidprint(){cout<<m1<<","<<m2<<endl;} voidprint()const;};voidConstTest::print()const{ cout<<"constfun:"<<m1+m2<<endl;}intmain(){ ConstTesta(6,9); a.print(); constConstTestb(2,5);第3題程序運(yùn)行結(jié)果:6,9第3題程序運(yùn)行結(jié)果:6,9constfun7 return0;}4. (8分)#include<iostream.h>classPlane{protected: intx,y;public: Plane(inta,intb){x=a;y=b;} virtualvoidprint() {cout<<'('<<x<<','<<y<<')'<<endl;} virtualvoidincrease(intd);};classSolid:publicPlane{ intz;public: Solid(inta,intb,intc):Plane(a,b){z=c;} voidprint() {cout<<'('<<x<<','<<y<<','<<z<<')'<<endl;} voidincrease(intd);};voidPlane::increase(intd){x+=d;y+=d;}voidSolid::increase(intd){x+=d;y+=d;z+=d;}//接右邊的代碼intmain(){ Planed1(3,6); Solidd2(2,7,9); Plane*ptr; ptr=&d1; ptr->print(); ptr=&d2; ptr->print(); ptr->increase(4); ptr->print(); d2.print();(3,6)(2,7,9)(6,11,13)(3,6)(2,7,9)(6,11,13)(6,11,13)第4題運(yùn)行結(jié)果:Plane設(shè)為虛,則相同函數(shù)取不為虛的即solid。即兩個(gè)都為(6,11,13)。但如果變量不同則虛函數(shù)不執(zhí)行還是原來的如(3,6)(2,7,9)(3,6)(2,7)(6,11)(3,6)(2,7)(6,11)(6,11,9)第5題運(yùn)行結(jié)果:如果沒有虛函數(shù)則以第一個(gè)為基礎(chǔ),第二個(gè)不執(zhí)行,即第二個(gè)的printf和increase不執(zhí)行6.(3分)#include<iostream.h>classCount{ staticintcount;public: Count(){count++;} staticintGetc(){returncount;} ~Count(){count--;}};intCount::count=100;intmain(void){ Countc1,c2; cout<<Count::Getc()<<endl;{//執(zhí)行完里面才執(zhí)行析構(gòu)函數(shù) Countc[3]; cout<<Count::Getc()<<endl; }//執(zhí)行虛構(gòu)函數(shù) cout<<Count::Getc()<<endl;return0;}第6題1021051021051021.(3分)#include<iostream.h>voidmain(void)//里面的void有沒有一樣{ charstring[]="fortunate"; char*p=string; cout<<string<<endl; cout<<*p<<*(p+2)<<*(p+4)<<*(p+6)<<endl; for(inti=1;i<sizeof(string);i+=2)fortunatefortunatefruaotnt}a是偶數(shù)a是奇數(shù)1a是偶數(shù)a是奇數(shù)1#include<iostream.h>voidmain(){ inta; cout<<"pleaseinputanumber:"; cin>>a; switch(a%2) { case0:cout<<"a是偶數(shù)"<<endl;//少了break,程序會自動自行下一個(gè)語句 default:cout<<"a是奇數(shù)"<<endl; } a=a/4; cout<<a<<endl;}如果輸入數(shù)為6,則輸出結(jié)果是什么?3. (3分)#include<iostream.h>classCount{ staticintcount;public: Count(){count++;} staticintGetc(){returncount;} ~Count(){count--;}};intCount::count=10;voidmain(void){ Countc1,c2; cout<<Count::Getc()<<endl; { Countc3; cout<<Count::Getc()<<endl; } cout<<Count::Getc()<<endl;}答案前面提到過類似題目!121213124. (3分)#include<iostream.h>classPoint{ intx,y;public:Point(inta=0,intb=0){x=a;y=b;}voidmove(intxoffset,intyoffset){x+=xoffset;y+=yoffset;}intgetx(){returnx;}intgety(){returny;}};classRectangle:publicPoint{ intlength,width;public:Rectangle(intx,inty,intl,intw):Point(x,y) {length=l;width=w;}intgetlength(){returnlength;}intgetwidth(){returnwidth;}33,66,4,9};33,66,4,9voidmain(){ Rectangler(0,0,4,9); r.move(33,66); cout<<r.getx()<<","<<r.gety()<<","<<r.getlength()<<","<<r.getwidth()<<endl;}5. (6分)#include<iostream.h>classBase {public: virtualvoidshow(){cout<<"Base::show()"<<endl;} };classDerived1:publicBase {public: voidshow(){cout<<"Derived1::show()"<<endl;} };classDerived2:publicDerived1 {public: voidshow(){cout<<"Derived2::show()"<<endl;}};voidmain() { Baseb; Derived1d1; Derived2d2; Base*ptr[3]={&b,&d1,&d2}; for(inti=0;i<3;i++) ptr[i]->show();Base::show()Base::show()Derived1::show()Derived2::show()6.去掉上題(即第5小題)程序中的“virtual”關(guān)鍵字,運(yùn)行結(jié)果如何?(6分)BaseBase::show()Base::show()Base::show()1.(3分)#include<iostream.h>voidmain(void){ charstr[]="safety"; char*p=str; cout<<str<<endl; cout<<*p<<*(p+2)<<*(p+4)<<endl; for(inti=1;i<sizeof(str)-1;i+=2) cout<<str[i];safetysafetysftaey2.(3分)#include<iostream.h>voidmain(){ inta,b; intn=0; for(a=1,b=1;a<=100;a++){ if(b>=10)break; if(b%3==1){ b+=3; n++;4104103 } } cout<<a<<endl; cout<<b<<endl; cout<<n<<endl;}3. (3分)#include<iostream.h>classPixel{ intx,y;public: staticintcount; Pixel(){count++;} ~Pixel(){count--;}};intPixel::count=0;intmain(){ Pixelp[6]; Pixelp1=p[2]; cout<<Pixel::count<<endl; { Pixelp2[4]; cout<<Pixel::count<<endl; } cout<<Pixel::count<<endl;}661064.(3分)#include<iostream.h>classA{ inta1,a2;public: A(inti,intj){a1=i;a2=j;} voidprintA(){cout<<a1<<","<<a2<<endl;}};classB{ Aa; intb1;public: B(inti,intj,intk); voidprintB();};B::B(inti,intj,intk):a(k,j){b1=i;}voidB::printB(){ a.printA(); cout<<b1<<endl;}intmain(void){ Bbbb(8,2,6); bbb.printB();6,286,28}(6,3)[2,7,9](6,3)[2,7,9](6,3)[7,12,14]#include<iostream.h>classPixel{protected: intx,y;public: Pixel(inta,intb){x=a;y=b;} virtualvoidprint() {cout<<"("<<x<<","<<y<<")"<<endl;} virtualvoidmove(intd);};classPixel_3d:publicPixel{ intz;public: Pixel_3d(inta,intb,intc):Pixel(a,b){z=c;} voidprint() {cout<<"["<<x<<","<<y<<","<<z<<"]"<<endl;} voidmove(intd);};voidPixel::move(intd){x+=d;y+=d;}voidPixel_3d::move(intd){x+=d;y+=d;z+=d;}voidmain(){(6,3)(2,7)(6,3)(2,7)(6,3)(7,12) Pixel_3dd2(2,7,9); Pixel*ptr; ptr=&d1; ptr->print(); ptr=&d2; ptr->print(); ptr->move(5); ptr=&d1; ptr->print(); ptr=&d2; ptr->print();}6.去掉上題(即第5小題)程序中的“virtual”關(guān)鍵字,運(yùn)行結(jié)果如何?(4分)1.(3分)#include<iostream.h>voidmain(void){ charstring[]="successful"; char*p=string; cout<<string<<endl; cout<<*p<<*(p+2)<<*(p+4)<<*(p+6)<<endl;for(inti=1;i<sizeof(string);i+=2) cout<<string[i];successsuccessfulscesucsfl2.(4分)#include<iostream.h>intmain(){ intx,y; cout<<"Inputx,y:"; cin>>x>>y; cout<<"x="<<x<<’,’<<"y="<<y<<endl; cout<<"x-y="<<x-y<<"\n";cout<<”x*y=”<<x*y<<endl;return0; }//假定,輸入如下兩個(gè)數(shù)據(jù):93↙x=9,y=3x-y=6x=9,y=3x-y=6x*y=273. (4分)#include<iostream.h>classPixel{ intx,y;public: staticintcount; Pixel(){count++;} ~Pixel(){count--;} Pixel(constPixel&obj) { x=obj.x;y=obj.y;count++; }};intPixel::count=0;intmain(){ Pixelp[5];cout<<Pixel::count<<endl; Pixelp1=p[1]; Pixelp2=p[2]; cout<<Pixel::count<<endl; { Pixelp2[3]; cout<<Pixel::count<<endl; } cout<<Pixel::count<<endl;5757107//第3題運(yùn)行結(jié)果:4.(7分)#include<iostream.h>classA{ inta;protected: intprotect;public: A(intx){a=x;protect=x+5;cout<<"A"<<endl;} voidshow(){cout<<a<<""<<protect<<endl;}};classB{intb;public: B(intx){b=x;cout<<"B"<<endl;}intGetb(){returnb;}};classC:publicA{ intc; Bobj_b;public: C(intx,inty,intz);ABABC162,5};C::C(intx,inty,intz):A(x),obj_b(y){ c=z; cout<<"C"<<endl;}voidC::show(){ A::show(); cout<<obj_b.Getb()<<","<<c<<endl;}voidmain(void){ Cc1(1,2,5); c1.show();}//第4題運(yùn)行結(jié)果:5. (6分)#include<iostream.h>classB {public: virtualvoidprint(){cout<<"B::print()\n";} };classD1:publicB {public: voidprint(){cout<<"D1::print()"<<endl;} };classD2:publicD1 {public: voidprint(){cout<<"D2::print()"<<endl;}};voidmain() { Bb0; D1d1; D2d2; B*p[3]={&b0,&d1,&d2}; for(inti=0;i<3;i++) p[i]->print(); B::print()D1::print()B::print()D1::print()D2::print()第5題的運(yùn)行結(jié)果:B::print()B::print()B::print()B::print()B::print()B::print()第6題的運(yùn)行結(jié)果:六.判斷下面程序的主函數(shù)中語句①~⑩的對錯(cuò)。(10分)#include<iostream.h>classBase{ inta1; voidseta1(intx){a1=x;}public: inta2; voidseta2(intx){a2=x;}};classDerivedB:protectedBase{protected: intb1,b2; voidsetb1(intx){b1=x;}public: voidsetb2(intx){b2=x;}};classDerivedC:protectedDerivedB{ intc1; voidsetc1(intx){c1=x;}public: intc2; voidsetc2(inty){c2=y;} voidseta2(inty){Base::seta2(y);} voidsetb2(inty){b2=y;}};intmain(){ Baseobja; DerivedBobjb; DerivedCobjc; obja.seta1(9);//① objb.setb2(4);//② objc.setc2(8);//③ obja.a2=objb.b2+objc.c2;//④ objb.setb1(18); // ⑤ objb.setb2(objc.c2);//⑥ objc.Base::seta2(48);//⑦ objc.seta2(34); //⑧ objc.DerivedB::setb2(22);//⑨ objc.setb2(22); //⑩ return0;}//////////////答案如下:對√錯(cuò)×題①②③④⑤⑥⑦⑧⑨⑩答案×√√××√×√×√五、程序設(shè)計(jì)(第一題7分,第二題24分,共計(jì)31分)1.修改下面給出的程序,但不允許對main()函數(shù)在作任何修改,使程序能夠在屏幕上輸出:(7分)鋤禾日當(dāng)午,汗滴禾下土。誰知盤中餐,粒粒皆辛苦。原來的程序?yàn)椋?include<iostream.h>voidmain(void){cout<<"汗滴禾下土。"<<endl;}答:修改后的程序如下:#include<iostream.h>classBase {public:Base() { cout<<"鋤禾日當(dāng)午,"<<endl; } ~Base() {cout<<"誰知盤中餐,"<<endl; cout<<"粒粒皆辛苦。"<<endl;}};Baseba;//不能改main就加個(gè)全局對象。voidmain(void){cout<<"汗滴禾下土。"<<endl;}2定義一個(gè)抽象類Shape,在此基礎(chǔ)上派生出類Rectangel和Circle,二者都有計(jì)算對象面積的函數(shù)GetGetArea(),計(jì)算對象周長的函數(shù)GetPerim(),在主函數(shù)中定義一個(gè)Shape指針數(shù)組分別指向Rectangel和Circle的對象,并通過Shape類的指針數(shù)組實(shí)現(xiàn)對這兩個(gè)對象的成員函數(shù)的調(diào)用,輸出圓和矩形的面積和周長。(24分)#include<iostream>usingnamespacestd;classShape{public: Shape(floatx,floaty){X=x;Y=y;} virtualfloatGetArea()=0; virtualfloatGetPerim()=0;protected: floatX,Y;};classRectangel:publicShape{public: Rectangel(floatlen,floatwid):Shape(len,wid) { } virtualfloatGetArea() {cout<<"矩形面積是"<<endl; returnX*Y; } virtualfloatGetPerim() {cout<<"矩形周長是"<<endl; return2*(X+Y); }};classCircle:publicShape{public: Circle(floatr):Shape(r,r) { }virtualfloatGetArea() {cout<<"圓的面積是"<<endl; return3.14*X*Y; } virtualfloatGetPerim() {cout<<"圓的周長是"<<endl; return3.14*2*X; }};voidshow(Shape*s){ cout<<s->GetArea()<<endl; cout<<s->GetPerim()<<endl;}intmain(){ Rectangela(1,2); Circleb(3); Shape*q[2]={&a,&b}; for(inti=0;i<2;i++) { show(q[i]); } return0;}3.定義一個(gè)字符串類String,有兩個(gè)私有數(shù)據(jù)成員:char*content和intlen;要求:1)在構(gòu)造函數(shù)中提示用戶輸入字符串;2)用戶能提取和顯示字符串;(分別由兩個(gè)函數(shù)完成)3)實(shí)現(xiàn)對字符串中所有小寫字母變成大寫,并顯示。4)在主函數(shù)中定義String類象,并對的對所有成員函數(shù)進(jìn)行測試。注意內(nèi)存的分配與釋放。(15分)#include<iostream.h>#include<string>#include<stdlib.h>classString{ char*content; intlen;public: String(); ~String(){delete[]content;} voiddisplay(); voidupper_str(); char*get_str()const{returncontent;}};String::String(){ charch[50]; cout<<"enterastring:\n"; cin>>ch; len=strlen(ch); content=newchar[len+1]; if(!content) { cout<<"Memoryallocationeror!"; exit(1); } strcpy(content,ch);}voidString::display(){ cout<<content<<"have"<<len<<"characters."<<endl;}voidString::upper_str(){ for(inti=0;i<len;i++) if(content[i]>='a'&&content[i]<='z') content[i]=content[i]-'a'+'A';}intmain(void){ Strings1; s1.display(); s1.upper_str(); s1.display(); cout<<s1.get_str()<<endl; return0;}4.請編寫程序聲明一個(gè)基類Employee,從它派生出類Technician,在主函數(shù)中將一個(gè)動態(tài)分配的Technician的對象地址賦值給一個(gè)Employee的指針,然后通過指針釋放對象空間??梢圆宦暶鲾?shù)據(jù)成員,但要聲明適當(dāng)?shù)奈鰳?gòu)函數(shù)釋放內(nèi)存。(7分)#include<iostream>usingnamespacestd;classEmployee{public: Employee() { cout<<"Employeeconstruct"<<endl; } ~Employee() { cout<<"Employeedestruct"<<endl; }};classTechnician:publicEmployee{public: Technician() { cout<<"Technicianconstruct"<<endl; } ~Technician() { cout<<"Technicaindesctruct"<<endl; }};intmain(){ Employee*p=newTechnician; deletep; return0;}游泳池過道5.一圓型游泳池如圖所示,現(xiàn)在需在其周圍建一圓型過道,并在其四周圍上柵欄。柵欄價(jià)格為20元/米,過道造價(jià)為15元/平方米。過道寬度為4米游泳池過道#include<iostream>usingnamespacestd;constfloatPI=3.14159f;constfloatFencePrice=20;constfloatConcretePrice=15;//聲明類Circle及其數(shù)據(jù)和方法classCircle{private:floatradius;public:Circle(floatr);//構(gòu)造函數(shù)floatCircumference()const;//圓周長floatArea()const;//圓面積
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 天水2025年甘肅天水市教育系統(tǒng)引進(jìn)高層次人才119人筆試歷年參考題庫附帶答案詳解
- 四川四川邛崍市2025年“蓉漂人才薈”招聘25名事業(yè)單位工作人員筆試歷年參考題庫附帶答案詳解
- 嘉峪關(guān)2025年嘉峪關(guān)市事業(yè)單位引進(jìn)50名高層次和急需緊缺人才(含教育系統(tǒng))筆試歷年參考題庫附帶答案詳解
- 吉林2025年吉林省職業(yè)病防治院招聘筆試歷年參考題庫附帶答案詳解
- 臺州2025年浙江臺州玉環(huán)市招聘專職社區(qū)工作者52人筆試歷年參考題庫附帶答案詳解
- 南通江蘇南通市政協(xié)辦公室招聘政府購買服務(wù)崗位人員筆試歷年參考題庫附帶答案詳解
- 南充四川南充儀隴縣總醫(yī)院直屬醫(yī)院考調(diào)工作人員14人筆試歷年參考題庫附帶答案詳解
- 2025年新版文言文案例題目及答案解析
- 工程項(xiàng)目招投標(biāo)文件編制指導(dǎo)手冊
- 2026年中國注冊心理咨詢師考試預(yù)測模擬題
- 精神科保護(hù)性約束注意事項(xiàng)
- 故意傷害案件課件
- GB/T 21790-2025閃點(diǎn)的測定用小型閉杯試驗(yàn)儀測定閃燃非閃燃和閃點(diǎn)的方法
- 吉林省戶用光伏施工方案
- 江西省婺源縣聯(lián)考2026屆數(shù)學(xué)七年級第一學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 2025至2030水蛭素產(chǎn)品行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評估報(bào)告
- 餐飲連鎖加盟店標(biāo)準(zhǔn)運(yùn)營手冊
- 軍人翻墻導(dǎo)致的危害課件
- 園區(qū)運(yùn)營年終匯報(bào)
- (2025年標(biāo)準(zhǔn))公司基地農(nóng)戶協(xié)議書
- 2025時(shí)事政治必考題50題(含答案)
評論
0/150
提交評論