C++呂鳳翥第3版課后習(xí)題答案_第1頁(yè)
C++呂鳳翥第3版課后習(xí)題答案_第2頁(yè)
C++呂鳳翥第3版課后習(xí)題答案_第3頁(yè)
C++呂鳳翥第3版課后習(xí)題答案_第4頁(yè)
C++呂鳳翥第3版課后習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C++呂鳳翥(第三版)課后習(xí)題答案

第一章C++語(yǔ)言概述

一、選擇題

1.下列各種高級(jí)語(yǔ)言中,(C)是面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。

ABASIC;BPASCAL;C.C++;D.C

2.下列各種高級(jí)語(yǔ)言中,(B)最早提出了對(duì)象的概念。

A.Algol60;B.Simula67;C.Smalltalk;D.C++

解析:面向?qū)ο笳Z(yǔ)言借鑒了20世紀(jì)50年代的人工智能語(yǔ)言LISP,引入

了動(dòng)態(tài)綁定的概念和交互式開(kāi)發(fā)環(huán)境的思想;始于20世紀(jì)60年代的離

散事件模擬語(yǔ)言SIMULA67,引入了類的要領(lǐng)和繼承,成形于20世紀(jì)70

年代的Smalltalko

3.下述面向?qū)ο蟪橄蟮脑碇?(D)是不對(duì)的。

A.數(shù)據(jù)抽象;B.行為共享;C.進(jìn)化;D.兼容

解析:面向?qū)ο蟪橄笤硎欠庋b,繼承和多態(tài)。封裝指將數(shù)據(jù)和方法封

裝在類中(數(shù)據(jù)抽象),繼承是子類可以繼承父類的數(shù)據(jù)和方法(行為

共享),多態(tài)是子類可以定義自己的方法,實(shí)現(xiàn)父類不能實(shí)現(xiàn)的行為(進(jìn)

化)。所以選D。

4.(A)不是面向?qū)ο笙到y(tǒng)所包含的要素。

A.重載;B.對(duì)象;C.類;D繼承;

解析:面向?qū)ο笕兀悍庋b、繼承和多態(tài),對(duì)象是類的實(shí)現(xiàn),只有面

向?qū)ο蟛糯嬖?,重載是利用名稱之外的標(biāo)志(比如形參)作為區(qū)分以實(shí)

現(xiàn)名稱復(fù)用。

5.關(guān)于C++與C語(yǔ)言的關(guān)系的描述中,(D)是錯(cuò)誤的

A.C語(yǔ)言是C++的一個(gè)子集;

B.C語(yǔ)言與C++是兼容的;

C.C++是C語(yǔ)言進(jìn)行了一些改進(jìn);

D.C++和C語(yǔ)言都是面向?qū)ο蟮?/p>

解析:c語(yǔ)言是面向過(guò)程的語(yǔ)言。

6.下面關(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ì)象之間的信息傳遞是通過(guò)消息進(jìn)行的

解析:對(duì)象中不止封裝了數(shù)據(jù),還封裝了方法(操作),C語(yǔ)言中的結(jié)

構(gòu)變量只封裝了數(shù)據(jù)。

7.下面關(guān)于類概念的描述中,(D)是錯(cuò)誤的

A.類是抽象數(shù)據(jù)類型的實(shí)現(xiàn)

B.是具有共同行為的若干對(duì)象的統(tǒng)一描述體

C.類是創(chuàng)建對(duì)象的樣板

D.類就是C語(yǔ)言中的結(jié)構(gòu)類型

解析:類是對(duì)一系列具有相同行為對(duì)象的抽象,因此類不僅封裝了數(shù)據(jù),

還封裝了方法(即使是抽象方法),而C語(yǔ)言中的結(jié)構(gòu)類型只封裝了數(shù)

據(jù)。

8.C++對(duì)C語(yǔ)言作了很多改進(jìn),下列描述中(D)使得C語(yǔ)言發(fā)生了質(zhì)變,

即從面向過(guò)程變成為面向?qū)ο?/p>

A.增加了一些新的運(yùn)算符

B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)

C.規(guī)定函數(shù)說(shuō)明必須用原型

D.引進(jìn)了類和對(duì)象的概念

解析:面向?qū)ο蟮囊淮竺黠@特征就是具有類和對(duì)象。

9.按照標(biāo)識(shí)符的要求,(A)符號(hào)不能組成標(biāo)識(shí)符

A.連接符;B.下劃線;C.大小寫字母;D.數(shù)字字符;

解析:按照C++語(yǔ)法規(guī)定,標(biāo)識(shí)符只能由數(shù)字、字母和下劃線組成,并

且只能以字母或下劃線開(kāi)頭。

10.下列符號(hào)中,(D)不可作為分隔符(還有一種可能答案為C)

A.,;B.:;C.?;D.;;

解析:逗號(hào)運(yùn)算符可以將多個(gè)表達(dá)式組合成一個(gè)表達(dá)式,整個(gè)表達(dá)式的

值由最后一個(gè)表達(dá)式?jīng)Q定,示例:dl,d2,d3o

冒號(hào)(:)和問(wèn)號(hào)(?)是三目運(yùn)算符,在三目運(yùn)算符中分隔表達(dá)式,示

例:dl?al:a20

分號(hào)(;)作為語(yǔ)句的結(jié)束標(biāo)志,只能在語(yǔ)句末尾使用,用在語(yǔ)句中間會(huì)

把一個(gè)語(yǔ)句分為兩個(gè)語(yǔ)句,所以分號(hào)(;)不能作為分隔符使用。

二、判斷題

1.C++引進(jìn)了引用的概念,對(duì)編程帶來(lái)了很多方便。(V)

2.C++允許使用友元,但是友元會(huì)破壞封裝性。(V)

3.c++中使用了新的注釋符(〃),c語(yǔ)言中注釋符(/*.....*/)不能在c+中使用(X)

4.C++中為了減輕使用者的負(fù)擔(dān),與c語(yǔ)言相比較C++中減少了一些運(yùn)算符。

(X)

解析:增加了一些運(yùn)算符,比如強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,示例int(a),將

a強(qiáng)制轉(zhuǎn)換為整形。

5.C++程序中,每條語(yǔ)句結(jié)束時(shí)都加一個(gè)分號(hào)(力。(J)

6.C++中標(biāo)識(shí)符內(nèi)的大小寫字母是沒(méi)有區(qū)別的。(X)

7.C++中不允許使用宏定義的方法定義符號(hào)常量,只能用關(guān)鍵字const來(lái)定義符號(hào)

常量。(X)

解析:推薦使用const關(guān)鍵字,因?yàn)閏onst關(guān)鍵字定義的常量受到編譯

器的保護(hù)和檢查,不允許修改,安全性更高,使用宏定義定義時(shí),因?yàn)?/p>

宏定義只做簡(jiǎn)單的替換,不檢查語(yǔ)法和進(jìn)行保護(hù),安全性不好。

8.在編寫C++程序時(shí),一定要注意采用人們習(xí)慣使用的書寫格式,否則將會(huì)降低其可

讀性。(V)

9.C++是一種以編譯方式實(shí)現(xiàn)的高級(jí)語(yǔ)言。(V)

10.在C++編譯過(guò)程中,包含預(yù)處理過(guò)程、編譯過(guò)程和連接過(guò)程,并且這三個(gè)過(guò)程的

順序是不能改變的。(V)

解析:因?yàn)楹甓x的量編譯器是無(wú)法直接識(shí)別的,必須由預(yù)處理程序進(jìn)

行替換,在宏定義中還引入了一些頭文件,需要在預(yù)處理時(shí)引入,所以

預(yù)處理必須在編譯之前進(jìn)行。預(yù)處理結(jié)束之后,需要對(duì)源程序進(jìn)行詞法

和語(yǔ)義分析,檢查是否存在語(yǔ)法錯(cuò)誤。連接過(guò)程是不能直接使用源碼文

件的,必須使用編譯過(guò)程產(chǎn)生的對(duì)象文件。對(duì)象文件還缺少必要的C++

庫(kù),或者這些文件分散在不同的地方,因此還需要把它們連接起來(lái)并生

成可執(zhí)行文件才能運(yùn)行程序。

11.預(yù)處理過(guò)程是一般編譯過(guò)程之后連接過(guò)程之前進(jìn)行的。(X)

解析:編譯順序是預(yù)處理過(guò)程f編譯過(guò)程f連接過(guò)程,不可改變。

12.源程序在編譯過(guò)程中可能會(huì)出現(xiàn)一些錯(cuò)誤信息,但在連接過(guò)程中將不會(huì)出現(xiàn)錯(cuò)

