




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)或者侵權(quán),請(qǐng)聯(lián)系改正或者刪除。目錄C++面向?qū)ο蟪绦蛟O(shè)計(jì)模擬測(cè)試題 2計(jì)算機(jī)技術(shù)與軟件水平考試面向?qū)ο蟪绦蛟O(shè)計(jì)試題(1) 39計(jì)算機(jī)技術(shù)與軟件水平考試面向?qū)ο蟪绦蛟O(shè)計(jì)試題(2) 41計(jì)算機(jī)技術(shù)與軟件水平考試面向?qū)ο蟪绦蛟O(shè)計(jì)試題(3) 47計(jì)算機(jī)技術(shù)與軟件水平考試面向?qū)ο蟪绦蛟O(shè)計(jì)試題(4) 54計(jì)算機(jī)技術(shù)與軟件水平考試面向?qū)ο蟪绦蛟O(shè)計(jì)試題(5) 58計(jì)算機(jī)技術(shù)與軟件水平考試面向?qū)ο蟪绦蛟O(shè)計(jì)試題(6) 64面向?qū)ο蟪绦蛟O(shè)計(jì)試題(6)參考答案 67計(jì)算機(jī)技術(shù)與軟件水平考試面向?qū)ο蟪绦蛟O(shè)計(jì)試題(7) 69面向?qū)ο蟪绦蛟O(shè)計(jì)試題(7)參考答案 74全國(guó)計(jì)算機(jī)及應(yīng)用面向?qū)ο蟪绦蛟O(shè)計(jì)試卷 75高等教育自學(xué)考試面向?qū)ο蟪绦蛟O(shè)計(jì)試題 79《面向?qū)ο蟪绦蛟O(shè)計(jì)》期末考試(開(kāi))試題及答案 86計(jì)科開(kāi)放本科網(wǎng)絡(luò)專業(yè)面向?qū)ο蟪绦蛟O(shè)計(jì)試題 94【面向?qū)ο蟪绦蛟O(shè)計(jì)】全國(guó)試題及答案 101【面向?qū)ο蟪绦蛟O(shè)計(jì)】全國(guó)試題及答案 110【面向?qū)ο蟪绦蛟O(shè)計(jì)】試題及答案 118C++面向?qū)ο蟪绦蛟O(shè)計(jì)模擬測(cè)試題一.選擇填空1.下面關(guān)于對(duì)象概念的描述中,(A)是錯(cuò)誤的。A.對(duì)象就是C語(yǔ)言中的結(jié)構(gòu)變量;B.對(duì)象代表著正在創(chuàng)立的系統(tǒng)中的一個(gè)實(shí)體;C.對(duì)象是一個(gè)狀態(tài)和操作(或方法)的封裝體;D.對(duì)象之間的信息傳遞是經(jīng)過(guò)消息進(jìn)行的2.下面關(guān)于類概念的描述中,(D)是錯(cuò)誤的。A.類是抽象數(shù)據(jù)類型的實(shí)現(xiàn):B.類是具有共同行為的若干對(duì)象的統(tǒng)一描述體;C.類是創(chuàng)立對(duì)象的樣板:D.類就是C語(yǔ)言中的結(jié)構(gòu)類型3.在16位機(jī)中,int型字寬為(A)字節(jié)。A.2;B.4;C.6;D.84.類型修飾符unsigned修飾(D)類型是錯(cuò)誤的。A.char;B.int;C.longint;D.float5.在inta[5]={1,3,5};中,數(shù)組元素a[1]的值是(C)。A.1;B.0;C.3;D.26.在intb[][3]={{1},{3,2},{4,5,6},{0}};中b[2][2]的值是(C)。A.0;B.5;C.6;D.27.下列表示式中,(C)是非法的。已知:inta=5;floatb=5.5;A.a%3+b;B.b*b&&++a;C.(.a>b)+(int(b)%2);D.―――a+b8.下列表示式中,(D)是合法的。已知:doublem=3.2;intn=3;A.m<<2;B.(m+n)|n;C.!m*=n;D.m=5,n=3.1,m+n9.下列for循環(huán)的次數(shù)為(B)。for(inti=0,x=0;!x&&i<=5;i++)A.5;B.6;C.1;D.無(wú)限10.下列while循環(huán)的次數(shù)是(A)。while(inti=0)i――;A.0;B.1;C.5;D.無(wú)限11.下述關(guān)于break語(yǔ)句的描述中,(C)是不正確的。A.break語(yǔ)句可用于循環(huán)體內(nèi),它將退出該重循環(huán);B.break語(yǔ)句可用于開(kāi)關(guān)語(yǔ)句中,它將退出開(kāi)關(guān)語(yǔ)句;C.break語(yǔ)句可用于if體內(nèi),它將退出if語(yǔ)句;D.break語(yǔ)句在一個(gè)循環(huán)體內(nèi)能夠出現(xiàn)多次。12.下列關(guān)于開(kāi)關(guān)語(yǔ)句的描述中,(A)是正確的。A.開(kāi)關(guān)語(yǔ)句中default子句能夠沒(méi)有,也可有一個(gè);B.開(kāi)關(guān)語(yǔ)句中每個(gè)語(yǔ)句序列中必須有break語(yǔ)句;C.開(kāi)關(guān)語(yǔ)句中default子句只能放在最后;D.開(kāi)關(guān)語(yǔ)句中case子句后面的表示式能夠是整型表示式。13.在一個(gè)被調(diào)用函數(shù)中,關(guān)于return語(yǔ)句使用的描述,(D)是錯(cuò)誤的。A.被調(diào)用函數(shù)中能夠不用return語(yǔ)句;B.被調(diào)用函數(shù)中能夠使用多個(gè)return語(yǔ)句;C.被調(diào)用函數(shù)中,如果有返回值,就一定要有return語(yǔ)句;D.被調(diào)用函數(shù)中,一個(gè)return語(yǔ)句可返回多個(gè)值給調(diào)用函數(shù)。14.下列的(D)是引用調(diào)用。A.形參是指針,實(shí)參是地址值;B.形參和實(shí)參都是變量;C.形參是數(shù)組名,實(shí)參是數(shù)組名;D.形參是引用,實(shí)參是變量。15.在傳值調(diào)用中,要求(C)。A.形參和實(shí)參類型任意,個(gè)數(shù)相等;B.實(shí)參和形參類型都完全一致,個(gè)數(shù)相等;C.實(shí)參和形參對(duì)應(yīng)的類型一致,個(gè)數(shù)相等;D.實(shí)參和形參對(duì)應(yīng)的類型一致,個(gè)數(shù)任意。16.在C++中,關(guān)于下列設(shè)置參數(shù)默認(rèn)值的描述中,(C)是正確的。A.不允許設(shè)置參數(shù)的默認(rèn)值;B.設(shè)置參數(shù)默認(rèn)值只能在定義函數(shù)時(shí)設(shè)置;C.設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)該是先設(shè)置右邊的再設(shè)置左邊的;D.設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)該全部參數(shù)都設(shè)置。17.重載函數(shù)在調(diào)用時(shí)選擇的依據(jù)中,(D)是錯(cuò)誤的。A.參數(shù)個(gè)數(shù);B.參數(shù)的類型;C.函數(shù)名字;D.函數(shù)的類型18.采用函數(shù)重載的目的在于(D)。A.實(shí)現(xiàn)共享;B.減少空間;C.提高速度;D.使用方便,提高可讀性19.在下列關(guān)鍵字中,用以說(shuō)明類中公有成員的是(A)。A.public;B.private;C.protected;D.friend;20.下列的各類函數(shù)中,(C)不是類的成員函數(shù)。A.構(gòu)造函數(shù);B析構(gòu)函數(shù);C.友元函數(shù);D.拷貝初始化構(gòu)造函數(shù)21.作用域運(yùn)算符的功能是(D)。A.標(biāo)識(shí)作用域的級(jí)別的;B.指出作用域的范圍的;C.給定作用域的大小的;D.標(biāo)識(shí)某個(gè)成員是屬于哪個(gè)類的。22.(D)不是構(gòu)造函數(shù)的特征。A.構(gòu)造函數(shù)的函數(shù)名與類名相同;B.構(gòu)造函數(shù)能夠重載;C.構(gòu)造函數(shù)能夠設(shè)置缺省參數(shù);D.構(gòu)造函數(shù)必須指定類型說(shuō)明。23.(A)是析構(gòu)函數(shù)的特征。A.一個(gè)類中只能定義一個(gè)析構(gòu)函數(shù);B.析構(gòu)函數(shù)名與類名不同;C.析構(gòu)函數(shù)的定義只能在類體內(nèi);D.析構(gòu)函數(shù)能夠有一個(gè)或多個(gè)參數(shù)。24.一般的拷貝初始化構(gòu)造函數(shù)的參數(shù)是(C)。A.某個(gè)對(duì)象名;B.某個(gè)對(duì)象的成員名;C.某個(gè)對(duì)象的引用名;D.某個(gè)對(duì)象的指針名。25.關(guān)于成員函數(shù)特征的下述描述中,(A)是錯(cuò)誤的。A.成員函數(shù)一定是內(nèi)聯(lián)函數(shù);B.成員函數(shù)能夠重載;C.成員函數(shù)能夠設(shè)置參數(shù)的缺省值;D.成員函數(shù)能夠是靜態(tài)的。26.下述靜態(tài)數(shù)據(jù)成員的特征中,(A)是錯(cuò)誤的。A.說(shuō)明靜態(tài)數(shù)據(jù)成員時(shí)前邊要加修飾符static;B.靜態(tài)數(shù)據(jù)成員要在類體外進(jìn)行初始化;C.引用靜態(tài)數(shù)據(jù)成員時(shí),要在靜態(tài)數(shù)據(jù)成員名前加<類名>和作用域運(yùn)算符;D.靜態(tài)數(shù)據(jù)成員不是所有對(duì)象所共用的。27.友元的作用(A)。A.提高訪問(wèn)對(duì)象成員的效率;B.加強(qiáng)類的封裝性;C.實(shí)現(xiàn)數(shù)據(jù)的隱藏性;D.增加成員函數(shù)的種類。28.已知:類A中一個(gè)成員函數(shù)說(shuō)明如下:voidSet(A&a);其中,A&a的含意是(C)A.指向類A的指針為a;B.將a的地址值賦給變量Set;C.a是類A的對(duì)象引用,用來(lái)作函數(shù)Set()的形參;D.變量A與a按位相與作為函數(shù)Set()的參數(shù)。29.下列關(guān)于對(duì)象數(shù)組的描述中,(D)是錯(cuò)誤的。A.對(duì)象數(shù)組的下標(biāo)是從0開(kāi)始的;B.對(duì)象數(shù)組的數(shù)組名是一個(gè)常量指針;C.對(duì)象數(shù)組的每個(gè)元素是同一個(gè)類的對(duì)象;D.對(duì)象數(shù)組只能賦初值,而不能被賦值。30.已知:print()函數(shù)是一個(gè)類的常成員函數(shù),它無(wú)返回值,下列表示中,(A)是正確的。A.voidprint()const;B.constvoidprint();C.voidconstprint;D.voidprint(const);31.關(guān)于new運(yùn)算符的下列描述中,(D)是錯(cuò)誤的。A.它能夠用來(lái)動(dòng)態(tài)創(chuàng)立對(duì)象和對(duì)象數(shù)組;B.使用它創(chuàng)立的對(duì)象或?qū)ο髷?shù)組能夠使用運(yùn)算符delete刪除;C.使用它創(chuàng)立對(duì)象時(shí)要調(diào)用構(gòu)造函數(shù);D.使用它創(chuàng)立對(duì)象數(shù)組時(shí)必須指定初始值。32.關(guān)于delete運(yùn)算符的下列描述中,(C)是錯(cuò)誤的。A.它必須用于new返回的指針;B.它也適用于空指針;C.對(duì)一個(gè)指針能夠使用多次該運(yùn)算符;D.指針名前只用一對(duì)方括號(hào)符,不論所刪除數(shù)組的維數(shù)。33.下列說(shuō)明中,constchar*ptr;ptr應(yīng)該是(C)A.指向字符常量的指針;B.指向字符的常量指針;C.指向字符串常量的指針;D.指向字符串的常量指針;34.下列定義中,(B)是定義指向數(shù)組的指針p。A.int*p[5];B.int(*p)[5];C.(int*)p[5];D.int*p[];35.下列對(duì)派生類的描述中,(D)是錯(cuò)誤的。A.一個(gè)派生類能夠作另一個(gè)派生類的基類;B.派生類至少有一個(gè)基類;C.派生類的成員除了它自己的成員外,還包含了它的基類的成員;D.派生類中繼承的基類成員的訪問(wèn)權(quán)限到派生類保持不變。36.派生類的對(duì)象對(duì)它的基類成員中(A)是能夠訪問(wèn)的。A.公有繼承的公有成員;B.公有繼承的私有成員;C.公有繼承的保護(hù)成員;D.私有繼承的公有成員;37.派生類的構(gòu)造函數(shù)的成員初始化列中,不能包含(C)。A.基類的構(gòu)造函數(shù);B.派生類中子對(duì)象的初始化;C.基類的子對(duì)象初始化;D.派生類中一般數(shù)據(jù)成員的初始化。38.關(guān)于多繼承二義性的描述中,(C)是錯(cuò)誤的。A.一個(gè)派生類的兩個(gè)基類中都有某個(gè)同名成員,在派生類中對(duì)這個(gè)成員的訪問(wèn)可能出現(xiàn)二義性;B.解決二義性的最常見(jiàn)的方法是對(duì)成員名的限定法;C.基類和派生中同時(shí)出現(xiàn)的同名函數(shù),也存在二義性問(wèn)題;D.一個(gè)派生類是從兩個(gè)基類派生來(lái)的,而這兩個(gè)基類又有一個(gè)共同的基類,對(duì)該基類成員進(jìn)行訪問(wèn)時(shí),也可能出現(xiàn)二義性。39.設(shè)置虛基類的目的是(B)。A.簡(jiǎn)化程序;B.消除二義性;C.提高運(yùn)行效率;D.減少目標(biāo)代碼。40.帶有虛基類的多層派生類構(gòu)造函數(shù)的成員初始化列表中都要列出虛基類的構(gòu)造函數(shù),這樣將對(duì)虛基類的子對(duì)象初始化(D)。A.與虛基類下面的派生類個(gè)數(shù)有關(guān);B.多次;C.二次;D.一次。41.對(duì)定義重載函數(shù)的下列要求中,(D)是錯(cuò)誤的。A.要求參數(shù)的個(gè)數(shù)不同;B.要求參數(shù)中至少有一個(gè)類型不同;C.要求參數(shù)個(gè)數(shù)相同時(shí),參數(shù)類型不同;D.要求函數(shù)的返回值不同。42.下列函數(shù)中,(C)不能重載。A.成員函數(shù);B.非成員函數(shù);C.析構(gòu)函數(shù);D.構(gòu)造函數(shù)。43.下列對(duì)重載函數(shù)的描述中,(A)是錯(cuò)誤的。A.重載函數(shù)中不允許使用缺省參數(shù);B.重載函數(shù)中編譯器根據(jù)參數(shù)表進(jìn)行選擇;C.不要使用重載函數(shù)來(lái)描述毫無(wú)相干的函數(shù);D.構(gòu)造函數(shù)重載將會(huì)給初始化帶來(lái)多種方式。44.關(guān)于虛函數(shù)的描述中,(C)是正確的。A.虛函數(shù)是一個(gè)static類型的成員函數(shù);B.虛函數(shù)是一個(gè)非成員函數(shù);C.基類中說(shuō)明了虛函數(shù)后,派生類中將其對(duì)應(yīng)的函數(shù)可不必說(shuō)明為虛函數(shù);D.派生類的虛函數(shù)與基類的虛函數(shù)具有不同的參數(shù)個(gè)數(shù)和類型。45.關(guān)于純虛函數(shù)和抽象類的描述中,(C)是錯(cuò)誤的。A.純虛函數(shù)是一種特殊的虛函數(shù),它沒(méi)有具體的實(shí)現(xiàn);B.抽象類是指具有純虛函數(shù)的類;C.一個(gè)基類說(shuō)明有純虛函數(shù),該基類的派生類一定不再是抽象類;D.抽象類只能作為基類來(lái)使用,其純虛函數(shù)的實(shí)現(xiàn)由派生類給出。46.下列描述中,(D)是抽象類的特征。A.能夠說(shuō)明虛函數(shù);B.能夠進(jìn)行構(gòu)造函數(shù)重載;C.能夠定義友元函數(shù);D.不能說(shuō)明其對(duì)象。47.面向?qū)ο蟪绦蛟O(shè)計(jì)中的數(shù)據(jù)隱藏指的是(D)A.輸入數(shù)據(jù)必須輸入保密口令B.數(shù)據(jù)經(jīng)過(guò)加密處理C.對(duì)象內(nèi)部數(shù)據(jù)結(jié)構(gòu)上建有防火墻D.對(duì)象內(nèi)部數(shù)據(jù)結(jié)構(gòu)的不可訪問(wèn)性[解析]輸入數(shù)據(jù)必須輸入保密口令和數(shù)據(jù)經(jīng)過(guò)加密處理都不是面向?qū)ο蟪绦蛟O(shè)計(jì)的特征;對(duì)象內(nèi)部數(shù)據(jù)結(jié)構(gòu)上也不可能建有防火墻,因此它們都不是面向?qū)ο蟪绦蛟O(shè)計(jì)中所指的數(shù)據(jù)隱藏。面向?qū)ο蟪绦蛟O(shè)計(jì)系統(tǒng)中的封裝單位是對(duì)象,對(duì)象之間只能經(jīng)過(guò)接口進(jìn)行信息交流,外部不能對(duì)對(duì)象中的數(shù)據(jù)隨意地進(jìn)行訪問(wèn),這就造成了對(duì)象內(nèi)部數(shù)據(jù)結(jié)構(gòu)的不可訪問(wèn)性,也使得數(shù)據(jù)被隱藏在對(duì)象中。這就是面向?qū)ο蟪绦蛟O(shè)計(jì)中的數(shù)據(jù)隱藏所指。48.下列各項(xiàng)中不符合函數(shù)重載必須滿足的條件的是(C)A.有不同的參數(shù)個(gè)數(shù)B.對(duì)應(yīng)的參數(shù)類型不相同C.A和B必須同時(shí)滿足D.A和B只要滿足一個(gè)即可[解析]我們知道,在同一個(gè)作用域中,要實(shí)現(xiàn)函數(shù)重載必須滿足的條件的是:①有不同的參數(shù)個(gè)數(shù);或者②對(duì)應(yīng)的參數(shù)有不相同的數(shù)據(jù)類型,即①和②中只要有一個(gè)滿足就能夠了。當(dāng)然兩者都滿足更好,但這不是必須的。49.下列帶缺省值參數(shù)的函數(shù)說(shuō)明中,正確的說(shuō)明是(A)A.intFun(intx,inty=2,intz=3);B.intFun(intx=1,inty,intz=3);C.intFun(intx,inty=2,intz);D.intFun(intx=1,inty,intz=3);[解析]在帶缺省值參數(shù)的函數(shù)說(shuō)明中,正確的說(shuō)明應(yīng)該是無(wú)缺省值的參數(shù)依次排列在參數(shù)表的左邊,排完無(wú)缺省值的參數(shù)后,再依次排列帶缺省值的參數(shù)。從所給出的四個(gè)選項(xiàng)來(lái)看,只有"intFun(intx,inty=2,intz=3)"符合這條規(guī)定,其它的都不符合。50.有如下的對(duì)類"CSample"的說(shuō)明,其中(A)是錯(cuò)誤的。classCSample{A.inta=23;B.CSample();public:C.CSample(intval);D.~CSample();}[解析]在下面對(duì)類"CSample"說(shuō)明中,"CSample()"和"CSample(intval)"是該類重載的構(gòu)造函數(shù)."~CSample()"是該類的析構(gòu)函數(shù),這三個(gè)語(yǔ)句都是正確的。錯(cuò)誤的語(yǔ)句是"inta=23",因?yàn)樗`反了在類的聲明(不論是引用性聲明,還是定義性聲明)中都不能以賦值表示式的形式給它的數(shù)據(jù)成員進(jìn)行初始化。51.已知類A中的一個(gè)成員函數(shù)的說(shuō)明如下:voidSet(A&a);則該函數(shù)的參數(shù)"A&a"的含義是(C)A.指向A的指針為aB.將變量a的地址賦給類AC.類A對(duì)象引用a用作函數(shù)的形參D.變量A與a按位與后作函數(shù)參數(shù)[解析]因?yàn)锳是一個(gè)類,因此"A&a"表示a是類A的對(duì)象,但因?yàn)閷?duì)象a的前綴了符號(hào)"&",則"&a"表示是類A的對(duì)象引用。因此"A&a"的含義是類A對(duì)象引用a用作函數(shù)的形參。52.若類A和類B的定義如下:classA{public:inti,j;voidget();};classB:A{inti,j;protected:intk;public:voidmake();};voidB::make(){k=i*j;}則上述語(yǔ)句中(D)是非法的表示。A.voidget();B.intk;C.voidmake();D.k=i*j;[解析]對(duì)于給定的四項(xiàng)中,前三項(xiàng)都是正確的,只有第四項(xiàng)是錯(cuò)誤的。因?yàn)?類B是類A的私有派生類(缺省訪問(wèn)類型),因此A中的公類型的數(shù)據(jù)成員在類B中成為了私有數(shù)據(jù)成員,但函數(shù)"voidB::make()"既然是類B的成員函數(shù),則既可訪問(wèn)類A中的公有數(shù)據(jù)成員,也能訪問(wèn)類B中的私有數(shù)據(jù)成員,則表示式"k=i*j;"造成了訪問(wèn)的二義性,即其中的i和j,到底是取自類A呢?還是取自類B呢?53.下面的主函數(shù)體中,(A)是錯(cuò)誤的。classA{inti;public:virtualvoidfun()=0;A(inta){i=a;}};classB:publicA{intj;public:voidfun(){cout<<"B::fun()\n";}B(intb,intc):A(b){j=c;}};voidmain()A.{Aa(5);}B.{A*pa;}C.{Bb(7);}D.{B*pb;}[解析]在類A中,函數(shù)"virtualvoidfun()=0"為純虛函數(shù),因此,類A為抽象類。作為抽象類,它是不能被用來(lái)定義具體對(duì)象的,而語(yǔ)句"Aa(5);"恰恰是定義抽象類的對(duì)象的,因此它是錯(cuò)誤的54.拷貝構(gòu)造函數(shù)的作用是(C)A.進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換B.用對(duì)象調(diào)用成員函數(shù)C.用對(duì)象初始化對(duì)象D.用一般類型的數(shù)據(jù)初始化對(duì)象[解析]進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換和用一般類型的數(shù)據(jù)初始化對(duì)象都是一般構(gòu)造函數(shù)的功能。用對(duì)象調(diào)用成員函數(shù)不用構(gòu)造函數(shù),只要用"對(duì)象名.成員函數(shù)名"即可。因此拷貝(復(fù)制)構(gòu)造函數(shù)的作用,只能是用對(duì)象來(lái)初始化對(duì)象。55.下列說(shuō)法中,正確的說(shuō)法是(B)A.所有的運(yùn)算符都能被重載B.運(yùn)算符被重載時(shí),它們的優(yōu)先級(jí)與結(jié)合性不會(huì)改變C.當(dāng)需要時(shí),我們能夠自定義一個(gè)運(yùn)算符來(lái)進(jìn)行重載D.每個(gè)運(yùn)算符都能夠被重載成成員函數(shù)和友元函數(shù)[解析]當(dāng)重載運(yùn)算符時(shí),不是所有的運(yùn)算符都能被重載,有幾個(gè)運(yùn)算符是不能被重載的,如三目運(yùn)算符'?:','.','*','::'.'#'等;也不是每個(gè)運(yùn)算符都能夠被重載成成員函數(shù)和友元函數(shù),如運(yùn)算符'=','()','[]'和'->'都只能被重載成成員函數(shù);無(wú)論何時(shí),都不能自定義運(yùn)算符來(lái)進(jìn)行重載,也即重載只能對(duì)已有運(yùn)算符進(jìn)行;可是運(yùn)算符被重載時(shí),它們的優(yōu)先級(jí)與結(jié)合性不會(huì)改變。56.下面對(duì)結(jié)構(gòu)或類中成員的訪問(wèn)中,不正確的訪問(wèn)是(A)A.*pointer.salary;(其中pointer為指向類對(duì)象的指針)B.pointer->salary;C.x=worker.salary;(其中worker為具有類類型的對(duì)象)D.Location&rA=A1;intx=rA.GetX();(Location為已定義的類,A為對(duì)象)[解析]因pointer為指向類對(duì)象的指針,因此"pointer->salary"是正確的訪問(wèn)數(shù)據(jù)成員的形式;因worker為具有類類型的對(duì)象,因此"worker.salary"也是正確的訪問(wèn)數(shù)據(jù)成員的形式;因Location為已定義的類,A1為對(duì)象,因此"Location&rA=A1;intx=rA.GetX();"表示以對(duì)象A1初始化對(duì)象引用rA,然后由對(duì)象引用rA調(diào)用成員函數(shù)GetX()給變量x賦值,這樣的訪問(wèn)成員函數(shù)的形式也是正確的;"*pointer.salary;"中,因?yàn)檫\(yùn)算符'.'的優(yōu)先級(jí)高于運(yùn)算符'*'的優(yōu)先級(jí),因此相當(dāng)于"*(pointer.salary);",那正確的形式應(yīng)該是"*(pointer->salary);"。故"*pointer.salary"是不正確的訪問(wèn)。57.以下不屬于存取權(quán)限的是(B)。A.publicB.staticC.protectedD.private58.以下敘述中正確的是(D)A.在C++中數(shù)據(jù)封裝是經(jīng)過(guò)各種類型來(lái)實(shí)現(xiàn)的B.在C++中,數(shù)據(jù)封裝能夠由struct關(guān)鍵字提供C.數(shù)據(jù)封裝就是使用結(jié)構(gòu)類型將數(shù)據(jù)代碼連接在一起D.數(shù)據(jù)封裝以后,依然能夠不經(jīng)過(guò)使用函數(shù)就能直接存取數(shù)據(jù)。59.以下敘述中不正確的是:(D)A.對(duì)象之間能夠相互賦值B.對(duì)象能夠用作數(shù)組的元素C.對(duì)象能夠用作函數(shù)參數(shù)D.一個(gè)對(duì)象不能用作另一個(gè)對(duì)象的成員59..以下敘述中正確的是:(B)A.在定義構(gòu)造函數(shù)時(shí)能夠指定返回類型B.在定義析構(gòu)函數(shù)時(shí)不能指定參數(shù)C.一個(gè)類只能有一個(gè)構(gòu)造函數(shù)D.在一個(gè)類能夠有多個(gè)析構(gòu)函數(shù)60.假定類A已經(jīng)定義,對(duì)于以A為基類的單一繼承類B,以下定義中正確的是:(A)A.classB:publicA{//...};B.classA:publicB{//...};C.classB:publicclassA{//...};D.classA:classBpublic{//...};61.下面敘述不正確的是:(D)A.派生類一般都用公有派生;B.對(duì)基類成員的訪問(wèn)必須是無(wú)二義性的;C.賦值兼容原則也適用于多重繼承的組合;D.基類的公有成員在派生類中依然是公有的。62.C++類體系中,不能被派生類繼承的有(A)。A.轉(zhuǎn)換函數(shù).構(gòu)造函數(shù)B.構(gòu)造函數(shù).賦值操作函數(shù)C.虛函數(shù).靜態(tài)成員函數(shù)D.靜態(tài)成員函數(shù).轉(zhuǎn)換函數(shù)63.以下基類中的成員函數(shù)(C)表示純虛函數(shù)A.virtualvoidvf(int);B.voidvf(int)=0;C.virtualvoidvf()=0;D.virtualvoidvf(int){}64.經(jīng)過(guò)一個(gè)對(duì)象調(diào)用虛函數(shù)時(shí),C++系統(tǒng)對(duì)該調(diào)用采用(A)。A.動(dòng)態(tài)聯(lián)編B.靜態(tài)聯(lián)編C.不確定是哪種聯(lián)編D.函數(shù)重載65.以下敘述不正確的是(C)A.轉(zhuǎn)換函數(shù)不能帶有參數(shù)B.轉(zhuǎn)換函數(shù)不能指定返回類型C.轉(zhuǎn)換函數(shù)不能說(shuō)明為虛函數(shù)D.一個(gè)類能夠有多個(gè)轉(zhuǎn)換函數(shù)66.有如下一個(gè)函數(shù)模板:template<classT>Tmax(Tx,Ty){return(x>y)?(x):(y);}當(dāng)對(duì)T傳給char*類型時(shí),則可能產(chǎn)生錯(cuò)誤結(jié)果,因此應(yīng)該為這個(gè)函數(shù)模板提供一個(gè)(C)A.模板實(shí)例B.特定模板函數(shù)C.重載函數(shù)模板D.替換模板67.下面的針對(duì)在C++中說(shuō)明類的各種建議中,(C)是不正確的。A.盡量使類接口既完整又最緊湊B.盡量少用constC.避免對(duì)指針和數(shù)值類型重載D.明確禁用無(wú)端隱含生成的成員函數(shù)68.一個(gè)C++程序至少應(yīng)包含(B)個(gè)函數(shù)。A.0B.1C69.在微型機(jī)上,一個(gè)unsignedint型變量在內(nèi)存中占(B)個(gè)字節(jié)的存儲(chǔ)空間。A.1B.2C.370.下面語(yǔ)句中(C)是非法的。A.inta=3,b=3;B.inta,b=3;C.inta=b=3;D.inta=3,b71.下述語(yǔ)句intx,i=3;x=(i++)+(i++)+(i++);執(zhí)行后,x的結(jié)果為(A)。A.9B.15C72.設(shè)a=12,n=5,則表示式a%=(n%=2)運(yùn)算后,a的值為(A).A.0B.173.設(shè)a=3,b=2,c=l,則表示式a=b>c的值為(A).A.0B.174.C++編譯器一般不提供對(duì)(C.)的檢查。A.函數(shù)原型B.變量類型C.數(shù)組邊界D.指針類型75.只有(D)變量才能說(shuō)明為extern變量。A.全局變量B.靜態(tài)變量C.寄存器變量D.自動(dòng)變量76.設(shè)有兩個(gè)int型的指針p1和p2,則p1和p2(B)。A.能夠相加,但不能夠相減B.能夠相減,但不能夠相加C.既不能相加,也不能相減D.能夠相加,也能夠相減78.假設(shè)已定義了一個(gè)字符型指針char*p;欲使指針指向常量串"Ilovechina!",可用語(yǔ)句(B)來(lái)完成。A.*p="IloveChina!";B.p="IloveChina!";C.*p->'IloveChina!";D.p->"IloveChina!"79.下面關(guān)鍵字中(D)不能夠剛來(lái)定義類。A.classB.structC.unionD.enum80.一個(gè)類的構(gòu)造函數(shù)(D).A.能夠有不同的返回類犁B.只能返回整型C.只能返回void型D.沒(méi)有任何返同類刑81.若類X是類Y的友元類,則下列訪問(wèn)關(guān)系中(B)是正確的A.類X的成員不能訪問(wèn)類Y的私有成員B.類X的成員能夠訪問(wèn)類Y的私有成員C.類Y的成員能夠訪問(wèn)類X的私有成員D.僅類Y的公共成員可訪問(wèn)類X的私有成員82.在c++中,一個(gè)虛函數(shù)是經(jīng)過(guò)關(guān)鍵字(A)放在其基類說(shuō)明的前面來(lái)加以說(shuō)明的A.virtualB.protectedC.operatorD.this83.在派生關(guān)系中,(A)。A.構(gòu)造函數(shù)和釋放函數(shù)是不能繼承的B.構(gòu)造函數(shù)能夠繼承,但釋放函數(shù)不能夠繼承C.構(gòu)造函數(shù)不能夠繼承,但釋放函數(shù)能夠繼承D.構(gòu)造函數(shù)和釋放函數(shù)都能繼承84.下列標(biāo)識(shí)符中(A)是正確的。A.suml23B.suml23$C.*pt_123D.Sum-Count85.下面語(yǔ)句中(C)是非法的。A.charx='C';B.charx='#';C.charx="*";D.charx='$';86.設(shè)x=1.2,y=2.0,則語(yǔ)句z=(int)x+y:執(zhí)行后,x的結(jié)果為(D)A.3.2B.187.設(shè)n=l,b=2,則表示式a&b的值為(A)。A.0B.188.全局變量的作用域限于(B)。A整個(gè)程序B.從定義變量的位置開(kāi)始到本源文件結(jié)束C.本源文件D.從定義變量的位置開(kāi)始到本程序結(jié)束89.在C++語(yǔ)言中,數(shù)組能夠作為函數(shù)的參數(shù),但若用數(shù)組名作函數(shù)的實(shí)參,則將(C)傳遞到被調(diào)函數(shù)中去?!整個(gè)數(shù)組B.數(shù)組的第一個(gè)元素C.數(shù)組地址D.整個(gè)數(shù)組的拷貝90.發(fā)生函數(shù)調(diào)用時(shí),主調(diào)函數(shù)將實(shí)參傳遞給被調(diào)函數(shù),在被調(diào)函數(shù)執(zhí)行過(guò)程中,實(shí)參的值(C)。A.是能夠改變的B.是不可改變的C.能夠經(jīng)過(guò)指針間接改變D.是數(shù)組時(shí)能夠改變91.語(yǔ)句int*p[n]和int(*p)[n]的含義分別是(B)。Aint*p[n]定義了一個(gè)數(shù)組指針,int(*p)[n]定義了一個(gè)指針數(shù)組B.int*p[n]定義了一個(gè)指針數(shù)紐,int(*p)[n]定義了一個(gè)數(shù)組指針Lint*p[n]定義了一個(gè)數(shù)組指針,int(*p)[n]定義了一個(gè)數(shù)組指針D.int*p[n]定義了—個(gè)指針數(shù)組,int(*p)[n]定義了一個(gè)指針數(shù)組92.若有如下枚舉類型enumweekday{mon,tue,wed,thu=100,Fri,sat};則wed的取值為(A)。A.2B.3C.9993.只有(D)變量才能說(shuō)明為register變量。A全局變量B.靜態(tài)變量C.外部變量D.自動(dòng)變量94.欲使一整型指針p指向一整型變量x,下面哪種方式最好?(C)A.intx,*p;*p=x;B.intx,*p;*p=&x;C.intx;int*p=&x;D.intx,*p;p=x;95.在C++中,一個(gè)變量一旦用const修飾,便無(wú)法對(duì)其進(jìn)行重寫,其生存期一直持續(xù)到(D)。A.所在源文件的末尾B.程序結(jié)束C.編譯結(jié)束D.其作用域結(jié)束96.在C++中,當(dāng)為一個(gè)變量定義引用時(shí),引用類型(A)。A.必須與變量類型一致B.不一定與變量類型一致C.也即變量的指針D.也即變量的地址97.在用C++定義類時(shí),下面哪個(gè)關(guān)鍵字可用以對(duì)類成員進(jìn)行修飾?(C)A.externB.autoC.staticD.register98.在C++的類中以成員函數(shù)方式重載雙目運(yùn)算符時(shí),只能指定(A)。A.一個(gè)參數(shù)B.兩個(gè)參數(shù)C.二個(gè)參數(shù)D.不能指定參數(shù)99.在C++中,對(duì)于基類的protected成員,當(dāng)以protected方式派生一個(gè)新類時(shí)。該成員將成為派生類的(B)成員。A.privateB.protectedC.publicD.非法100.C++的基類指針能夠訪問(wèn)派生類對(duì)象,但不能訪問(wèn)派生類對(duì)象的(D)成員。A.privateB.protectedC.publicD.新增101.在C++中,當(dāng)一個(gè)對(duì)象被創(chuàng)立后,它的每一個(gè)成員函數(shù)都含有一個(gè)系統(tǒng)自動(dòng)生成的隱含的指針,稱之為(D)指針。A.對(duì)象B.派生C基類D.this102.凡是能用以派生新類,卻不能創(chuàng)立自己的對(duì)象的類稱為(B)。A.虛基類B.抽象類C容器類D.派生類103.以下不正確的敘述是(D)。A在C++程序中,逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低。B.在C++程序中,APH和aph是兩個(gè)不同的變量。C.若a和b類型相同,在計(jì)算了賦值表示式a=b后b中的值將放人a中,而b中的值不變D.當(dāng)從鍵盤輸入數(shù)據(jù)時(shí),對(duì)于整型變量只能輸入整型數(shù)值,對(duì)于實(shí)型變量只能輸入實(shí)型數(shù)值104.以下符合C++語(yǔ)法的賦值表示式是(B)。A.d=9+e+f=d+9B.d=9+e,f=d+9C.d=9+e,e++,d+9D.d=9+e++=d+7105.設(shè)變量a是整型,f是實(shí)型,i是雙精度型,則表示式10+'a'+i*f值的數(shù)據(jù)類型是(C.)。A.intB.floatC.doubleD.不確定106.已知ch是字符型變量,下面不正確的賦值語(yǔ)句是(A)。A.ch='a+b';B.ch='\0';C.ch='7'+'9';D.ch=5+9;107.下面關(guān)鍵字中(D)不能夠用來(lái)定義類?A.classB.structC.unionD.enum108.以下描述中正確的是(D)。A.for循環(huán)只能用于循環(huán)次數(shù)已經(jīng)確定的情況B.for循環(huán)是先執(zhí)行循環(huán)體語(yǔ)句,后判斷表示式C.在for循環(huán)中,不能用break語(yǔ)句跳出循環(huán)體D.for循環(huán)的循環(huán)體語(yǔ)句中,能夠包含多條語(yǔ)句,但必須用花括號(hào)括起來(lái)二.判斷下列描述的正確性,對(duì)者劃√,錯(cuò)者劃×。1.C++引進(jìn)了引用的概念,對(duì)編程帶來(lái)了很多方便。(√)2.C++允許使用友元,可是友元會(huì)破壞封裝性。(√)3.轉(zhuǎn)義序列表示法只能表示字符不能表示數(shù)字。(×)4.引用是用來(lái)給某個(gè)變量以別名的變量。對(duì)引用的操作,實(shí)質(zhì)上就是對(duì)被引用的變量的操作。(√)5.在C++中,傳址調(diào)用將被引用調(diào)用所替代。(√)6.所有的函數(shù)在定義它的程序中都是可見(jiàn)的。(×)7.使用關(guān)鍵字class定義的類中缺省的訪問(wèn)權(quán)限是私有(private)的。(√)8.作用域運(yùn)算符(∷)只能用來(lái)限定成員函數(shù)所屬的類。(×)9.構(gòu)造函數(shù)和析構(gòu)函數(shù)都不能重載。(×)10.所謂私有成員是指只有類中所提供的成員函數(shù)才能直接使用它們,任何類以外的函數(shù)對(duì)它們的訪問(wèn)都是非法的。(×)11.某類中的友元類的所有成員函數(shù)能夠存取或修改該類中的私有成員。(√)12.如果一個(gè)成員函數(shù)只存取一個(gè)類的靜態(tài)數(shù)據(jù)成員,則可將該成員函數(shù)說(shuō)明為靜態(tài)成員函數(shù)。(√)13.指向?qū)ο蟮闹羔樑c對(duì)象都能夠作函數(shù)參數(shù),可是使用前者比后者好些。(√)14.對(duì)象引用作函數(shù)參數(shù)比用對(duì)象指針更方便些。(√)15.對(duì)象數(shù)組的元素能夠是不同類的對(duì)象。(×)16.constchar*p說(shuō)明了p是指向字符串的常量指針。(×)17.C++語(yǔ)言中,既允許單繼承,又允許多繼承。(√)18.派生類的繼承方式有兩種,公有繼承和私有繼承。(×)19.在公有繼承中,基類中只有公有成員對(duì)派生對(duì)象是可見(jiàn)的。(×)20.在私有繼承中,基類中只有公有成員對(duì)派生類是可見(jiàn)的。(√)21.構(gòu)造函數(shù)能夠被繼承。(×)22.析構(gòu)函數(shù)不能被繼承。(√)23.多繼承情況下,派生類的構(gòu)造函數(shù)的執(zhí)行順序取決于定義派生時(shí)所指定的各基類的順序。(√)24.解決多繼承情況下出現(xiàn)的二義性的方法之一是使用成員名限定法。(√)25.函數(shù)的參數(shù)個(gè)數(shù)和類型都相同,只是返回值不同,這不是重載函數(shù)。(√)26.多數(shù)運(yùn)算符能夠重載,個(gè)別運(yùn)算符不能重載,運(yùn)算符重載是經(jīng)過(guò)函數(shù)定義實(shí)現(xiàn)的。(√)27.對(duì)每個(gè)可重載的運(yùn)算符來(lái)講,它既能夠重載為友元函數(shù),又能夠重載為成員函數(shù),還能夠重載為非成員函數(shù)。(×)28.對(duì)單目運(yùn)算符重載為友元函數(shù)時(shí),說(shuō)明一個(gè)形參;重載為成員函數(shù)時(shí),不能顯式說(shuō)明形參。(√)29.重載運(yùn)算符保持原運(yùn)算符的優(yōu)先級(jí)和結(jié)合性不變。(√)30.虛函數(shù)是用virtual關(guān)鍵字說(shuō)明的成員函數(shù)。(√)31.構(gòu)造函數(shù)說(shuō)明為純虛函數(shù)是沒(méi)有意義的。(√)32.抽象類是指一些沒(méi)有說(shuō)明對(duì)象的類。(×)33.動(dòng)態(tài)聯(lián)編是在運(yùn)行時(shí)選定調(diào)用的成員函數(shù)的。(√)34.使用提取符(<<)能夠輸出各種類型的變量的值,也能夠輸出指針值.(×)35.靜態(tài)變量在整個(gè)程序的運(yùn)行過(guò)程中始終都是存在著的。(√)36.一個(gè)變量的指針就是該變量地址所指向的存儲(chǔ)單元。(√)37.在C++中,能夠定義一個(gè)指向函數(shù)的指針。(√)38.C++語(yǔ)言不允許把一個(gè)結(jié)構(gòu)作為一個(gè)整體進(jìn)行輸入輸出。(√)39.在C++中定義數(shù)組時(shí),任何時(shí)候都不能夠省略下標(biāo)。(×)40.對(duì)于inta[1],能夠用a++來(lái)指向數(shù)組的第二個(gè)元素。(×)41.C++對(duì)常量也能夠建立引用。(√)42.在定義一個(gè)類時(shí),不能在類說(shuō)明中對(duì)數(shù)據(jù)成員使用表示式進(jìn)行初始化。(√)43.如果在類聲明中沒(méi)有定義拷貝構(gòu)造函數(shù),就不能用一個(gè)對(duì)象去初始化另一個(gè)對(duì)象。(×)44.一個(gè)指向基類的指針能夠訪問(wèn)從基類派生出來(lái)的任何對(duì)象。(√)45.C++語(yǔ)言函數(shù)不能進(jìn)行嵌套定義。(√)46.語(yǔ)句int*p():定義了一個(gè)指向函數(shù)的指針。(√)47.在C++語(yǔ)言中,數(shù)據(jù)類型的轉(zhuǎn)換必須是顯式的。(×)48.發(fā)生傳值調(diào)用時(shí),形參和實(shí)參各占一個(gè)獨(dú)立的存儲(chǔ)空間。(√)49.C++語(yǔ)言不能定義字符串變量。(√)50.在C++中,當(dāng)存在一個(gè)與模板函數(shù)同名的普通函數(shù)時(shí),調(diào)用的順序是模板函數(shù)優(yōu)先。(×)51.C++的虛函數(shù)必須是類的一個(gè)成員,而不允許是類的友元。(√)三.寫出下列程序的輸出結(jié)果1.引用參數(shù)#include<iostream.h>voidswap(int&,int&);voidmain(){inta=5,b=8;cout<<"a="<<a<<","<<"b="<<b<<endl;swap(a,b);cout<<"a="<<a<<","<<"b="<<b<<endl;}voidswap(int&x,int&y){inttemp=x;x=y;y=temp;}執(zhí)行該程序后,輸出結(jié)果如下:a=5,b=8a=8,b=51.返回引用#include<iostream.h>int&f1(intn,ints[]){int&m=s[n];returnm;}voidmain(){ints[]={5,4,3,2,1,0};f1(3,s)=10;cout<<f1(3,s)<<endl;}執(zhí)行該程序后,輸出結(jié)果如下:102.構(gòu)造.析構(gòu)函數(shù)調(diào)用#include<iostream.h>classA{private:inta,b;public:A();A(inti,intj);voidprint();};A::A(){a=b=0;cout<<"Defaultconstructoriscalled.\n";}A::A(inti,intj){a=i;b=j;cout<<"Constructoriscalled.\n";}voidA::print(){cout<<"a="<<a<<","<<"b="<<b<<endl;}voidmain(){Am,n(4,8);m.print();n.print();}執(zhí)行該程序后,輸出結(jié)果如下:Defaultconstructoriscalled.Constructoriscalled.a=0,b=0a=4,b=82.構(gòu)造.析構(gòu)函數(shù)調(diào)用#include<iostream.h>classTDate{private:intyear,month,day;public:TDate(inty,intm,intd);~TDate();voidprint();};TDate::TDate(inty,intm,intd){year=y;month=m;day=d;cout<<"Constructoriscalled."<<endl;}TDate::~TDate(){cout<<"Destructoriscalled.\n";}voidTDate::print(){cout<<year<<"."<<month<<"."<<day<<endl;}voidmain(){TDatetoday(,1,10),tomorrow(,1,111);cout<<"Todayis";today.print();cout<<"Tomorrowis";tomorrow.print();}執(zhí)行該程序后,輸出結(jié)果如下:Constructoriscalled.Constructoriscalled.Todayis.1.10Tomorrowis.1.11Destructoriscalled.3.對(duì)象指針作參數(shù)#include<iostream.h>classM{private:intx,y;public:M(){x=y=0;}M(inti,intj){x=i;y=j;}voidcopy(M*m);voidsetxy(inti,intj){x=i;y=j;}voidprint(){cout<<x<<","<<y<<endl;}};voidM::copy(M*m){x=m->x;y=m->y;}voidfun(Mm1,M*m2);voidmain(){Mp(5,7),q;q.copy(&p);fun(p,&q);p.print();q.print();}voidfun(Mm1,M*m2){m1.setxy(12,15);m2->setxy(22,25);}執(zhí)行該程序后,輸出結(jié)果如后:5,722,253.對(duì)象引用作參數(shù)#include<iostream.h>classA{private:intm;public:A(inti=0){m=i;cout<<"Constructoriscalled.\n";}voidset(inti){m=i;}voidprint()const{cout<<m<<endl;}~A(){cout<<"Destructoriscalled.\n";}};voidfun(constA&c){C.print();}voidmain(){fun(5);}執(zhí)行該程序后,輸出結(jié)果如下:Constructoriscalled.5Destructoriscalled.4.派生#include<iostream.h>classA{inta,b;public:A(inti,intj){a=i;b=j;}voidmove(intx,inty){a+=x;b+=y;}voidshow(){cout<<"("<<a<<","<<b<<")\n";}};classB:privateA{intx,y;public:B(inti,intj,intk,intl):A(i,j){x=k;y=l;}voidshow(){cout<<x<<","<<y<<endl;}voidfun(){move(3,5);}voidf1(){A::show();}};voidmain(){Ae(1,2);e.show();Bd(3,4,5,6);D.fun();D.show();D.f1();}執(zhí)行該程序后,輸出結(jié)果如下:(1,2)5,6(6,9)4.派生#include<iostream.h>classA{inta,b;public:A(inti,intj){a=i;b=j;}voidmove(intx,inty){a+=x;b+=y;}voidshow(){cout<<"("<<a<<","<<b<<")\n";}};classB:publicA{intx,y;public:B(inti,intj,intk,intl):A(i,j),x(k),y(l){}voidshow(){cout<<x<<","<<y<<endl;}voidfun(){move(3,5);}voidf1(){A::show();}};voidmain(){Ae(1,2);e.show();Bd(3,4,5,6);D.fun();D.A::show();D.B::show();D.f1();}執(zhí)行該程序后,輸出結(jié)果如下:(1,2)(6,9)5,6(6,9)5.虛函數(shù)與派生#include<iostream.h>classB{protected:intb;public:B(inti){b=i+50;show();}B(){}virtualvoidshow(){cout<<"B::show()iscalled.b="<<b<<endl;}};classD:publicB{protected:intd;public:D(inti):B(i){d=i+100;show();}D(){}voidshow(){cout<<"D::show()iscalleD.d="<<d<<endl;}};voidmain(){Dd1(108);}執(zhí)行該程序后,輸出結(jié)果如下:B::show()iscalled.b=158D::show()iscalleD.d=2085.虛函數(shù)與派生#include<iostream.h>classA{public:A(){}virtualvoidf(){cout<<"A::f()iscalleD.\n";}};classB:publicA{public:B(){f();}voidg(){f();}};classC:publicB{public:C(){}virtualvoidf(){cout<<"C::f()iscalled.\n";}};voidmain(){Cc;C.g();}執(zhí)行該程序后,輸出結(jié)果如下:A::f()iscalled.C::f()iscalled.6.請(qǐng)分析以下的程序,給出該程序的正確執(zhí)行結(jié)果。#include<iostream.h>intadd(intx,inty){returnx+y;}voidmain(){intm=2,n=3;cout<<"1:"<<add(m++,m+n)<<endl;m=2,n=3;cout<<"2:"<<add(++m,m+n)<<endl;m=2,n=3;cout<<"3:"<<<endl;m=2,n=3;cout<<"4:"<<<endl;}答:1:72:83:84:9[解析]在說(shuō)明答案之前,要說(shuō)明兩個(gè)問(wèn)題:(1)C++語(yǔ)言中,函數(shù)參數(shù)是壓在棧里的,因壓棧是從前往后進(jìn)行的,因此出棧就是從后向前進(jìn)行的,也即先取最后的參數(shù),然后再向前逐個(gè)取用;(2)對(duì)于單加運(yùn)算,m++是先執(zhí)行后加1,++m是加1后再執(zhí)行。由此,因m=2,n=3;,因此:1:(m++)+(m+n)=2+(2+3)=7(m++后執(zhí)行,且后加1,因此m=2一直未變)2:(++m)+(m+n)=3+(2+3)=8(++m后執(zhí)行,但先加1,執(zhí)行++m時(shí),m=3了)3:(m+n)+(m++)=(3+3)+2=8(先執(zhí)行m++,后加1,執(zhí)行m+n時(shí),m=3了)4:(m+n)+(++m)=(3+3)+3=9;(先執(zhí)行++m,且先加1,故一開(kāi)始就有m=3)7.請(qǐng)分析下面的程序并給出該程序的執(zhí)行結(jié)果。#include<iostream.h>classAA{inta;public:AA(){cout<<"InitualizingAA!\n";}~AA(){cout<<"DestroyingAA!\n";};classBB{intb;AAp;public:BB(){cout<<"InitualizingBB!\n";}~BB(){cout<<"DestroyingBB!\n";};voidmain(){BBX;cout<<"Endingmain!\n";}答:InitualizingAA!InitualizingBB!Endingmain!DestroyingBB!DestroyingAA![解析]雖然在主程序中只定義了一個(gè)類BB的對(duì)象,但在類BB中聲明了類AA的對(duì)象作為它的數(shù)據(jù)成員。當(dāng)一個(gè)類中含有對(duì)象作為數(shù)據(jù)成員時(shí),在生成對(duì)象時(shí),先調(diào)用成員對(duì)象的構(gòu)造函數(shù),再調(diào)用類自己的構(gòu)造函數(shù),因此輸出了"InitualizingAA!"(成員對(duì)象構(gòu)造函數(shù)的輸出)和"InitualizingBB!"(類自己構(gòu)造函數(shù)的輸出)。對(duì)象生成后,執(zhí)行下一句輸出語(yǔ)句,則輸出"Endingmain!"。此時(shí)程序結(jié)束,調(diào)用析構(gòu)函數(shù)來(lái)析構(gòu)掉對(duì)象,先調(diào)用類自身的析構(gòu)函數(shù),其輸出為"DestroyingBB!",再調(diào)用成員對(duì)象的析構(gòu)函數(shù),其輸出為"DestroyingAA!"。8.寫出下列程序的運(yùn)行結(jié)果。#include<iostream.h>classAA{inta;public:AA(inti){a=i;cout<<"AA="<<a<<"\n";}virtual~AA(){cout<<"~AA="<<a<<"\n";}};classBB:publicAA{intb;public:BB(inti,intj):AA(i){b=j;cout<<"BB="<<b<<"\n";}~BB(){cout<<"~BB="<<b<<"\n";}};voidmain(){AA*pa=newAA(8);deletepa;AA*pb=newBB(6,9);deletepb;}答:AA=8~AA=8AA=6BB=9~BB=9~AA=6[解析]語(yǔ)句"AA*pa=newAA(8);"動(dòng)態(tài)生成一個(gè)類AA的對(duì)象并把它的地址賦給對(duì)象指針"pa",為此系統(tǒng)調(diào)用了AA的構(gòu)造函數(shù),輸出AA=8。接下來(lái),執(zhí)行語(yǔ)句"deletepa;"刪除該對(duì)象指針,其實(shí)是刪除了動(dòng)態(tài)生成的對(duì)象,因此調(diào)用類AA的析構(gòu)函數(shù),輸出~AA=8。接著執(zhí)行語(yǔ)句"AA*pb=newBB(6,9);",動(dòng)態(tài)生成一個(gè)類BB的對(duì)象,并將其地址賦給類AA的指針"pb"。在生成派生類BB對(duì)象時(shí),系統(tǒng)首先調(diào)用基類AA的構(gòu)造函數(shù)輸出AA=6,然后調(diào)用派生類BB的構(gòu)造函數(shù)輸出BB=9。最后執(zhí)行語(yǔ)句"deletepb;",由于基類AA的析構(gòu)函數(shù)被定義為虛函數(shù),因此在運(yùn)行時(shí)是動(dòng)態(tài)聯(lián)編的。故系統(tǒng)先調(diào)用派生類BB的析構(gòu)函數(shù)輸出~BB=9,再調(diào)用基類AA的析構(gòu)函數(shù)輸出~AA=6(若基類析構(gòu)函數(shù)非虛函數(shù),則只輸出~AA=6)。9.寫出下列程序的運(yùn)行結(jié)果。#include<iostream.h>classAA{public:staticintn;AA(){n++;}};intAA::n=0;main(){cout<<"AA::n="<<AA::n<<endl;AAd1;cout<<<d1.n<<endl;AAd2;cout<<<D2.n<<endl;AAd3,d4;cout<<<d1.n<<endl;cout<<<d2.n<<endl;}答:AA::n=0d1.n=1d2.n=2d1.n=4d2.n=4[解析]由于數(shù)據(jù)成員n的訪問(wèn)屬性是公有的,因此在類外可訪問(wèn)它;又它是靜態(tài)變量,因此具有全局性。在構(gòu)造函數(shù)中,執(zhí)行的是n++操作,即每次調(diào)用構(gòu)造函數(shù)n就加1。當(dāng)程序開(kāi)始時(shí),因未定義對(duì)象,因此n的值為初始化時(shí)的值,則輸出為"AA::n=0"。當(dāng)定義了對(duì)象d1后,由于調(diào)用了構(gòu)造函數(shù),則該對(duì)象中n=1,故輸出"d1.n=1"。同理,對(duì)象d2輸出"d2.n=2"。由于接下來(lái)生成了兩個(gè)對(duì)象d3和d4,調(diào)用兩次構(gòu)造函數(shù),n兩次加1,此時(shí)n=4,因此下面兩條語(yǔ)句的輸出為"d1.n=4"和"d2.n=4"。10.寫出下列程序的輸出結(jié)果。#include<iostream.h>classAA{public:AA{}{cout<<"ConstructorofAA.\n";fun();}virtualvoidfun(){cout<<"AA::fun()iscalled.\n";}};classBB:publicAA{public:BB(){cout<<"ConstructorofBB.\n";fun();}voidfun(){cout<<"BB::fun()iscalled.\n";}};voidmain(){BBd;}答:ConstructorofAA.AA::fun()iscalled.ConstructorofBB.BB::fun()iscalled.[解析]雖然函數(shù)fun()說(shuō)明為虛函數(shù),但當(dāng)在構(gòu)造函數(shù)中被調(diào)用時(shí),呈現(xiàn)的是靜態(tài)聯(lián)編,即基類和派生類都調(diào)用各自的函數(shù)fun()。因此,當(dāng)生成對(duì)象d時(shí),先調(diào)用基類的構(gòu)造函數(shù),在構(gòu)造函數(shù)中又調(diào)用自己的函數(shù)"fun()",因此輸出為"ConstructorofAA."和"AA::fun()iscalled."。同理調(diào)用派生類的構(gòu)造函數(shù)時(shí),生成的輸出為"ConstructorofBB."和"BB::fun()iscalled."。11.請(qǐng)給出下面的程序的輸出結(jié)果。#include<iostream.h>templatevoidsort(T*a,intn){Tnum;for(inti=0;i<N-1;i++){for(intj=i;j<N-1;j++)if(a[j]>a[j+1]){num=a[j];a[j]=a[j+1];a[j+1]=num;}}for(i=0;i<N;I++)cout<<A[I];cout<<endl;}voidmain(){intiver[5]={12,45,9,23,37};doubledver[5]={22.3,56.7,43.5,13.8,8.6};sort(iver,5);sort(dver,.5);}答:9122337458.613.822.343.556.7[解析]這是使用模板的例子。函數(shù)sort是一個(gè)遞增的排序函數(shù),T是個(gè)模板。當(dāng)數(shù)組是整型數(shù)據(jù)類型時(shí),它為整型數(shù)組排序;當(dāng)數(shù)組為雙精度數(shù)據(jù)類型時(shí),它為雙精度數(shù)組排序。因此輸出如上結(jié)果。12.給出如下程序運(yùn)行結(jié)果:intmain(){intnum=50;int&ref=num;ref=ref+10;cout<<"num="<<num<<endl;num=num+40;cont<<"ref="<<ref<<endl;return0;}13.給出如下程序運(yùn)行結(jié)果:classtest{private:intnum;public:test();intgetint(){returnnum;}~test();};test::test(){num=0;}test::~test(){cout<<"Destuctorisactive"<<endl;}voidmain(){testx[3];cout<<"Exitingmain"<<endl;}14.#include<iostream.h>voidmain()intb[3][5]={11,12,13,14,15,21,22,23,24,25,31,32,33,34,35};int(*p)[5]:p=b;For(intj=0;j<5;j++)cout<<*(*p+j)<<",";cout<<endl;}15.#include<iostream.h>#definePI3.1415926#defineFUDGE(k)k*PI;#definePR(a)cout<<"a"<<int(a)<<"\t";#definePRINT(a)PR(a);cout<<"\n";#definePRINT2(a,b)PR(a);PRlNT(b);#definePRINT3(3,b,c)PR(a):PRINT2(b,c);#defineMAX(a,b)(a<b?b:a)voidmain(){intx=2;PRINT(x*FUDGE(2));for(intcel=0;cel<=100;cel+=50)PRINT2(cel,9.15*cel+32);intx=l,y=2;PRINT3(MAX(x++,y),x,y);PRINT3(MAX(x++,y),x,y):}16.#include<iostream.h>#defineN8voidmain(){voidprint(int);print(l):}voidprint(intn){cout<<"W";if(n>=N)return;elseprint(++n);}17.#include<iostream.h>#include<string.h>classstring{private;char*str;public;string(char*s);~string();voidprint();};classperson{private:stringname;intage:charsex;public;person(char*n,intage,chars);~person();voidprint();};string::string(char*s){str=newchar[strlen(s)+1];strcpy(str,s);cout<<"stringconstructor:"<<this->str<<endl;}string::~string(){cout<<"stringdestructor:"<<this->str<<endl;deletestr;}voidstring::print(){cout<<str;}person::person(char*n,inta,chars):name(n){age=a;sex=s;cout<<"personconstructor:"<<this->age<<endl;person::~person();cout<<"persondestructor:"<<this->age<<endl;}voidperson::print(){cout<<"name:":name.print();cout<<",age:"<<age<<",sex:"<<sex<<endl;}voidmain(){persona("zhong",20,'W');personb("li",10,"F");A.print();B.print();}18.#include<iostream.h>voidswapl(inta,intb){inttemp=a:a=b:b=temp;}voidswap2(int*a,int*b){inttemp=*a;*a=*b:*b=temp;)voidswap3(int*a,int*b){int*temp=a:a=b:b=temp;}voidswap4(int&a,int&b){inttemp=a;a=b;b=temp;}voidmain(){inta=10,b=20:swapl(a,b);cout<<a<<':'<<b<<endl;swap2(&a,&b);cout<<a<<':'<<b<<endl;swap3(&a,&b);cout<<a<<':'<<b<<endl;swap4(a,b);cout<<a<<':'<<b<<endl;}19.#include<iostream.h>#include<iomanip.h>voldprint(intw){inti;if(w!=0){print(w-1);for(i=1;j<=w:i++)cout<<setw(3)<<w:cout<<endl;}}voidmain(){print(4);}20.#include<iostream.h>#defineSW(x,y){x^=y;y^=x;x^=y;}voidmain(){inta=10,b=01;Sw(a,b);cout<<a<<','<<b;}四.完成下列程序1.靜
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年心血管系統(tǒng)用藥項(xiàng)目建議書
- 家庭廚余垃圾簡(jiǎn)易生物降解系統(tǒng)
- 民房建筑施工合同
- 環(huán)保行業(yè)廢棄物處理風(fēng)險(xiǎn)免責(zé)協(xié)議
- 智慧社區(qū)建設(shè)投資合作合同
- 2025年液壓破碎錘項(xiàng)目發(fā)展計(jì)劃
- Glycycoumarin-Standard-生命科學(xué)試劑-MCE
- 2025年紡織片梭織機(jī)項(xiàng)目建議書
- 網(wǎng)絡(luò)安全技術(shù)培訓(xùn)服務(wù)合同書
- 1S-2S-2-PCCA-hydrochloride-生命科學(xué)試劑-MCE
- 康復(fù)科-關(guān)節(jié)活動(dòng)度測(cè)量量表
- 2025初級(jí)會(huì)計(jì)理論考試100題及解析
- 墻面油漆翻新合同范例
- 門診口腔院感基礎(chǔ)知識(shí)培訓(xùn)
- 公司關(guān)愛(ài)基金方案
- 燃料電池+基礎(chǔ)理論動(dòng)力學(xué)+熱力學(xué)+研究方法
- DB11T 1812-2020 既有玻璃幕墻安全性檢測(cè)與鑒定技術(shù)規(guī)程
- 安全開(kāi)發(fā)流程培訓(xùn)文件課件
- 三年內(nèi)無(wú)重大違法記錄聲明
- 星級(jí)酒店項(xiàng)目招標(biāo)文件
- 2023深信服日志審計(jì)系統(tǒng)用戶手冊(cè)
評(píng)論
0/150
提交評(píng)論