c++期末考試復(fù)習(xí)題_第1頁(yè)
c++期末考試復(fù)習(xí)題_第2頁(yè)
c++期末考試復(fù)習(xí)題_第3頁(yè)
c++期末考試復(fù)習(xí)題_第4頁(yè)
c++期末考試復(fù)習(xí)題_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

一、填空題(每空1分,共15分,將對(duì)的答案寫在()中)1.C++中有兩種數(shù)據(jù)類型:(整型)和(字符型)可以使用signed修飾符。在C++中,用數(shù)組、指針、和(引用)作為函數(shù)參數(shù),可以將參數(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ù)是在用一種對(duì)象初始化另一種對(duì)象時(shí)被調(diào)用,系統(tǒng)缺省的拷貝構(gòu)造函數(shù)的工作措施是(拷貝每一種數(shù)據(jù)組員)?;蛑鹨豢截?.用new申請(qǐng)某一種類的動(dòng)態(tài)對(duì)象數(shù)組時(shí),在該類中必須可以匹配到(默認(rèn))構(gòu)造函數(shù),否則應(yīng)用程序會(huì)產(chǎn)生一種編譯錯(cuò)誤。6.靜態(tài)數(shù)據(jù)組員必須在類外進(jìn)行初始化,且靜態(tài)數(shù)據(jù)組員的一種拷貝被類的所有對(duì)象(共享)。7.在C++中,定義重載函數(shù)時(shí),應(yīng)至少使重載函數(shù)的參數(shù)個(gè)數(shù)或參數(shù)類型(有一種不一樣)。8.在C++中,雖然友元提供了類之間數(shù)據(jù)進(jìn)行訪問的一種方式,但它破壞了面向?qū)ο蟪绦蛟O(shè)計(jì)的(封裝)特性。9.預(yù)編譯指令由三種,它們是:文獻(xiàn)包括、(宏定義)(條件編譯)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)用它的對(duì)象。13.拷貝構(gòu)造函數(shù)使用(一種已經(jīng)存在的對(duì)象)作為參數(shù)初始化創(chuàng)立中的對(duì)象。14.在公有繼承的狀況下,基類數(shù)據(jù)組員在派生類中的訪問權(quán)限(保持不變)。15.在C++中,構(gòu)造派生類對(duì)象時(shí),總是先從(基類)的初始化開始的。16.當(dāng)需要記錄程序中某個(gè)類創(chuàng)立對(duì)象的個(gè)數(shù)時(shí),需要給該類定義(靜態(tài)數(shù)據(jù))組員。17.在多種類之間有反復(fù)繼承時(shí),為防止被反復(fù)繼承的基類數(shù)據(jù)組員在內(nèi)存中有多種拷貝,應(yīng)將該基類定義為(虛基類)。18.在C++類中,有一種不能定義對(duì)象的類,這樣的類只能被繼承,稱之為(抽象類),定義該類至少具有一種(純虛函數(shù))。19.在C++中構(gòu)造一種對(duì)象時(shí),其數(shù)據(jù)組員在構(gòu)造函數(shù)中初始化。對(duì)于內(nèi)嵌的對(duì)象、(常量)(基類)數(shù)據(jù)組員需要在構(gòu)造函數(shù)的組員初始化列表中初始化。20.在類的定義中,闡明為protected的數(shù)據(jù)組員稱為保護(hù)組員。保護(hù)數(shù)據(jù)組員具有雙重作用:對(duì)于其派生類而言,(是公有的);而對(duì)于其外部的程序而言,(是私有的)。21.控制格式輸出的操縱符中,(setprecision)是設(shè)置數(shù)據(jù)精度的,(hex)是設(shè)置十六進(jìn)制的。22.假如s是int型變量,且s=6,則下面s%2+(s+1)%2體現(xiàn)式的值為___1_。23.已知字母a的ASCII碼為十進(jìn)制數(shù)97,且設(shè)ch為字符型變量,則體現(xiàn)式ch=’a’+4’的值為__e__。24.?dāng)?shù)組與函數(shù)參數(shù)聯(lián)絡(luò)親密,當(dāng)用數(shù)組元素作函數(shù)參數(shù)時(shí),這是屬于值傳遞;當(dāng)數(shù)組名作為參數(shù)時(shí),這是屬于引用傳遞,對(duì)形參的變化可影響到實(shí)參。25.運(yùn)用“對(duì)象名.組員變量”形式訪問的對(duì)象組員僅限于被申明為public的組員;若要訪問其他組員變量,需要通過組員函數(shù)或友元函數(shù)函數(shù)。26.一種__類__和_對(duì)象__的關(guān)系,正如基本數(shù)據(jù)類型與該類型的變量一種。27.類組員的默認(rèn)訪問方式是__私有___.28.一種類有_多種_個(gè)構(gòu)造函數(shù),有___一種__析構(gòu)函數(shù)。29.類的__靜態(tài)__組員函數(shù)不能對(duì)類中的非靜態(tài)組員進(jìn)行默認(rèn)訪問。30.假如闡明類B是類A的友元類,則類B的所有組員函數(shù)都是類A的__友元函數(shù)____。31.運(yùn)用組員函數(shù)對(duì)二元運(yùn)算符重載,其左操作數(shù)為this指針右操作數(shù)為組員函數(shù)參數(shù)。32.類有兩種使用方法:一種是類的實(shí)例化,即生成類的_對(duì)象_____;另一種是通過__繼承_____派生出新的類。33.運(yùn)算函數(shù)中的關(guān)鍵字是_operator_____,它和運(yùn)算符一起構(gòu)成該運(yùn)算符函數(shù)的函數(shù)名。34.假如一種類中有一種或多種純虛函數(shù),則這個(gè)類稱為__抽象類____。35.文獻(xiàn)的打開是通過通過使用類_fstream__的組員函數(shù)___open()_____來實(shí)現(xiàn)的。36.設(shè)所有變量均為整型,則體現(xiàn)式(e=2,f=5,e++,f++,e+f)的值為_9_。37.已知c的ASCII碼為十進(jìn)制數(shù)99,設(shè)k為字符型變量,則體現(xiàn)式k=‘c’+1的值為___d_____。38.函數(shù)的形參在未被調(diào)用之前不會(huì)分派空間,函數(shù)的形參的個(gè)數(shù)和類型要和實(shí)參的相似。39.類的組員分為數(shù)據(jù)組員和_組員函數(shù)______。40.類完畢了面向?qū)ο蟪绦蛟O(shè)計(jì)的__封裝___特性。41.構(gòu)造函數(shù)是__對(duì)象____被創(chuàng)立時(shí)自動(dòng)執(zhí)行,對(duì)象消失時(shí)自動(dòng)執(zhí)行的組員函數(shù)稱為__析構(gòu)函數(shù)_____對(duì)象42.C++將類繼承分為單繼承和多繼承兩種。43.在繼承機(jī)制下,當(dāng)對(duì)象消滅時(shí),編譯系統(tǒng)先執(zhí)行派生類的析構(gòu)函數(shù),然后才執(zhí)行派生類中子對(duì)象類的析構(gòu)函數(shù),最終執(zhí)行基類的析構(gòu)函數(shù)。44.類的__public__數(shù)據(jù)組員是類所有對(duì)象共享的組員。45.友元函數(shù)__不是_類的組員函數(shù)。(是/不是)46.假如類A繼承了類B,則類A稱為___派生類____,類B稱為____基類___。47.運(yùn)算符重載后,原運(yùn)算符的優(yōu)先級(jí)和結(jié)合特性___不會(huì)__變化。(會(huì)/不會(huì))48.___純虛函數(shù)___是一種在基類中闡明的虛函數(shù),但未給出詳細(xì)的實(shí)現(xiàn),規(guī)定在其派生類實(shí)現(xiàn)。49.文獻(xiàn)的關(guān)閉是通過通過使用類__fstream__的組員函數(shù)__close()______來實(shí)現(xiàn)的。二、選擇題1.面向?qū)ο蟮模˙)是一種信息隱蔽技術(shù),目的在于將對(duì)象的使用者與設(shè)計(jì)者分開。不容許使用者直接存取對(duì)象的屬性,只能通過有限的接口與對(duì)象發(fā)生聯(lián)絡(luò)。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++的一種子集B.C程序在C++環(huán)境可以運(yùn)行C.C++程序在C環(huán)境可以運(yùn)行D.C++是面向?qū)ο蟮亩鳦是面向過程的4.運(yùn)算符+、<=、=、%中,優(yōu)先級(jí)最低的運(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.對(duì)while、do…while循環(huán)構(gòu)造,下面說法對(duì)的的是(B)。A.只是體現(xiàn)形式不一樣 B.do…while構(gòu)造中的語句至少執(zhí)行一次(先執(zhí)行后判斷)C.while構(gòu)造中的語句至少執(zhí)行一次D.條件成立時(shí),它們有也許一次也不執(zhí)行7.對(duì)中斷語句的說法下面不對(duì)的的是(B)。A.顧客可以指定中斷的位置B.顧客可以指定轉(zhuǎn)移的位置C.break語句可以跳出本循環(huán)D.continue語句可以結(jié)束本次循環(huán)8.如下對(duì)的的說法是()。A.顧客若需要調(diào)用原則函數(shù),調(diào)用前必須重新定義B.顧客可以直接調(diào)用所有原則庫(kù)函數(shù)C.顧客可以定義和原則庫(kù)函數(shù)重名的函數(shù),不過在使用時(shí)調(diào)用的是系統(tǒng)庫(kù)函數(shù)9.下列哪個(gè)不是重載函數(shù)在調(diào)用時(shí)選擇的根據(jù)()。A.參數(shù)類型B.參數(shù)個(gè)數(shù)C.函數(shù)類型D.函數(shù)名10.對(duì)數(shù)組名作函數(shù)的參數(shù),下面描述對(duì)的的是(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ù)共用一段存儲(chǔ)單元C.?dāng)?shù)組名作參數(shù)時(shí),形參定義的數(shù)組長(zhǎng)度不能省略D.?dāng)?shù)組名作參數(shù),不能變化主調(diào)函數(shù)中的數(shù)據(jù)12.在定義一種共用體變量時(shí),系統(tǒng)為其分派存儲(chǔ)空間的原則是(B)。A.按所有組員需要的存儲(chǔ)空間總和分派。B.按組員中占存儲(chǔ)空間最大者分派。C.按組員占存儲(chǔ)空間最小者分派。D.按第一種組員所需的存儲(chǔ)空間分派。13.下面(B)項(xiàng)是對(duì)構(gòu)造函數(shù)和析構(gòu)函數(shù)的對(duì)的定義。A.voidX::X(),voidX::~X()B.X::X(參數(shù)),X::~X()(析構(gòu)括號(hào)沒參數(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òu)造函數(shù)時(shí),系統(tǒng)將自動(dòng)生成一種默認(rèn)的B.

拷貝構(gòu)造函數(shù)只有一種參數(shù),并且是該類對(duì)象的引用C.拷貝構(gòu)造函數(shù)是一種組員函數(shù)D.拷貝構(gòu)造函數(shù)的名字不能用類名A.一般組員函數(shù)B.類的初始化C.對(duì)象初始化D.刪除對(duì)象16.下列對(duì)派生類的描述中,(D)是錯(cuò)誤的。A.一種派生類可以作為另一種派生類的基類B.派生類至少有一種基類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)動(dòng)態(tài)聯(lián)編的描述中,錯(cuò)誤的是(D)。A.動(dòng)態(tài)聯(lián)編是以虛函數(shù)為基礎(chǔ)B.動(dòng)態(tài)聯(lián)編是運(yùn)行時(shí)確定所調(diào)用的函數(shù)代碼的C.動(dòng)態(tài)聯(lián)編調(diào)用函數(shù)操作是指向?qū)ο蟮闹羔樆驅(qū)ο笠肈.動(dòng)態(tài)聯(lián)編是在編譯時(shí)確定操作函數(shù)的(假如已經(jīng)確定還談什么動(dòng)態(tài))20.有關(guān)純虛函數(shù)和抽象類的描述中,錯(cuò)誤的是(C)。A.純虛函數(shù)是一種特殊的虛函數(shù),它沒有詳細(xì)的實(shí)現(xiàn)B.抽象類是指具有純虛函數(shù)的類C.一種基類中闡明有純虛函數(shù),該基類派生類一定不再是抽象類(假如派生類沒有重新定義純虛函數(shù),而派生類只是繼承基類的純虛函數(shù),則這個(gè)派生類仍然還是一種抽象類)D.抽象類只能作為基類來使用,其純虛函數(shù)的實(shí)現(xiàn)由派生類給出21.C++源文獻(xiàn)的擴(kuò)展名為(A)。A.cppB.cC.txtD.exe22.在C++語言中,(A)的陳說是對(duì)的的。A.能使用關(guān)鍵字并辨別大小寫B(tài).能使用關(guān)鍵字并不辨別大小寫C.不能使用關(guān)鍵字并辨別大小寫D.不能使用關(guān)鍵字并不辨別大小寫23.運(yùn)算符+、=、*、>=中,優(yōu)先級(jí)最高的運(yùn)算符是(C)。A.+B.=C.*D.>=24.下列不合法的變量名為(A)。A.intB.int1C.name_1D.name025.已知x=43,ch=‘A’,y=0;則體現(xiàn)式(x>=y&&ch<’B’&&!y)的值是(C)。A.0B.語法錯(cuò)C.1(!y=!0=1只有!0為1,其他都為0)D.“假”26.如下不對(duì)的的是(C)。 A.語句for(i=0;;i++)表達(dá)無限循環(huán)B.for(;;)表達(dá)無限循環(huán)C.for()也表達(dá)無限循環(huán)(B才對(duì))D.while(1)表達(dá)無限循環(huán)27.在函數(shù)的返回值類型與返回值體現(xiàn)式的類型的描述中,錯(cuò)誤的是()。A.函數(shù)返回值的類型是在定義函數(shù)時(shí)確定,在函數(shù)調(diào)用時(shí)是不能變化的B.函數(shù)返回值的類型就是返回值體現(xiàn)式的類型(看ACD)D.函數(shù)返回值類型決定了返回值體現(xiàn)式的類型28.假如一種函數(shù)無返回值,定義時(shí)它的函數(shù)類型應(yīng)是(C)。A.任意B.intC.voidD.無29.在C++語言中,有關(guān)參數(shù)默認(rèn)值的描述對(duì)的的是(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ù)不能再對(duì)參數(shù)賦值30.若有如下定義,則說法錯(cuò)誤的是(D)。 inta=100,*p=&a;A.申明變量p,其中*表達(dá)p是一種指針變量B.變量p經(jīng)初始化,獲得變量a的地址C.變量p只可以指向一種整形變量D.變量p的值為100(獲得變量a的地址)31.列有關(guān)構(gòu)造體的說法錯(cuò)誤的是(D)。A.構(gòu)造體是由顧客自定義的一種數(shù)據(jù)類型B.構(gòu)造體中可設(shè)定若干個(gè)不一樣數(shù)據(jù)類型的組員C.構(gòu)造體中組員的數(shù)據(jù)類型可以是另一種已定義的構(gòu)造體D.在定義構(gòu)造體時(shí),可認(rèn)為組員設(shè)置默認(rèn)值32.下列有關(guān)類的說法不對(duì)的的是(C)。A.