誤信息。(X)

解析:連接過(guò)程需要把一個(gè)程序的多個(gè)源文件或者把對(duì)象文件和庫(kù)文件

連接在一起,在這個(gè)過(guò)程中可能會(huì)出現(xiàn)文件路徑出錯(cuò),庫(kù)文件缺失等錯(cuò)

誤。

第二章數(shù)據(jù)類型和表達(dá)式

一、選擇題

1.在16位機(jī)中,int型字寬為(A)字節(jié)。

A.2;B.4;C.6;D.8

解析:ANSI標(biāo)準(zhǔn)中int類型長(zhǎng)度為4個(gè)字節(jié),是在32位機(jī)上定義的,

對(duì)于16位機(jī),int類型與32位機(jī)的shortint類型相對(duì)應(yīng),長(zhǎng)度為2

個(gè)字節(jié)。

2.類型修飾符unsigned修飾(D)類型是錯(cuò)誤的

A.Char;B.int;C.longint;D.float

解析:四種基本數(shù)據(jù)類型修飾符signed、unsigned、long、short都適

用于整型和字符型,long還適用于double型,但是都不適用于float

型。

3.下列十六進(jìn)制的整型數(shù)常數(shù)表示中,(C)是錯(cuò)誤的

A.Oxaf;B.OXlb:;C.2fx;D.OxAE

解析:16進(jìn)制數(shù)都以O(shè)x或OX開(kāi)頭。

4.下列double型常量表示中,(A)是錯(cuò)誤的

A.E15;B..35;C.3E5;D.3E-5

解析:使用E是doube類型的科學(xué)計(jì)數(shù)法表示形式,E之前因數(shù)為1時(shí)

也不可省略,否則會(huì)被編譯器當(dāng)作變量名而引發(fā)語(yǔ)法錯(cuò)誤。

5.下列字符常量表示中,(C)是錯(cuò)誤的

A.''105‘;B'*';C.'\4f';D.'\a'

解析:使用‘\'和十六進(jìn)制數(shù)表示轉(zhuǎn)義字符時(shí),必須在十六進(jìn)制數(shù)前面加x:、x4f'

6.下列字符串常量表示中,(無(wú))是錯(cuò)誤的(都沒(méi)錯(cuò))

A"\〃yes〃\or\〃No\〃〃;B.0K!\'〃;C.abcd\n〃;;D.〃ABC\O〃

解析:C++,字符串的結(jié)束符會(huì)被自動(dòng)添加,不用手動(dòng)添加,浪費(fèi)一個(gè)字節(jié)。

7.下列變量名中,(A)是合法的

ACHINA;B.byte-size;C.double;D.A+a

解析:變量名只能由字母、數(shù)字和下劃線組成,且必須以字母開(kāi)頭,并且不能使用

C++的關(guān)鍵字。

8.在inta[5]={l,3,5},數(shù)組元素a[l]的值是(C)

A.1;B.0;C.3;D.2

9.在intb[][3]={{1},{3,2},{4,5,6},{0}}中,b[2][2]的值是(C)

A.0;B.5;C.6;D.2

解析:b[2][2]表示第三行第三列的元素,所以為6。

10.下列給字符數(shù)組進(jìn)行初始化中,(A)是正確的

A.charsi[]="abed";B.chars2[3]="xyz"

C.chars3[][3]={'x','y','z'}

D.chars4[2][3]={"xyz","mnp"}

解析:因?yàn)槊總€(gè)字符串后還有一個(gè)結(jié)束符'\0',所以實(shí)際使用空間比字符串長(zhǎng)度多

一個(gè)字節(jié)。B選項(xiàng)沒(méi)有預(yù)留、0'空間,數(shù)組溢出。C選項(xiàng)聲明的是多維字符數(shù)組,

應(yīng)該為{{'x'},{'y'),{'z'}}。D選項(xiàng)聲明的也是多維字符數(shù)組,并且沒(méi)有預(yù)

留''0'空間,數(shù)組會(huì)溢出,應(yīng)為

chars4[2][4]={{“xyz”},{“mnp”}}。

11.在inta=3,*p=&a;中,*P的值是(D)

A.變量a的地址值;B無(wú)意義;C.變量P的地址值;D.3

解析:*P中存放了a的地址值,而a中存儲(chǔ)的值為3,所以*p值為3。

12.對(duì)于int*pa[5]的描述,(D)是正確的

A.pa是一個(gè)指向數(shù)組的指針,所指向的數(shù)組是5個(gè)int型元素

B.pa是一個(gè)指向某個(gè)數(shù)組中第5個(gè)元素的指針,該元素是int型變

C.pa5表示某個(gè)數(shù)組的第5個(gè)元素的值

D.pa是一個(gè)具有5個(gè)元素的指針數(shù)組,每個(gè)元素是一個(gè)int型指針

解析:指針數(shù)組聲明為<類型>名稱[長(zhǎng)度],示例:int*p[4];數(shù)組指針聲明為

〈類型〉(名稱)[指向數(shù)組的長(zhǎng)度],示例:int(*p)[3K

13.下列關(guān)于指針的運(yùn)算中,(D)是非法的。

A.兩個(gè)指針在一定條件下,可以進(jìn)行相等或不等的運(yùn)算

B.可以用一個(gè)空指針賦值給某個(gè)指針

C.一個(gè)指針可以加上兩個(gè)整數(shù)之差

D.兩個(gè)指針在一定條件下,可以相加

解析:指針的值對(duì)應(yīng)著內(nèi)存地址,將指針相加得到的數(shù)值可能不是內(nèi)存地址,會(huì)引

發(fā)錯(cuò)誤。指針允許的操作有賦值;與整數(shù)相加減(指針偏移);一定條件下,兩個(gè)

指針可以相減,得到指針之間的偏移量;兩個(gè)指針之間還可以比較。

14.指針可以用來(lái)表示數(shù)組元素,下列表示中(A)是錯(cuò)誤的。

已知:inta[3][7];

A.*(a+l)[5];B,*(*a+3);C*(*(a+l));D.*(&a[0][0]+2)

解析:使用指針表示數(shù)組元素時(shí),不能同時(shí)使用指針偏移和索引來(lái)取出數(shù)組元素。

15.下列表示引用的方法中,(A)是正確的。

已知:intm=10;

A.int&x=m;B.int&y=10;C.int&z;D.float&t=&m

解析:引用是某個(gè)已知變量或?qū)ο蟮膭e名,引用不是變量,本身沒(méi)有值,也沒(méi)有地

址(因此不能對(duì)它賦值),它不占內(nèi)存空間。引用聲明格式:

(被引用對(duì)象類型)&引用名=被引用變量名。

16.下列各運(yùn)算符中,(A)可以作用于浮點(diǎn)數(shù)。

A++;B.%;C.?;D.&

解析:++用于浮點(diǎn)數(shù)和用于整型的效果是一樣的,其他的運(yùn)算符只能用于整數(shù)。

17.下列各運(yùn)算符中,(D)不能作用于浮點(diǎn)數(shù)

A./;B.&&;C.!;D.~

解析:A選項(xiàng)的除法運(yùn)算符可以用于浮點(diǎn)數(shù),B選項(xiàng)是邏輯與,可以用于浮點(diǎn)數(shù)判

斷,C選項(xiàng)是邏輯求反,可以用于浮點(diǎn)數(shù),D選項(xiàng)是按位求反,只能用于整型和字

符型。

18.下列各運(yùn)算符中,(B)優(yōu)先級(jí)最高。

A.+(雙目);B.*(單目);C.<=;D.*=

解析:*的優(yōu)先級(jí)為2級(jí)(取內(nèi)容)或3級(jí)(乘法),+的優(yōu)先級(jí)為4級(jí),<=和*=的

優(yōu)先級(jí)為14級(jí)。

19.下列各運(yùn)算符中,(A)優(yōu)先級(jí)最低

A.?:;B.|;C.||;D.!=

解析:?:優(yōu)先級(jí)為13級(jí),|優(yōu)先級(jí)為10級(jí),||優(yōu)先級(jí)為12級(jí),!=優(yōu)先級(jí)為7級(jí)。

20.下列各運(yùn)算符中C)結(jié)合性從左到右

A.三目;B.賦值;C.比較;D.單目

解析:?jiǎn)文?,三目和賦值的結(jié)合性從右到左。

21.下列表達(dá)式中,(D)是非法的

已知:inta=5:floatb=5.5

A.a%3+b;B.b*b&&++a;C.(a>b)+(int(b)%2);D.---a+b

解析:D選項(xiàng)不能將自減運(yùn)算符(-)和負(fù)號(hào)一起使,會(huì)被編譯器視為無(wú)效表達(dá)式。

22.下列表達(dá)式中,(D)是合法的

已知:doublem=3.2;intn=3。

A.m?2;B.(m+n)|n;C.!m*=n;D.m=5,n=3.1,m+n

解析:A選項(xiàng),double類型不能進(jìn)行移位操作:B選項(xiàng),m+n為double類型,不能

進(jìn)行按位或操作;C選項(xiàng),因?yàn)槿》催\(yùn)算符優(yōu)先級(jí)大于*=,所以先取反再賦值,經(jīng)

過(guò)取反,左邊!m的結(jié)果為0,是一個(gè)常數(shù),不能進(jìn)行賦值。

23.下列關(guān)于類型轉(zhuǎn)換的描述中,(A)錯(cuò)誤的

A.在不同類型操作數(shù)組成的表達(dá)式中,其表達(dá)式類型一定是最高類型

doube型

B.逗號(hào)表達(dá)式的類型是最后一個(gè)表達(dá)式的類型

C.賦值表達(dá)式的類型是左值的類型

D.在由低向高的類型轉(zhuǎn)換中是保值映射

解析:A選項(xiàng),在不同類型操作數(shù)組成的表達(dá)式中,所有操作數(shù)都會(huì)被轉(zhuǎn)換為最高

類型進(jìn)行運(yùn)算,但不一定是double型。D選項(xiàng),由低向高的類型轉(zhuǎn)換不會(huì)損失精度,

即保值映射。

24.下列各表達(dá)式中,(D)有二義性。

已知:inta(5),b(6)

A.a+b?3;B.++a+b++;C.b+(a=3);D.(a=3)-a++

解析:0的優(yōu)先級(jí)最高,++優(yōu)先級(jí)為2級(jí),+、-為4級(jí),>>為5級(jí)。A選項(xiàng),根據(jù)優(yōu)

先級(jí)先執(zhí)行+再執(zhí)行>>3,結(jié)果為1;B選項(xiàng)根據(jù)優(yōu)先級(jí)先執(zhí)行++a,再執(zhí)行a+b,再

執(zhí)行b加1,結(jié)果為12oC選項(xiàng)先賦值a=3,再執(zhí)行a+b,結(jié)果為9;D選項(xiàng)先執(zhí)行

括號(hào)中的內(nèi)容,再執(zhí)行-,最后a加1,結(jié)果為1??梢钥吹紻選項(xiàng)的結(jié)果和預(yù)期的

0一致,所以D具有二義性。

25.用來(lái)表示指向結(jié)構(gòu)變量指針的成員是(B)運(yùn)算符。

A.?;B.->;C.?;D.?

解析:A是成員選擇符,C是右移位,D是左移位。

26.下列關(guān)于結(jié)構(gòu)數(shù)組的描述中,有幾處錯(cuò)誤(A)

structab{

inta;

charc;

doublea;

}a,ab;

A.l;B.2;C.3;D.4

解析:結(jié)構(gòu)成員變量定義不能重名,所以共一處錯(cuò)誤。

27.下列關(guān)于結(jié)構(gòu)數(shù)組的描述中,錯(cuò)誤的是(A)

A.結(jié)構(gòu)數(shù)組的元素可以是不同結(jié)構(gòu)類型的結(jié)構(gòu)變量

B.結(jié)構(gòu)數(shù)組在定義時(shí)可以賦初值

C.組成結(jié)構(gòu)數(shù)組的結(jié)構(gòu)變量的成員可以是數(shù)組

D.結(jié)構(gòu)數(shù)組可定義在函數(shù)體內(nèi),也可以定義在函數(shù)體外

解析:結(jié)構(gòu)數(shù)組聲明形式為struct結(jié)構(gòu)名數(shù)組名,只能存放同一類型的結(jié)構(gòu)變量。

28.聯(lián)合成員的地址值和所占的字節(jié)數(shù)(A)

A,都相同;B.都不相同;C.前者相同;D.前者不同,后者相同。

解析:聯(lián)合成員是共用一塊內(nèi)存單元,即所有成員是共址的,單元的大小與聯(lián)合中

數(shù)據(jù)長(zhǎng)度最長(zhǎng)的相同。

二、判斷題

1.任何字符常量與一個(gè)任意大小的整型數(shù)進(jìn)行加減都是有意義的(X)

解析:字符編碼是有范圍的,超出這個(gè)范圍就失去意義。

2.轉(zhuǎn)義序列表示法只能表示字符不能表示數(shù)字(7)

解析:轉(zhuǎn)義序列表示法表示字符常量。

3.在命名標(biāo)識(shí)符中,大小寫字母是不加區(qū)別的(X)

4.C++程序中,對(duì)變量一定要先說(shuō)明再使用,說(shuō)明只要在使用之前就可以(J)

5.C++中數(shù)組元素的下標(biāo)是從0開(kāi)始,數(shù)組元素是連續(xù)存儲(chǔ)在內(nèi)存單元中的(V)

6.數(shù)組賦初值時(shí),初始值表中的數(shù)據(jù)項(xiàng)的數(shù)目可以大于或等于數(shù)組元素的個(gè)數(shù)(X)

7?枚舉變量的取值受到該枚舉變量所對(duì)應(yīng)的枚舉表中的枚舉符的局限(V)

8.指針是用來(lái)存放某種變量的地址值的變量。這種變量的地址值也可以存放在某個(gè)

變量中,存放某個(gè)指針的地址值的變量稱為指向指針的指針,即二級(jí)指針(V)

9.引用是用來(lái)給某個(gè)變量以別名的變量。對(duì)引用的操作,實(shí)質(zhì)上就是對(duì)被引用的變量

的操作(J)

10.運(yùn)算符的優(yōu)先級(jí)和結(jié)合性可以確定表達(dá)式的計(jì)算順序(V)

11.在說(shuō)明語(yǔ)句中,inta(5),&b=a,*p=&a中,b的值和*p的值是相等的(V)

解析:b是對(duì)-a的引用,*p是a的指針,因此二者的值想等。

12.已知:inta⑸,;表達(dá)式(a=7)+a具有二義性。(X)

13.移位運(yùn)算符在移位操作中,無(wú)論左移還是右移,所移出的空位一律補(bǔ)0。(X)

解析:右移時(shí)左邊移出的空位要么一律補(bǔ)0,要么一律補(bǔ)符號(hào)位,這由機(jī)器決定。

14.某個(gè)變量的類型高是指該變量被存放在內(nèi)存中的高地址處(X)

解析:類型高是指數(shù)據(jù)長(zhǎng)度大。

15.隱含的類型轉(zhuǎn)換都是保值映射,顯式的類型轉(zhuǎn)換都是非保值映射(X)

解析:只有由低類型向高類型轉(zhuǎn)換數(shù)據(jù)精度才不會(huì)丟失,才是保值映射,由高類型

向低類型轉(zhuǎn)換都是非保值映射,顯式的類型轉(zhuǎn)換如果在轉(zhuǎn)換時(shí)數(shù)據(jù)精度不丟失,也

是保值映射。

16.類型定義可以用來(lái)定義一些C++中所沒(méi)有的新的類型(X)

解析:只能定義現(xiàn)有類型的別名。通過(guò)typedef實(shí)現(xiàn)。

17.定義結(jié)構(gòu)變量時(shí)必須指出該結(jié)構(gòu)變量是屬于某種結(jié)構(gòu)類型的。(J)

18.無(wú)名結(jié)構(gòu)是不允許定義結(jié)構(gòu)變量的(X)

解析:可以,例如:

struct{

inta;

charc;

doubleac;

}ad,ab;

15、同一結(jié)構(gòu)中的不同成員變量占用不同的內(nèi)存單元(V)

16、聯(lián)合的所有成員變量都是沒(méi)有內(nèi)存地址的(X)

解析:聯(lián)合的成員變量共用內(nèi)存地址,不是沒(méi)有內(nèi)存地址。

第三章預(yù)處理和語(yǔ)句

一、選擇題

L預(yù)處理命令在程序中都是以(B)開(kāi)頭的。

A.*;B.#;C.:;D/;

2.文件包含命令中被包含的文件的擴(kuò)展名(D)(也可以沒(méi)有)

A必須為h;B.不能用h;C必須是c;D.不一定是h

解析:C++中的頭文件都是.h擴(kuò)展名。