對(duì)象是類的一種實(shí)例B.

任何一種對(duì)象只能屬于一種詳細(xì)的類C.

一種類只能有一種對(duì)象D.類與對(duì)象的關(guān)系和數(shù)據(jù)類型與變量的關(guān)系相似33.(C)的功能是對(duì)象進(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è)組員不能被類的對(duì)象通過組員操作符訪問,則不能把該組員的訪問權(quán)限定義為(A)。A.publicB.protectedC.privateD.static36.派生類的對(duì)象對(duì)它的(A)是可以訪問的。A.公有繼承的基類的公有組員B.公有繼承的基類的保護(hù)組員C.公有繼承的基類的私有組員D.保護(hù)繼承的基類的公有組員37.多繼承派生類構(gòu)造函數(shù)構(gòu)造對(duì)象時(shí),(B)被最先調(diào)用。A.派生類自己的構(gòu)造函數(shù)B.虛基類的構(gòu)造函數(shù)C.非虛基類的構(gòu)造函數(shù)D.派生類中子對(duì)象類的構(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ù)和對(duì)象D.虛函數(shù)和引用40.下列描述中,(D)是抽象類的特性。A.可以闡明虛函數(shù)B.可以進(jìn)行構(gòu)造函數(shù)重載C.可以定義友元函數(shù)D.不能闡明其對(duì)象三、指出并改正下列程序段中的語法錯(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,請(qǐng)完畢前置++和后置++的運(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í)行成果,將下列程序補(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先得出成果,故也許為析構(gòu)函數(shù)。//釋放了P1就自動(dòng)調(diào)用~Derived()析構(gòu)函數(shù)。就不執(zhí)行~Base(),故~Base()是虛函數(shù)。}程序的執(zhí)行成果如下:DeleteDerivedDeleteBase4.定義一種字符串類String,有兩個(gè)私有數(shù)據(jù)組員:char*content和intlen;規(guī)定1)在構(gòu)造函數(shù)中提醒顧客輸入字符串,;2)顧客能提取和顯示字符串;(分別由兩個(gè)函數(shù)完畢)3)實(shí)現(xiàn)對(duì)字符串中所有小寫字母變成大寫,并顯示。注意內(nèi)存的分派與釋放。類定義的部分代碼如下,請(qǐng)補(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,請(qǐng)完畢前置--和后置--的運(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)行成果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)行成果如下:configurationcniuain991001011022.(4分)#include<iostream.h>classNode{public: intdata;第2題程序運(yùn)行成果:輸入第2題程序運(yùn)行成果:輸入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)行成果:6,9第3題程序運(yùn)行成果: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)行成果: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)行成果:假如沒有虛函數(shù)則以第一種為基礎(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,程序會(huì)自動(dòng)自行下一種語句 default:cout<<"a是奇數(shù)"<<endl; } a=a/4; cout<<a<<endl;}假如輸入數(shù)為6,則輸出成果是什么?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)行成果怎樣?(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)行成果怎樣?(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)行成果: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)行成果: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)行成果:B::print()B::print()B::print()B::print()B::print()B::print()第6題的運(yùn)行成果:六.判斷下面程序的主函數(shù)中語句①~⑩的對(duì)錯(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;}//////////////答案如下:對(duì)√錯(cuò)×題①②③④⑤⑥⑦⑧⑨⑩答案×√√××√×√×√五、程序設(shè)計(jì)(第一題7分,第二題24分,合計(jì)31分)1.修改下面給出的程序,但不容許對(duì)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è)全局對(duì)象。voidmain(void){cout<<"汗滴禾下土。"<<endl;}2定義一種抽象類Shape,在此基礎(chǔ)上派生出類Rectangel和Circle,兩者均有計(jì)算對(duì)象面積的函數(shù)GetGetArea(),計(jì)算對(duì)象周長(zhǎng)的函數(shù)GetPerim(),在主函數(shù)中定義一種Shape指針數(shù)組分別指向Rectangel和Circle的對(duì)象,并通過Shape類的指針數(shù)組實(shí)現(xiàn)對(duì)這兩個(gè)對(duì)象的組員函數(shù)的調(diào)用,輸出圓和矩形的面積和周長(zhǎng)。(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<<"矩形周長(zhǎng)是"<<endl; return2*(X+Y); }};classCircle:publicShape{public: Circle(floatr):Shape(r,r) { }virtualfloatGetArea() {cout<<"圓的面積是"<<endl; return3.14*X*Y; } virtualfloatGetPerim() {cout<<"圓的周長(zhǎng)是"<<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.定義一種字符串類String,有兩個(gè)私有數(shù)據(jù)組員:char*content和intlen;規(guī)定:1)在構(gòu)造函數(shù)中提醒顧客輸入字符串;2)顧客能提取和顯示字符串;(分別由兩個(gè)函數(shù)完畢)3)實(shí)現(xiàn)對(duì)字符串中所有小寫字母變成大寫,并顯示。4)在主函數(shù)中定義String類象,并對(duì)的對(duì)所有組員函數(shù)進(jìn)行測(cè)試。注意內(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.請(qǐng)編寫程序申明一種基類Employee,從它派生出類Technician,在主函數(shù)中將一種動(dòng)態(tài)分派的Technician的對(duì)象地址賦值給一種Employee的指針,然后通過指針釋放對(duì)象空間。可以不申明數(shù)據(jù)組員,但要申明合適的析構(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.一圓型游泳池如圖所示,目前需在其周圍建一圓型過道,并在其四面圍上柵欄。柵欄價(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;//圓周長(zhǎng)floatArea()const;//圓面

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論