3.下列條件編譯命令中

#if(A)

〈語(yǔ)句序列1>

#else

<語(yǔ)句序列2>

Sendif

A整常量表達(dá)式;B任何標(biāo)識(shí)符;C任意表達(dá)式;D被定義的宏名;

4.帶參數(shù)的宏定義中,程序中引用宏定義的實(shí)參(D)

A只能是常量;B只能是整型量;C只能是整形表達(dá)式;D可以是任意表達(dá)式

5.下列是(A)語(yǔ)句

A.;B.a=17;C.x+y;D.cout?w\nw

解析:語(yǔ)句都是以分號(hào)(力結(jié)尾的。

6.下列for循環(huán)的次數(shù)為(B)

for(inti(0),x=0;!x&&i<=5;i++)

A.5;B.6;C.l;D.無(wú)限;

7.下列while循環(huán)的次數(shù)是(A)

while(inti=0)i--;

A.O:B.l;C.5;D.無(wú)限

解析:先執(zhí)行inti=0后再以i作為循環(huán)判斷條件,因?yàn)閕始終是0,所以循環(huán)條件始

終不滿足,循環(huán)不會(huì)運(yùn)行。

8,下列do?while循環(huán)的循環(huán)次數(shù)為(D)

已知:inti(5);

do{

cout?i-?endl;

i-;

}while(i!=0)

A.O;B.l;C.5;D.無(wú)限;

9.下列for循環(huán)的循環(huán)體執(zhí)行次數(shù)為(D)

for(inti(0),j(10);i=j=10;i++,j-)

A.O;B.l;C.10;D.無(wú)限

10.已知:inta力,下列switch語(yǔ)句中,(D)是正確的。

A.switch(a){

casea:a++;break;

caseb:b++;break;

)

B.switch(a+b){

casel:a+b;break;

case2:a-b

)

C.switch(a*a){

casel,2:++a;

case3,4:++b;

)

D.switch(a/10+b){

case5:a/5;break;

default:a+b;

)

解析:選項(xiàng)A、C,case語(yǔ)句只能使用整常形表達(dá)式,不能使用變量;選項(xiàng)B,表達(dá)

式末尾沒(méi)加分號(hào);

11.下述關(guān)于循環(huán)體的描述中,(C)是錯(cuò)誤的

A.循環(huán)體中可以出現(xiàn)break語(yǔ)句和continue語(yǔ)句;

B.循環(huán)體中還可以出現(xiàn)循環(huán)語(yǔ)句;

C循環(huán)體中不能出現(xiàn)goto語(yǔ)句

D.循環(huán)體中可以出現(xiàn)開(kāi)關(guān)語(yǔ)句

解析:got??梢猿霈F(xiàn)在程序的任何地方。

12.下述關(guān)于goto語(yǔ)句的描述中,(D)是正確的。

A.goto語(yǔ)句可在一個(gè)文件中隨意轉(zhuǎn)向

B.goto語(yǔ)句后面要跟上一個(gè)它所轉(zhuǎn)向的語(yǔ)句;

C.goto語(yǔ)句可以同時(shí)轉(zhuǎn)向多條語(yǔ)句

D.goto語(yǔ)句可以從一個(gè)循環(huán)體內(nèi)轉(zhuǎn)到循環(huán)體外

解析:選項(xiàng)A,C++規(guī)定goto只能在一個(gè)函數(shù)體內(nèi)進(jìn)行轉(zhuǎn)向;選項(xiàng)B,goto后面要

跟它所轉(zhuǎn)向的語(yǔ)句標(biāo)號(hào),不是語(yǔ)句;選項(xiàng)C,goto只能轉(zhuǎn)到單條語(yǔ)句。

13.下述關(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)多次

解析:break用在開(kāi)關(guān)語(yǔ)句或者循環(huán)語(yǔ)句內(nèi),用于結(jié)束這些語(yǔ)句,在其他語(yǔ)句中不

起作用。

14.下述關(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子句后面的表達(dá)式可以是整形表達(dá)式

解析:選項(xiàng)B,break可以有,也可以沒(méi)有,沒(méi)有的話執(zhí)行所有滿足條件的語(yǔ)句;選

項(xiàng)C,default可以放在任何位置;case子句后面的表達(dá)式必須是整常型表達(dá)式。

15.下列關(guān)于條件語(yǔ)句的描述中,(C)是錯(cuò)誤的

A.if語(yǔ)句中只有一個(gè)else子句

B.if語(yǔ)句中可以有多個(gè)elseif子句

C.if語(yǔ)句中if體內(nèi)不能是開(kāi)關(guān)語(yǔ)句

D.if語(yǔ)句中的if體中可以是循環(huán)語(yǔ)句

二、判斷題

1.預(yù)處理命令是在進(jìn)行編譯時(shí)首先執(zhí)行的,然后再進(jìn)行正常編譯(V)

2.宏定義命令是以分號(hào)結(jié)束的(X)

3.帶參數(shù)的宏定義只能有1至2個(gè)參數(shù)(X)

4.文件包含命令所包含的文件是不受限制的(X)

解析:一條文件包含語(yǔ)句只能引入一個(gè)文件。

5.條件編譯命令只在編譯時(shí)才有作用(V)

6.預(yù)處理命令的主要作用是提高效率(X)

解析:使用預(yù)處理命令可以使程序書寫更簡(jiǎn)練,清晰

7.復(fù)合語(yǔ)句就是分程序(X)

解析:含有一條或多條說(shuō)明語(yǔ)句的復(fù)合語(yǔ)句稱為分程序。

8.條件語(yǔ)句不能作為多路分支語(yǔ)(X)

解析:ifelse語(yǔ)句嵌套使用也可以實(shí)現(xiàn)多路分支

9.開(kāi)關(guān)語(yǔ)句不可以嵌套,在開(kāi)關(guān)語(yǔ)句的語(yǔ)句序列中不能再有開(kāi)關(guān)語(yǔ)句(X)

10.開(kāi)關(guān)語(yǔ)句中的default關(guān)鍵字,只能放在該語(yǔ)句的未尾,不能放在開(kāi)頭或中間

(X)

解析:default可以放在任何位置。

11.switch語(yǔ)句中必須有break語(yǔ)句,否則無(wú)法退出switch語(yǔ)句(X)

解析:switch語(yǔ)句的}代表語(yǔ)句結(jié)束,可以退出語(yǔ)句。

12.while循環(huán)語(yǔ)句的循環(huán)體至少執(zhí)行一次(X)

13.do-while循環(huán)可以寫成while循環(huán)的格式(,)

14.for循環(huán)是只有可以確定的循環(huán)次數(shù)時(shí)才可使用,否則不能用for循環(huán)(X)

解析:循環(huán)次數(shù)不確定時(shí),可以使用break退出for循環(huán)

15.只有for循環(huán)的循環(huán)體可以是空語(yǔ)句,其他種循環(huán)的循環(huán)體不能用空語(yǔ)句(X)

解析:都可以為空。

16.當(dāng)循環(huán)體為空語(yǔ)句時(shí),將說(shuō)明該循環(huán)不作任何工作,只起延時(shí)作用(X)

17.循環(huán)是可以嵌套的,循環(huán)體內(nèi)可以包含另一種循環(huán)語(yǔ)句(V)

18.在多重循環(huán)中,內(nèi)重循環(huán)的循環(huán)變量應(yīng)用的次數(shù)比外重的多(V)

19.break語(yǔ)句可以出現(xiàn)在各種循環(huán)體中(V)

20.continue語(yǔ)句只能出現(xiàn)在循環(huán)體內(nèi)(V)

第四章函數(shù)和作用域

一、選擇題

1.當(dāng)一個(gè)函數(shù)無(wú)返回值時(shí),定義它時(shí)函數(shù)的類型應(yīng)是(A)

A.void;B.任意;C.int;D.無(wú)

2.在函數(shù)說(shuō)明時(shí),下列(D)項(xiàng)是不必要的

A函數(shù)的類型;B函數(shù)參數(shù)類型和名字;C函數(shù)名字;D返回值表達(dá)式

解析:函數(shù)說(shuō)明格式為<類型><函數(shù)名><參數(shù)表>

3.在函數(shù)的返回值類型與返回值表達(dá)式的類型的描述中,(B)是錯(cuò)誤的

A.函數(shù)的返回值的類型是定義函數(shù)時(shí)確定的

B.函數(shù)的返回值的類型就是返回值表達(dá)式的類型

C.函數(shù)的返回值表達(dá)式的類型與函數(shù)返回值類型不同時(shí),表達(dá)式類型應(yīng)轉(zhuǎn)換成函數(shù)

返回值類型

D.函數(shù)的返回值類型決定了返回值表達(dá)式的類型

解析:函數(shù)返回值的類型是在函數(shù)定義時(shí)確定的,不會(huì)隨返回值表達(dá)式類型改變而

改變。

4.在一個(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ù)

解析:函數(shù)體中可以有多條return語(yǔ)句,大多在if語(yǔ)句中使用,實(shí)現(xiàn)按不同條件返

回。一條return只能返回一個(gè)值。

5.下列描述(D)是引用調(diào)用

A.形參是指針,實(shí)參是地址值

B.形參和實(shí)參都是變量;

C.形參是數(shù)組名,實(shí)參是數(shù)組名

D.形參是引用,實(shí)參是變量

解析:選項(xiàng)A為傳址調(diào)用;選項(xiàng)B為傳值調(diào)用;選項(xiàng)C為傳址調(diào)用,因?yàn)閿?shù)組名代

表了數(shù)組的指針;

6.在傳值調(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ù)任意

7.在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ù)再設(shè)置左邊的參數(shù)

D.設(shè)置參數(shù)默認(rèn)值時(shí),應(yīng)該全部參數(shù)都設(shè)置

解析:A選項(xiàng),C++允許設(shè)置默認(rèn)值;B選項(xiàng),參數(shù)默認(rèn)值可以在函數(shù)定義或者函數(shù)

說(shuō)明時(shí)設(shè)置;D選項(xiàng),設(shè)置參數(shù)默認(rèn)值可以不必全部都設(shè)置,但是沒(méi)設(shè)置的參數(shù)一

定要在設(shè)置默認(rèn)值的參數(shù)的左邊。

8.重載函數(shù)在調(diào)用時(shí)選擇的依據(jù)中,(無(wú))錯(cuò)誤的

A.參數(shù)個(gè)數(shù);B.參數(shù)的類型;C.函數(shù)名字;D.函數(shù)的類型

解析:函數(shù)重載是指一個(gè)函數(shù)名可以對(duì)應(yīng)著多個(gè)函數(shù)實(shí)現(xiàn)。重載確定函數(shù)實(shí)現(xiàn)時(shí),

要求同名函數(shù)的參數(shù)個(gè)數(shù)或參數(shù)順序或返回值類型不同。

9.下列的標(biāo)識(shí)符中,(C)是文件級(jí)作用域的

A.函數(shù);B語(yǔ)句標(biāo)號(hào);C外部靜態(tài)類標(biāo)識(shí)符;D.自動(dòng)類標(biāo)識(shí)符

解析:作用域從大到小分為程序級(jí)、文件級(jí)、函數(shù)級(jí)、塊級(jí)。A選項(xiàng),內(nèi)部函數(shù)作

用域?yàn)槲募?jí),外部函數(shù)的作用域可以是程序級(jí);B選項(xiàng),語(yǔ)句標(biāo)號(hào)屬于函數(shù)級(jí)作

用域,只在使用它函數(shù)內(nèi)可見(jiàn);C選項(xiàng),外部靜態(tài)類標(biāo)識(shí)符作用域?yàn)槲募?jí);D自

動(dòng)類標(biāo)識(shí)符,作用域?yàn)楹瘮?shù)級(jí)。

10.有int型變量,在程序中使用頻度很高,最好定義為(A)

A.register;Bauto;C.extern;D.static

解析:register修飾符暗示編譯程序相應(yīng)的變量將被頻繁地使用,如果可能的話,應(yīng)將

其保存在CPU的寄存器中,以加快其存取速度。

11.下列標(biāo)識(shí)符中,(B)不是局部變量

Aregister類;B.外部static類;C.auto類;D函數(shù)形參

解析:局部變量是作用域在函數(shù)級(jí)或塊級(jí)的變量,包括自動(dòng)類變量,寄存器變量和

內(nèi)部靜態(tài)類變量以及函數(shù)參數(shù)。外部變量是作用在程序級(jí)的變量,外部靜態(tài)變量是

作用域在文件級(jí)的變量。

12.下列存儲(chǔ)類標(biāo)識(shí)符中,(C)的可見(jiàn)性與存在性不一致

A.外部類;B.自動(dòng)類;C.內(nèi)部靜態(tài)類;D.寄存器

解析:靜態(tài)類在作用域內(nèi)可見(jiàn),在作用域外不可見(jiàn)但是仍然存在。A、C、D三種類型

的標(biāo)識(shí)符可見(jiàn)性和存在性都是一致的,即在作用域內(nèi)可見(jiàn)時(shí)存在,不可見(jiàn)時(shí)就消失

了。

13.下列存儲(chǔ)類標(biāo)識(shí)符中,要求通過(guò)函數(shù)來(lái)實(shí)現(xiàn)一種不太復(fù)雜的功能,并且要求加快執(zhí)

行速度,選用(A)比較合適

A內(nèi)聯(lián)函數(shù);B重載函數(shù);C遞歸調(diào)用;D嵌套調(diào)用

解析:使用內(nèi)聯(lián)函數(shù),編譯器將程序中出現(xiàn)的內(nèi)聯(lián)函數(shù)調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)的函

數(shù)體來(lái)進(jìn)行替換,省去了函數(shù)轉(zhuǎn)移的時(shí)間開(kāi)銷,因此對(duì)于函數(shù)代碼不是很大,對(duì)執(zhí)

行速度要求很高的函數(shù),使用內(nèi)聯(lián)函數(shù)比較恰當(dāng)。

14.采用函數(shù)重載的目的在于(D)

A.實(shí)現(xiàn)共享;B減少空間;C提高速度;D使用方便,提高可讀性

解析:函數(shù)重載可以減少函數(shù)命名的數(shù)量,方便編程,也方便閱讀程序。

15.將兩個(gè)字符串連接起來(lái)組成一個(gè)字符串時(shí),選用(C)函數(shù)

A.strlen();B.strcpy();C.strcat();D.strcmp()

解析:A選項(xiàng),獲取字符串長(zhǎng)度;B選項(xiàng),復(fù)制字符串;D選項(xiàng),比較字符串;

16.定義函數(shù)模板使用的關(guān)鍵宇是(C)

A.class

B.inline

C.template

D.operator

解析:A選項(xiàng),定義類;B選項(xiàng),定義內(nèi)聯(lián)函數(shù);D選項(xiàng),操作符重載或者是自定義

對(duì)象類型隱式轉(zhuǎn)換。

17.下列有關(guān)對(duì)函數(shù)模板參數(shù)的描述,錯(cuò)誤的是(C)

A.模板參數(shù)可以是1個(gè)或多個(gè)

B.通常每個(gè)模板參數(shù)前必須加class

C.模板參數(shù)是一個(gè)算術(shù)表達(dá)式

D.模板參數(shù)是參數(shù)化的類型

18.下列關(guān)于函數(shù)模板和模板函數(shù)的描述中,錯(cuò)誤的是(D)

A.函數(shù)模板是一組函數(shù)的樣板

B.函數(shù)模板是定義重載函數(shù)的一種工具

C.模板函數(shù)是函數(shù)模板的一個(gè)實(shí)例

D.模板函數(shù)在編譯時(shí)不生成可執(zhí)行代碼

解析:模板函數(shù)是函數(shù)模板的實(shí)例,是根據(jù)函數(shù)模板生成的可執(zhí)行的函數(shù),在編譯

時(shí)會(huì)生成可執(zhí)行代碼。函數(shù)模板是函數(shù)的樣板,因?yàn)閰?shù)的類型沒(méi)有確定,必須在

實(shí)例化之后才能執(zhí)行,所以不參與編譯。

19.已知函數(shù)模板定義如下:

template<classT>

Tmin(Tx,Ty)

(

returnx<y?x:y;

)

在下列描述中,錯(cuò)誤的是(C)

A.該函數(shù)模板有一個(gè)模板參數(shù)

B.該函數(shù)模板生成的模板函數(shù)中,參數(shù)和返回值的類型必須相同

C.該函數(shù)模板生成的模板函數(shù)中,參數(shù)和返回值的類型可以不同

D.T類型所允許的類型范圍應(yīng)對(duì)運(yùn)算符大于⑶操作有意義

解析:函數(shù)模板定義了返回值和參數(shù)類型都是T類型,如果在函數(shù)模板實(shí)例化時(shí),T

被替換為int,那么參數(shù)類型和返回值類型都是int,其他基本類型同理。

20.在上述19題所定義的函數(shù)模板中,所生成的下列模板函數(shù)錯(cuò)誤的是(D)

A.intmin(int,int)

B.charmin(char/char)

C.doublemindoubledouble)

D.doublemin(double,int)

解析:函數(shù)模板定義了返回值和參數(shù)類型都是T類型,如果在函數(shù)模板實(shí)例化時(shí),T

被替換為int,那么參數(shù)類型和返回值類型都是int,其他基本類型同理。

二、判斷題

1.在C++語(yǔ)言中,定義函數(shù)時(shí)必須給出函數(shù)的類型(V)

解析:只有在定義函數(shù)模板時(shí)才不用指出具體類型。

2.C++語(yǔ)言中,說(shuō)明函數(shù)時(shí)要用函數(shù)原型,即定義函數(shù)時(shí)的函數(shù)頭部分(V)

解析:C++語(yǔ)言中,說(shuō)明函數(shù)時(shí)使用的函數(shù)頭必須和函數(shù)定義中的函數(shù)頭一致。

3.在C++語(yǔ)言中,所有函數(shù)在調(diào)用前都要說(shuō)明(X)

解析:在調(diào)用前定義的函數(shù)不用說(shuō)明。

4.如果一個(gè)函數(shù)沒(méi)有返回值,定義時(shí)需用void說(shuō)明(V)

5.在C++語(yǔ)言中,傳址調(diào)用可以被引用調(diào)用所替代(V)

解析:傳址調(diào)用把實(shí)參地址傳遞給形參,引用調(diào)用相當(dāng)于給實(shí)參取了一個(gè)別名,在

傳入的函數(shù)中操作,二者都會(huì)改變實(shí)參,所以可以相互替代。

6.使用內(nèi)聯(lián)函數(shù)是以犧牲增大空間開(kāi)銷為代價(jià)的(V)

解析:編譯器把調(diào)用內(nèi)聯(lián)函數(shù)的地方替換為內(nèi)聯(lián)函數(shù)函數(shù)體,增大了代碼量。

7.返回值類型、參數(shù)個(gè)數(shù)和類型都相同的函數(shù)也可以重載(X)

8.設(shè)置了參數(shù)默認(rèn)值后,調(diào)用函數(shù)的對(duì)應(yīng)實(shí)參就必須省略。(X)

解析:如果在調(diào)用時(shí)沒(méi)有傳入實(shí)參,則函數(shù)將使用默認(rèn)值,省略實(shí)參不是必須的。

9.計(jì)算函數(shù)參數(shù)順序引起的二義性完全是由不同的編譯系統(tǒng)決定的。(X)

解析:還與使用的運(yùn)算符有關(guān),比如++

lO.for循環(huán)中,循環(huán)變量的作用域是在該循環(huán)的循環(huán)體內(nèi)。(X)

解析:在循環(huán)控制和循環(huán)體中都有效。

11.語(yǔ)句標(biāo)號(hào)的作用域是在定義該語(yǔ)句標(biāo)號(hào)的文件內(nèi)。(X)

解析:語(yǔ)句標(biāo)號(hào)的作用域?yàn)楹瘮?shù)級(jí)。

12.函數(shù)形參的作用域是在該函數(shù)的函數(shù)體內(nèi)(V)

13.定義外部變量時(shí),不用存儲(chǔ)類說(shuō)明符extern,而說(shuō)明外部變量時(shí)用它(V)

14.內(nèi)部靜態(tài)類變量與自動(dòng)類變量作用域相同,但是生存期不同。(V)

解析:內(nèi)部靜態(tài)變量和自動(dòng)類型的作用域都是函數(shù)級(jí),但是內(nèi)部靜態(tài)變量在作用域

外雖然不可見(jiàn),但是依然存在,沒(méi)有被釋放,一旦回到作用域,仍然保留原來(lái)的值,

但是自動(dòng)類會(huì)被釋放。

15.靜態(tài)生存期的標(biāo)識(shí)符的壽命是短的,而動(dòng)態(tài)生存期標(biāo)識(shí)符的壽命是長(zhǎng)的。(X)

解析:靜態(tài)變量在作用域之外雖然不可見(jiàn),但是仍然存在,動(dòng)態(tài)變量在作用域之外

將會(huì)被釋放。

16.重新定義的標(biāo)識(shí)符在定義它的區(qū)域內(nèi)是可見(jiàn)的,而與其同名的原標(biāo)識(shí)符在此

區(qū)域內(nèi)是不可見(jiàn)的,但是,它是存在的。(V)

解析:在某個(gè)作用范圍內(nèi)定義的標(biāo)識(shí)符在該范圍內(nèi)的子范圍內(nèi)可以重新定義該標(biāo)識(shí)

符,這是原標(biāo)識(shí)符在該子范圍內(nèi)不可見(jiàn),但是依然存在。

17.靜態(tài)類標(biāo)識(shí)符在它的作用域之外是不存在的。(X)

解析:靜態(tài)變量在作用域之外雖然不可見(jiàn),但是仍然存在

18.所有的函數(shù)在定義它的程序中都是可見(jiàn)的。(X)

解析:外部函數(shù)的作用域是程序級(jí)的,在整個(gè)函數(shù)都可見(jiàn),內(nèi)部函數(shù)的作用域是文

件級(jí),在定義它的文件內(nèi)可見(jiàn)。

19.編譯系統(tǒng)所提供的系統(tǒng)函數(shù)都被定義在它所對(duì)應(yīng)的頭文件中。(V)

20.調(diào)用系統(tǒng)函數(shù)時(shí),要先將該系統(tǒng)函數(shù)的原型說(shuō)明所在的頭文件包含進(jìn)去。(V)

21.C++語(yǔ)言中模板分為函數(shù)模板和類模板兩種。(V)

22.函數(shù)模板中模板參數(shù)可用任何一種類型替換。(X)

解析:函數(shù)模板參數(shù)類型有范圍,它必須對(duì)函數(shù)模板中使用的運(yùn)算符有效,比如:+,

-1%等。

23.一個(gè)函數(shù)模板只生成一個(gè)模板函數(shù)。(X)

解析:一個(gè)函數(shù)模板可以實(shí)例化得到多個(gè)模板函數(shù)。

24.函數(shù)模板中模板參數(shù)只能有一個(gè)。(X)

25.函數(shù)模板在編譯時(shí)不生成可執(zhí)行代碼。(V)

解析:函數(shù)模板中的參數(shù)類型是不確定,因此是不能直接執(zhí)行的,必須實(shí)例化為模

板函數(shù)才能執(zhí)行。

第五章類和對(duì)象(一)

1.選擇填空。

⑴在下列關(guān)鍵字中,用以說(shuō)明類中公有成員的是(A)。

A.public

B.private

C.protected

D.friend

解析:B,私有;C,保護(hù);D,友兀

(2)下列的各類函數(shù)中,(C)不是類的成員函數(shù)。

A.構(gòu)造函數(shù)

B.析構(gòu)函數(shù)

C.友元函數(shù)

D.復(fù)制構(gòu)造函數(shù)

解析:友元函數(shù)是外部函數(shù),但是可以訪問(wèn)類的私有成員和其它成員。

⑶作用域運(yùn)算符的功能是(D)

A.標(biāo)識(shí)作用域的級(jí)別

B.指出作用域的范圍

C.給定作用域的大小

D.標(biāo)識(shí)某個(gè)成員是屬于哪個(gè)類的

解析:作用域運(yùn)算符(::)用于表示某個(gè)類的成員。

⑷下列不是成員函數(shù)的是(B)

A.構(gòu)造函數(shù)

B.友元函數(shù)

C.析構(gòu)函數(shù)

D.類型轉(zhuǎn)換函數(shù)

解析:友元函數(shù)是外部函數(shù),但是可以訪問(wèn)類的私有成員和其它成員。

⑸(D)不是構(gòu)造函數(shù)的特征

A.構(gòu)造函數(shù)的函數(shù)名與類名相同

B.構(gòu)造函數(shù)可以重載

C.構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù)

D.構(gòu)造函數(shù)必須指定類型說(shuō)明

解析:構(gòu)造函數(shù)的類型由系統(tǒng)指定,不能顯式指定。

(6)(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ù)

解析:B,析構(gòu)函數(shù)名與類名相同,并在前面加上取反符號(hào)(~)。C,析構(gòu)函數(shù)可以在

類體內(nèi)聲明,在類體外定義;D,析構(gòu)函數(shù)沒(méi)有參數(shù)。

⑺通常復(fù)制構(gòu)造函數(shù)的參數(shù)是(C)o

A.某個(gè)對(duì)象名

B.某個(gè)對(duì)象的成員名

C.某個(gè)對(duì)象的引用名

D.某個(gè)對(duì)象的指針名

解析:復(fù)制構(gòu)造函數(shù)的功能是用一個(gè)已存在的對(duì)象創(chuàng)造新對(duì)象,傳入的參數(shù)是一個(gè)

對(duì)象的引用。

⑻下面關(guān)于成員函數(shù)特征的措述中,(A)是錯(cuò)誤的。

A.成員函數(shù)一定是內(nèi)聯(lián)函數(shù)

B.成員函數(shù)可以重載

C.成員函數(shù)可以設(shè)置參數(shù)的默認(rèn)值

D.成員函數(shù)可以是靜態(tài)的

解析:在類體內(nèi)定義的成員函數(shù)是內(nèi)聯(lián)函數(shù),在類體內(nèi)說(shuō)明在類體外定義的函數(shù)是

外聯(lián)函數(shù)。

(9)下述靜態(tài)數(shù)據(jù)成員的特性中,(D)是錯(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ì)象共用的

解析:某個(gè)類的靜態(tài)數(shù)據(jù)成員是該類的所有對(duì)象共享的。

(10)友元的作用是(A)。

A.提高程序的運(yùn)用效率

B.加強(qiáng)類的封裝性

C.實(shí)現(xiàn)數(shù)據(jù)的隱藏性

D.增加成員函數(shù)的種類

解析:友元不是類的成員,但是它可以訪問(wèn)類的私有成員,友元的作用在于提高程

序的運(yùn)行效率,但是它破壞了類的封裝性。

2-判斷下列描述的正確性,對(duì)者劃錯(cuò)者劃X。

⑴使用關(guān)鍵字class定義的類中默認(rèn)的訪問(wèn)權(quán)限是私有(private)的。(V)

⑵作用域運(yùn)算符(::)只能用來(lái)限定成員函數(shù)所屬的類。(X)

解析:還可以用來(lái)限定成員變量所屬的類。

(3)析構(gòu)函數(shù)是一種函數(shù)體為空的成員函數(shù)。(義)

解析:析構(gòu)函數(shù)不用顯式定義,但是可以重寫,函數(shù)體不一定為空,多數(shù)情況下為

空。

⑷構(gòu)造函數(shù)和析構(gòu)函數(shù)都不能重載。(X)

解析:構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)不可以重載但是可以重寫。

⑸說(shuō)明或定義對(duì)象時(shí),類名前面不需要加class關(guān)鍵字。(J)

解析:class關(guān)鍵字只在定義類的時(shí)候才加。

⑹對(duì)象成員的表示與結(jié)構(gòu)變量成員的表示相同,使用運(yùn)算符.或->。(J)

⑺所謂私有成員是指只有類中所提供的成員函數(shù)才能直接使用它們,任何類以外的

函數(shù)對(duì)它們的訪問(wèn)都是非法的。(X)

解析:私有成員不僅可以被成員函數(shù)訪問(wèn),還可以被友元訪問(wèn),不屬于這兩種類型

的函數(shù)對(duì)私有變量的訪問(wèn)是非法的。

⑻某類中的友元類的所有成員函數(shù)可以存取或修改該類中的私有成員。(V)

解析:友元可以訪問(wèn)類中的私有成員,因而它的成員函數(shù)也可以。

(9)可以在類的構(gòu)造函數(shù)中對(duì)靜態(tài)數(shù)據(jù)成員進(jìn)行初始化。(X)

(10)函數(shù)的定義不可嵌套,類的定義可以嵌套。(J)

解析:類可以定義內(nèi)部類,所以類的定義可以嵌套。

第六章類和對(duì)象(二)

1.選擇填空

⑴已知一個(gè)類A,(C)是指向類A成員函數(shù)的指針。假設(shè)類有三個(gè)公有成員:void

fl(int),voidf2(int)和inta。

A.A*p

B.intA::*pc=&A::a

C.void(A::*pa)(int)

D.A*pp

解析:A選項(xiàng),對(duì)象指針;B選項(xiàng),成員變量指針;D選項(xiàng),對(duì)象指針;

(2)運(yùn)算符->*的功能是(A)o

A.使用對(duì)象指針通過(guò)指向成員的指針表示成員的運(yùn)算符

B.使用對(duì)象通過(guò)指向成員的指針表示成員的運(yùn)算符

C.用來(lái)表示指向?qū)ο笾羔樀某蓡T的運(yùn)算符

D.用來(lái)表示對(duì)象的成員的運(yùn)算符

解析:B選項(xiàng)為(.*);C選項(xiàng)為(->);D選項(xiàng)(.)

(3)已知fl(int)是類A的公有成員函數(shù),p是指向成員函數(shù)皿)的指針,采用(B)是正確

的。

A.p=fl

B.p=A::fl

C.p=A::fl()

D.p=fl()

⑷已知:p是一個(gè)指向類A數(shù)據(jù)成員m的指針,Al是類A的一個(gè)對(duì)象,

如果要給m賦值為5,(C)是正確的。

A.Al.p=5

B.Al->p=5

C.Al.*p=5

D.*Al.p=5

解析:給m賦值需要使用對(duì)象通過(guò)指向類成員的指針來(lái)操作該類對(duì)象成員,因此選擇C

⑸已知:類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ù)

⑹下列關(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ù)組只能賦初值,而不能被賦值

解析:對(duì)象數(shù)組可以賦初值,也可以再次賦值,但是只能使川同一個(gè)類的對(duì)象賦值。

⑺下列定義中,(B)是定義指向數(shù)組的指針P。

A.int*p|:5]

B.int(*p)⑸

C.(int*)p[5]

D.int*p[]

解析:A選項(xiàng)是指針數(shù)組,有5個(gè)元素;C選項(xiàng)語(yǔ)法錯(cuò)誤;D是指針數(shù)組。

⑻下列說(shuō)明中

constchar*ptr;

ptr應(yīng)該是(AC)O

A.指向字符常量的指針

B.指向字符的常量指針

C.指向字符串常量的指針

D.指向字符串的常量指針

(9)已知:print。函數(shù)是一個(gè)類的常成員函數(shù),它無(wú)返回值,下列表示中,(A)是正確

的。

A.voidprint()const

B.constvoidprint()

D.voidprint(const)

C.voidconstprint()

(10)關(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í)必須指定初始值

解析:使用new<類名〉口創(chuàng)建對(duì)象數(shù)組可以不指定初始值,使用new口創(chuàng)建對(duì)象數(shù)組時(shí)不能進(jìn)行

初始化。

(11)關(guān)于delete運(yùn)算符的下列描述中,(C)是錯(cuò)誤的。

A.它必須用于new返回的指針

B.它也適用于空指針

C.對(duì)一個(gè)指針可以使用多次該運(yùn)算符

D.指針名前只用一對(duì)方括號(hào)符,不考慮所刪除數(shù)組的維數(shù)

解析:對(duì)一個(gè)指針只能進(jìn)行一次delete操作。

(12)具有類型轉(zhuǎn)換功能的構(gòu)造函數(shù)應(yīng)該是(B)。

A.不帶參數(shù)的構(gòu)造的數(shù)

B.帶有一個(gè)參數(shù)的構(gòu)造函數(shù)

C.帶有兩個(gè)以上參數(shù)的構(gòu)造函數(shù)

D.默認(rèn)構(gòu)造函數(shù)

解析:?jiǎn)蝹€(gè)參數(shù)的構(gòu)造函數(shù)提供了類型轉(zhuǎn)換功能。

(13)下列關(guān)于類模板的描述中錯(cuò)誤的是(C)

A.類模板的成員函數(shù)可以是函數(shù)模板

B.類模板生成模板類時(shí),必須指定參數(shù)化的類型所代表的具體類型

C.定義類模板時(shí)只允許有一個(gè)模板參數(shù)

D.類模板所描述的是一組類

解析:至少要有一個(gè)模板參數(shù),可以有多個(gè)模板參數(shù)

2.判斷下列描述是否正確,對(duì)者劃J、錯(cuò)者劃X。

⑴指向?qū)ο蟮闹羔樅椭赶蝾惖某蓡T的指針在表示形式上是不相同的。(J)

解析:指向類的成員指針表示形式intA::*pl=&A::c:指向?qū)ο蟮闹羔槺硎拘问綖锳*p2=&a;

(2)已知:m是類A的對(duì)象,n是類A的公有數(shù)據(jù)成員,p是指向類A中n成員的指

針。下述兩種表示是等價(jià)的:m.n和m.*p。(V)

解析:前一種通過(guò)對(duì)象引用成員變量,后一種通過(guò)對(duì)象使用指向成員變量的指針進(jìn)行引用,二

者代表的都是同一個(gè)量。

⑶指向?qū)ο蟮闹羔樑c對(duì)象都可以作為函數(shù)參數(shù),但是使用前者比后者好些。(J)

解析:使用對(duì)象的指針作為函數(shù)參數(shù)是傳址調(diào)用,不需要對(duì)對(duì)象進(jìn)行拷貝,使用對(duì)象作為參數(shù)

是傳值調(diào)用,需要對(duì)傳入的對(duì)象進(jìn)行一次拷貝,空間開(kāi)銷增大,程序性能下降,因此使用對(duì)象

指針好一些。

(4)對(duì)象引用作為函數(shù)參數(shù)比用對(duì)象指針更方便些。(J)

解析:使用對(duì)象引用具有對(duì)象指針的優(yōu)點(diǎn),同時(shí)比對(duì)象指針使用方式更簡(jiǎn)潔。

⑸對(duì)象數(shù)組的元素可以是不同類的對(duì)象。(X)

解析:對(duì)象數(shù)組的元素只能是同一個(gè)類的對(duì)象。

(6)對(duì)象數(shù)組既可以賦初值又可以賦值。(J)

⑺指向?qū)ο髷?shù)組的指針不一定必須指向數(shù)組的首元素。(J)

⑻一維對(duì)象指針數(shù)組的每個(gè)元素應(yīng)該是某個(gè)類的對(duì)象的地址值。(J)

解析:對(duì)象指針數(shù)組是指針數(shù)組,每個(gè)元素都是對(duì)象的指針。

(9)constchar*p說(shuō)明了p是指向字符串的常量指針。(X)

解析:不一定是指向字符串的,也可能是指向字符的,指向字符串的常指針應(yīng)該這樣聲明

constchar*p="string”

(10)一個(gè)能夠更新的變量使用在一個(gè)不能被更新的環(huán)境中是不破壞類型保護(hù)的,反

之亦然。(義)

解析:常對(duì)象必須使用常成員函數(shù),不能使用非常成員函數(shù);非常對(duì)象可以使用常成員函數(shù),

也可以使用非常成員函數(shù)。

(11)一個(gè)類的構(gòu)造函數(shù)中可以不包含對(duì)其子對(duì)象的初始化。(X)

解析:在類中出現(xiàn)了子對(duì)象時(shí),該類的構(gòu)造函數(shù)要包含對(duì)了對(duì)象的初始化。

(12)類型轉(zhuǎn)換函數(shù)不是成員函數(shù),它是用來(lái)進(jìn)行強(qiáng)制類型轉(zhuǎn)換的。(X)

解析:類型轉(zhuǎn)換函數(shù)是用戶定義的成員函數(shù)。

(13)使用模板可以減少重復(fù)勞動(dòng),提高代碼重用率。(J)

(14)C++語(yǔ)言中模板分為函數(shù)模板和類模板兩種。(J)

(15)類模板可以生成若干個(gè)模板類,每個(gè)模板類又可定義若干個(gè)對(duì)象。(J)

第七章繼承性和派生類

1.選擇填空

⑴下列對(duì)派生類的描述中,(D)是錯(cuò)的。

A.一個(gè)派生類可以作另一個(gè)派生類的基類

B.派生類至少有一個(gè)基類

C.派生類的成員除了它自己的成員外,還包含了它的基類的成員

D.派生類中繼承的基類成員的訪問(wèn)權(quán)限到派生類保持不變

解析:公有繼承時(shí),基類的的公有和保護(hù)成員作為派生類的成員時(shí),保持原有的訪問(wèn)權(quán)限,基

類的私有成員在派生類中不可見(jiàn);私有繼承時(shí),基類的公有和保護(hù)成員都變?yōu)榕缮惖乃接谐?/p>

員,并且不能被這個(gè)派生類的子類訪問(wèn);保護(hù)繼承時(shí),基類的公有和保護(hù)成員都稱為派生類的

保護(hù)成員,并且不能被派生類的對(duì)象訪問(wèn)。

⑵派生類的對(duì)象對(duì)它的基類成員中(A)是可以訪問(wèn)的。

A.公有繼承的公有成員

B.公有繼承的私有成員

C.公有繼承的保護(hù)成員

D.私有繼承的公有成員

解析:派生類的對(duì)象只可以訪問(wèn)公有繼承方式下基類中的公有成員。

⑶派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含(C)。

A.基類的構(gòu)造函數(shù)

B.派生類中子對(duì)象的初始化

C.派生類中靜態(tài)數(shù)據(jù)成員的初始化

D.派生類中一般數(shù)據(jù)成員的初始化

解析:靜態(tài)數(shù)據(jù)成員的初始化應(yīng)在類體外進(jìn)行。派生類的構(gòu)造函數(shù)負(fù)責(zé)對(duì)基類、子對(duì)象和一般

數(shù)據(jù)成員初始化。

⑷關(guān)于子類型的描述中,(A)是錯(cuò)的。

A.子類型就是指派生類是基類的子類型

B一種類型當(dāng)它至少提供了另一種類型的行為,則這種類型是另一種類

型的子類型

C.在公有繼承下,派生類是基類的子類型

D.子類型關(guān)系是不可逆的

⑸下列關(guān)于賦值兼容規(guī)則的描述中,錯(cuò)誤的是(B)

A.賦值兼容規(guī)則在子類型情況下才可使用

B.公有繼承下,派生類對(duì)象不可給基類對(duì)象賦值

C.公有繼承下,派生類對(duì)象可對(duì)基類對(duì)象引用進(jìn)行初始化

D.公有繼承下.派生類對(duì)象的地址值可以賦值給基類的對(duì)象指針

解析:公有繼承下,派生類是基類的子類型,可以賦值給基類對(duì)象,這是派生類只發(fā)揮基類的

作用。

(6)關(guān)于多繼承二義性的描述中,(C)是錯(cuò)的。

A.一個(gè)派生類的兩個(gè)基類中都有某個(gè)同名成員,在派生類中對(duì)這個(gè)成員

的訪問(wèn)可能出現(xiàn)二義性

B.解決二義性的最常用的方法是用成員名的限定法

C.基類和派生類中同時(shí)出現(xiàn)的同名函數(shù),也存在二義性問(wèn)題

D.一個(gè)派生類是從兩個(gè)基類派生來(lái)的,而這兩個(gè)基類又有一個(gè)公共的基

類,對(duì)該基類成員進(jìn)行訪問(wèn)時(shí),也可能出現(xiàn)二義性。

解析:基類和派生類中同時(shí)出現(xiàn)的同名函數(shù)時(shí),派生類的函數(shù)將覆蓋基類的函數(shù)。

⑺設(shè)置虛基類的目的是(B)。

A.簡(jiǎn)化程序

B.消除二義性

C.提高運(yùn)行效率

D.減少目標(biāo)代碼

解析:引入虛基類的真正目的之一是消除二義性問(wèn)題。

⑻在帶有虛基類的多層派生類構(gòu)造函數(shù)的成員初始化列表中都要列出

基類的構(gòu)造函數(shù),這樣將對(duì)虛基類的子對(duì)象初始化(D)。

A.與虛基類下面的派生類個(gè)數(shù)有關(guān)

B.多次

C.二次

D.一次

解析:對(duì)于虛基類來(lái)說(shuō),派生類的對(duì)象中只有一個(gè)虛基類子對(duì)象。規(guī)定在建立對(duì)象時(shí)指定的類

為最派生類,虛基類子對(duì)象由最派生類的構(gòu)造函數(shù)通過(guò)調(diào)用虛基類的構(gòu)造函數(shù)初始化,而該派

生類的直接基類的中對(duì)虛基類構(gòu)造函數(shù)的調(diào)用被忽略,保證了虛基類的子對(duì)象只被初始化一

次。

2.判斷下列描述的正確性,對(duì)者劃J,錯(cuò)者劃Xo

⑴C++語(yǔ)言中,既允許單繼承,又允許多繼承。(J)

⑵派生類是從基類派生出米,它不能再生成新的派生類。(X)

解析:派生類可以作為基類派生出其他類。

⑶派生類的繼承方式有兩種:公有繼承和私有繼承。(X)

解析:派生類的繼承方式有三種:公有繼承、私有繼承和保護(hù)繼承。

⑷在公有繼承中,基類中的公有成

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論