




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C++呂鳳翥(第三版)課后習(xí)題答案
第一章C++語言概述
一、選擇題
1.下列各種高級語言中,(C)是面向?qū)ο蟮某绦蛟O(shè)計語言。
ABASIC;BPASCAL;C.C++;D.C
2.下列各種高級語言中,(B)最早提出了對象的概念。
A.Algol60;B.Simula67;C.Smalltalk;D.C++
解析:面向?qū)ο笳Z言借鑒了20世紀(jì)50年代的人工智能語言LISP,引入
了動態(tài)綁定的概念和交互式開發(fā)環(huán)境的思想;始于20世紀(jì)60年代的離
散事件模擬語言SIMULA67,引入了類的要領(lǐng)和繼承,成形于20世紀(jì)70
年代的Smalltalko
3.下述面向?qū)ο蟪橄蟮脑碇?(D)是不對的。
A.數(shù)據(jù)抽象;B.行為共享;C.進(jìn)化;D.兼容
解析:面向?qū)ο蟪橄笤硎欠庋b,繼承和多態(tài)。封裝指將數(shù)據(jù)和方法封
裝在類中(數(shù)據(jù)抽象),繼承是子類可以繼承父類的數(shù)據(jù)和方法(行為
共享),多態(tài)是子類可以定義自己的方法,實現(xiàn)父類不能實現(xiàn)的行為(進(jìn)
化)。所以選D。
4.(A)不是面向?qū)ο笙到y(tǒng)所包含的要素。
A.重載;B.對象;C.類;D繼承;
解析:面向?qū)ο笕兀悍庋b、繼承和多態(tài),對象是類的實現(xiàn),只有面
向?qū)ο蟛糯嬖冢剌d是利用名稱之外的標(biāo)志(比如形參)作為區(qū)分以實
現(xiàn)名稱復(fù)用。
5.關(guān)于C++與C語言的關(guān)系的描述中,(D)是錯誤的
A.C語言是C++的一個子集;
B.C語言與C++是兼容的;
C.C++是C語言進(jìn)行了一些改進(jìn);
D.C++和C語言都是面向?qū)ο蟮?/p>
解析:c語言是面向過程的語言。
6.下面關(guān)于對象概念的描述,(A)是錯誤的
A.對象就是C語言中的結(jié)構(gòu)變量;
B.對象代表著正在創(chuàng)建的系統(tǒng)中的一個實體
C.對象是一個狀態(tài)和操作(方法)的封裝體
D.對象之間的信息傳遞是通過消息進(jìn)行的
解析:對象中不止封裝了數(shù)據(jù),還封裝了方法(操作),C語言中的結(jié)
構(gòu)變量只封裝了數(shù)據(jù)。
7.下面關(guān)于類概念的描述中,(D)是錯誤的
A.類是抽象數(shù)據(jù)類型的實現(xiàn)
B.是具有共同行為的若干對象的統(tǒng)一描述體
C.類是創(chuàng)建對象的樣板
D.類就是C語言中的結(jié)構(gòu)類型
解析:類是對一系列具有相同行為對象的抽象,因此類不僅封裝了數(shù)據(jù),
還封裝了方法(即使是抽象方法),而C語言中的結(jié)構(gòu)類型只封裝了數(shù)
據(jù)。
8.C++對C語言作了很多改進(jìn),下列描述中(D)使得C語言發(fā)生了質(zhì)變,
即從面向過程變成為面向?qū)ο?/p>
A.增加了一些新的運(yùn)算符
B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)
C.規(guī)定函數(shù)說明必須用原型
D.引進(jìn)了類和對象的概念
解析:面向?qū)ο蟮囊淮竺黠@特征就是具有類和對象。
9.按照標(biāo)識符的要求,(A)符號不能組成標(biāo)識符
A.連接符;B.下劃線;C.大小寫字母;D.數(shù)字字符;
解析:按照C++語法規(guī)定,標(biāo)識符只能由數(shù)字、字母和下劃線組成,并
且只能以字母或下劃線開頭。
10.下列符號中,(D)不可作為分隔符(還有一種可能答案為C)
A.,;B.:;C.?;D.;;
解析:逗號運(yùn)算符可以將多個表達(dá)式組合成一個表達(dá)式,整個表達(dá)式的
值由最后一個表達(dá)式?jīng)Q定,示例:dl,d2,d3o
冒號(:)和問號(?)是三目運(yùn)算符,在三目運(yùn)算符中分隔表達(dá)式,示
例:dl?al:a20
分號(;)作為語句的結(jié)束標(biāo)志,只能在語句末尾使用,用在語句中間會
把一個語句分為兩個語句,所以分號(;)不能作為分隔符使用。
二、判斷題
1.C++引進(jìn)了引用的概念,對編程帶來了很多方便。(V)
2.C++允許使用友元,但是友元會破壞封裝性。(V)
3.c++中使用了新的注釋符(〃),c語言中注釋符(/*.....*/)不能在c+中使用(X)
4.C++中為了減輕使用者的負(fù)擔(dān),與c語言相比較C++中減少了一些運(yùn)算符。
(X)
解析:增加了一些運(yùn)算符,比如強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,示例int(a),將
a強(qiáng)制轉(zhuǎn)換為整形。
5.C++程序中,每條語句結(jié)束時都加一個分號(力。(J)
6.C++中標(biāo)識符內(nèi)的大小寫字母是沒有區(qū)別的。(X)
7.C++中不允許使用宏定義的方法定義符號常量,只能用關(guān)鍵字const來定義符號
常量。(X)
解析:推薦使用const關(guān)鍵字,因為const關(guān)鍵字定義的常量受到編譯
器的保護(hù)和檢查,不允許修改,安全性更高,使用宏定義定義時,因為
宏定義只做簡單的替換,不檢查語法和進(jìn)行保護(hù),安全性不好。
8.在編寫C++程序時,一定要注意采用人們習(xí)慣使用的書寫格式,否則將會降低其可
讀性。(V)
9.C++是一種以編譯方式實現(xiàn)的高級語言。(V)
10.在C++編譯過程中,包含預(yù)處理過程、編譯過程和連接過程,并且這三個過程的
順序是不能改變的。(V)
解析:因為宏定義的量編譯器是無法直接識別的,必須由預(yù)處理程序進(jìn)
行替換,在宏定義中還引入了一些頭文件,需要在預(yù)處理時引入,所以
預(yù)處理必須在編譯之前進(jìn)行。預(yù)處理結(jié)束之后,需要對源程序進(jìn)行詞法
和語義分析,檢查是否存在語法錯誤。連接過程是不能直接使用源碼文
件的,必須使用編譯過程產(chǎn)生的對象文件。對象文件還缺少必要的C++
庫,或者這些文件分散在不同的地方,因此還需要把它們連接起來并生
成可執(zhí)行文件才能運(yùn)行程序。
11.預(yù)處理過程是一般編譯過程之后連接過程之前進(jìn)行的。(X)
解析:編譯順序是預(yù)處理過程f編譯過程f連接過程,不可改變。
12.源程序在編譯過程中可能會出現(xiàn)一些錯誤信息,但在連接過程中將不會出現(xiàn)錯
誤信息。(X)
解析:連接過程需要把一個程序的多個源文件或者把對象文件和庫文件
連接在一起,在這個過程中可能會出現(xiàn)文件路徑出錯,庫文件缺失等錯
誤。
第二章數(shù)據(jù)類型和表達(dá)式
一、選擇題
1.在16位機(jī)中,int型字寬為(A)字節(jié)。
A.2;B.4;C.6;D.8
解析:ANSI標(biāo)準(zhǔn)中int類型長度為4個字節(jié),是在32位機(jī)上定義的,
對于16位機(jī),int類型與32位機(jī)的shortint類型相對應(yīng),長度為2
個字節(jié)。
2.類型修飾符unsigned修飾(D)類型是錯誤的
A.Char;B.int;C.longint;D.float
解析:四種基本數(shù)據(jù)類型修飾符signed、unsigned、long、short都適
用于整型和字符型,long還適用于double型,但是都不適用于float
型。
3.下列十六進(jìn)制的整型數(shù)常數(shù)表示中,(C)是錯誤的
A.Oxaf;B.OXlb:;C.2fx;D.OxAE
解析:16進(jìn)制數(shù)都以O(shè)x或OX開頭。
4.下列double型常量表示中,(A)是錯誤的
A.E15;B..35;C.3E5;D.3E-5
解析:使用E是doube類型的科學(xué)計數(shù)法表示形式,E之前因數(shù)為1時
也不可省略,否則會被編譯器當(dāng)作變量名而引發(fā)語法錯誤。
5.下列字符常量表示中,(C)是錯誤的
A.''105‘;B'*';C.'\4f';D.'\a'
解析:使用‘\'和十六進(jìn)制數(shù)表示轉(zhuǎn)義字符時,必須在十六進(jìn)制數(shù)前面加x:、x4f'
6.下列字符串常量表示中,(無)是錯誤的(都沒錯)
A"\〃yes〃\or\〃No\〃〃;B.0K!\'〃;C.abcd\n〃;;D.〃ABC\O〃
解析:C++,字符串的結(jié)束符會被自動添加,不用手動添加,浪費一個字節(jié)。
7.下列變量名中,(A)是合法的
ACHINA;B.byte-size;C.double;D.A+a
解析:變量名只能由字母、數(shù)字和下劃線組成,且必須以字母開頭,并且不能使用
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"}
解析:因為每個字符串后還有一個結(jié)束符'\0',所以實際使用空間比字符串長度多
一個字節(jié)。B選項沒有預(yù)留、0'空間,數(shù)組溢出。C選項聲明的是多維字符數(shù)組,
應(yīng)該為{{'x'},{'y'),{'z'}}。D選項聲明的也是多維字符數(shù)組,并且沒有預(yù)
留''0'空間,數(shù)組會溢出,應(yīng)為
chars4[2][4]={{“xyz”},{“mnp”}}。
11.在inta=3,*p=&a;中,*P的值是(D)
A.變量a的地址值;B無意義;C.變量P的地址值;D.3
解析:*P中存放了a的地址值,而a中存儲的值為3,所以*p值為3。
12.對于int*pa[5]的描述,(D)是正確的
A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素
B.pa是一個指向某個數(shù)組中第5個元素的指針,該元素是int型變
C.pa5表示某個數(shù)組的第5個元素的值
D.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針
解析:指針數(shù)組聲明為<類型>名稱[長度],示例:int*p[4];數(shù)組指針聲明為
〈類型〉(名稱)[指向數(shù)組的長度],示例:int(*p)[3K
13.下列關(guān)于指針的運(yùn)算中,(D)是非法的。
A.兩個指針在一定條件下,可以進(jìn)行相等或不等的運(yùn)算
B.可以用一個空指針賦值給某個指針
C.一個指針可以加上兩個整數(shù)之差
D.兩個指針在一定條件下,可以相加
解析:指針的值對應(yīng)著內(nèi)存地址,將指針相加得到的數(shù)值可能不是內(nèi)存地址,會引
發(fā)錯誤。指針允許的操作有賦值;與整數(shù)相加減(指針偏移);一定條件下,兩個
指針可以相減,得到指針之間的偏移量;兩個指針之間還可以比較。
14.指針可以用來表示數(shù)組元素,下列表示中(A)是錯誤的。
已知:inta[3][7];
A.*(a+l)[5];B,*(*a+3);C*(*(a+l));D.*(&a[0][0]+2)
解析:使用指針表示數(shù)組元素時,不能同時使用指針偏移和索引來取出數(shù)組元素。
15.下列表示引用的方法中,(A)是正確的。
已知:intm=10;
A.int&x=m;B.int&y=10;C.int&z;D.float&t=&m
解析:引用是某個已知變量或?qū)ο蟮膭e名,引用不是變量,本身沒有值,也沒有地
址(因此不能對它賦值),它不占內(nèi)存空間。引用聲明格式:
(被引用對象類型)&引用名=被引用變量名。
16.下列各運(yùn)算符中,(A)可以作用于浮點數(shù)。
A++;B.%;C.?;D.&
解析:++用于浮點數(shù)和用于整型的效果是一樣的,其他的運(yùn)算符只能用于整數(shù)。
17.下列各運(yùn)算符中,(D)不能作用于浮點數(shù)
A./;B.&&;C.!;D.~
解析:A選項的除法運(yùn)算符可以用于浮點數(shù),B選項是邏輯與,可以用于浮點數(shù)判
斷,C選項是邏輯求反,可以用于浮點數(shù),D選項是按位求反,只能用于整型和字
符型。
18.下列各運(yùn)算符中,(B)優(yōu)先級最高。
A.+(雙目);B.*(單目);C.<=;D.*=
解析:*的優(yōu)先級為2級(取內(nèi)容)或3級(乘法),+的優(yōu)先級為4級,<=和*=的
優(yōu)先級為14級。
19.下列各運(yùn)算符中,(A)優(yōu)先級最低
A.?:;B.|;C.||;D.!=
解析:?:優(yōu)先級為13級,|優(yōu)先級為10級,||優(yōu)先級為12級,!=優(yōu)先級為7級。
20.下列各運(yùn)算符中C)結(jié)合性從左到右
A.三目;B.賦值;C.比較;D.單目
解析:單目,三目和賦值的結(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選項不能將自減運(yùn)算符(-)和負(fù)號一起使,會被編譯器視為無效表達(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選項,double類型不能進(jìn)行移位操作:B選項,m+n為double類型,不能
進(jìn)行按位或操作;C選項,因為取反運(yùn)算符優(yōu)先級大于*=,所以先取反再賦值,經(jīng)
過取反,左邊!m的結(jié)果為0,是一個常數(shù),不能進(jìn)行賦值。
23.下列關(guān)于類型轉(zhuǎn)換的描述中,(A)錯誤的
A.在不同類型操作數(shù)組成的表達(dá)式中,其表達(dá)式類型一定是最高類型
doube型
B.逗號表達(dá)式的類型是最后一個表達(dá)式的類型
C.賦值表達(dá)式的類型是左值的類型
D.在由低向高的類型轉(zhuǎn)換中是保值映射
解析:A選項,在不同類型操作數(shù)組成的表達(dá)式中,所有操作數(shù)都會被轉(zhuǎn)換為最高
類型進(jìn)行運(yùn)算,但不一定是double型。D選項,由低向高的類型轉(zhuǎn)換不會損失精度,
即保值映射。
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)先級最高,++優(yōu)先級為2級,+、-為4級,>>為5級。A選項,根據(jù)優(yōu)
先級先執(zhí)行+再執(zhí)行>>3,結(jié)果為1;B選項根據(jù)優(yōu)先級先執(zhí)行++a,再執(zhí)行a+b,再
執(zhí)行b加1,結(jié)果為12oC選項先賦值a=3,再執(zhí)行a+b,結(jié)果為9;D選項先執(zhí)行
括號中的內(nèi)容,再執(zhí)行-,最后a加1,結(jié)果為1??梢钥吹紻選項的結(jié)果和預(yù)期的
0一致,所以D具有二義性。
25.用來表示指向結(jié)構(gòu)變量指針的成員是(B)運(yùn)算符。
A.?;B.->;C.?;D.?
解析:A是成員選擇符,C是右移位,D是左移位。
26.下列關(guān)于結(jié)構(gòu)數(shù)組的描述中,有幾處錯誤(A)
structab{
inta;
charc;
doublea;
}a,ab;
A.l;B.2;C.3;D.4
解析:結(jié)構(gòu)成員變量定義不能重名,所以共一處錯誤。
27.下列關(guān)于結(jié)構(gòu)數(shù)組的描述中,錯誤的是(A)
A.結(jié)構(gòu)數(shù)組的元素可以是不同結(jié)構(gòu)類型的結(jié)構(gòu)變量
B.結(jié)構(gòu)數(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ù)長度最長的相同。
二、判斷題
1.任何字符常量與一個任意大小的整型數(shù)進(jìn)行加減都是有意義的(X)
解析:字符編碼是有范圍的,超出這個范圍就失去意義。
2.轉(zhuǎn)義序列表示法只能表示字符不能表示數(shù)字(7)
解析:轉(zhuǎn)義序列表示法表示字符常量。
3.在命名標(biāo)識符中,大小寫字母是不加區(qū)別的(X)
4.C++程序中,對變量一定要先說明再使用,說明只要在使用之前就可以(J)
5.C++中數(shù)組元素的下標(biāo)是從0開始,數(shù)組元素是連續(xù)存儲在內(nèi)存單元中的(V)
6.數(shù)組賦初值時,初始值表中的數(shù)據(jù)項的數(shù)目可以大于或等于數(shù)組元素的個數(shù)(X)
7?枚舉變量的取值受到該枚舉變量所對應(yīng)的枚舉表中的枚舉符的局限(V)
8.指針是用來存放某種變量的地址值的變量。這種變量的地址值也可以存放在某個
變量中,存放某個指針的地址值的變量稱為指向指針的指針,即二級指針(V)
9.引用是用來給某個變量以別名的變量。對引用的操作,實質(zhì)上就是對被引用的變量
的操作(J)
10.運(yùn)算符的優(yōu)先級和結(jié)合性可以確定表達(dá)式的計算順序(V)
11.在說明語句中,inta(5),&b=a,*p=&a中,b的值和*p的值是相等的(V)
解析:b是對-a的引用,*p是a的指針,因此二者的值想等。
12.已知:inta⑸,;表達(dá)式(a=7)+a具有二義性。(X)
13.移位運(yùn)算符在移位操作中,無論左移還是右移,所移出的空位一律補(bǔ)0。(X)
解析:右移時左邊移出的空位要么一律補(bǔ)0,要么一律補(bǔ)符號位,這由機(jī)器決定。
14.某個變量的類型高是指該變量被存放在內(nèi)存中的高地址處(X)
解析:類型高是指數(shù)據(jù)長度大。
15.隱含的類型轉(zhuǎn)換都是保值映射,顯式的類型轉(zhuǎn)換都是非保值映射(X)
解析:只有由低類型向高類型轉(zhuǎn)換數(shù)據(jù)精度才不會丟失,才是保值映射,由高類型
向低類型轉(zhuǎn)換都是非保值映射,顯式的類型轉(zhuǎn)換如果在轉(zhuǎn)換時數(shù)據(jù)精度不丟失,也
是保值映射。
16.類型定義可以用來定義一些C++中所沒有的新的類型(X)
解析:只能定義現(xiàn)有類型的別名。通過typedef實現(xiàn)。
17.定義結(jié)構(gòu)變量時必須指出該結(jié)構(gòu)變量是屬于某種結(jié)構(gòu)類型的。(J)
18.無名結(jié)構(gòu)是不允許定義結(jié)構(gòu)變量的(X)
解析:可以,例如:
struct{
inta;
charc;
doubleac;
}ad,ab;
15、同一結(jié)構(gòu)中的不同成員變量占用不同的內(nèi)存單元(V)
16、聯(lián)合的所有成員變量都是沒有內(nèi)存地址的(X)
解析:聯(lián)合的成員變量共用內(nèi)存地址,不是沒有內(nèi)存地址。
第三章預(yù)處理和語句
一、選擇題
L預(yù)處理命令在程序中都是以(B)開頭的。
A.*;B.#;C.:;D/;
2.文件包含命令中被包含的文件的擴(kuò)展名(D)(也可以沒有)
A必須為h;B.不能用h;C必須是c;D.不一定是h
解析:C++中的頭文件都是.h擴(kuò)展名。
3.下列條件編譯命令中
#if(A)
〈語句序列1>
#else
<語句序列2>
Sendif
A整常量表達(dá)式;B任何標(biāo)識符;C任意表達(dá)式;D被定義的宏名;
4.帶參數(shù)的宏定義中,程序中引用宏定義的實參(D)
A只能是常量;B只能是整型量;C只能是整形表達(dá)式;D可以是任意表達(dá)式
5.下列是(A)語句
A.;B.a=17;C.x+y;D.cout?w\nw
解析:語句都是以分號(力結(jié)尾的。
6.下列for循環(huán)的次數(shù)為(B)
for(inti(0),x=0;!x&&i<=5;i++)
A.5;B.6;C.l;D.無限;
7.下列while循環(huán)的次數(shù)是(A)
while(inti=0)i--;
A.O:B.l;C.5;D.無限
解析:先執(zhí)行inti=0后再以i作為循環(huán)判斷條件,因為i始終是0,所以循環(huán)條件始
終不滿足,循環(huán)不會運(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.無限;
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.無限
10.已知:inta力,下列switch語句中,(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;
)
解析:選項A、C,case語句只能使用整常形表達(dá)式,不能使用變量;選項B,表達(dá)
式末尾沒加分號;
11.下述關(guān)于循環(huán)體的描述中,(C)是錯誤的
A.循環(huán)體中可以出現(xiàn)break語句和continue語句;
B.循環(huán)體中還可以出現(xiàn)循環(huán)語句;
C循環(huán)體中不能出現(xiàn)goto語句
D.循環(huán)體中可以出現(xiàn)開關(guān)語句
解析:got。可以出現(xiàn)在程序的任何地方。
12.下述關(guān)于goto語句的描述中,(D)是正確的。
A.goto語句可在一個文件中隨意轉(zhuǎn)向
B.goto語句后面要跟上一個它所轉(zhuǎn)向的語句;
C.goto語句可以同時轉(zhuǎn)向多條語句
D.goto語句可以從一個循環(huán)體內(nèi)轉(zhuǎn)到循環(huán)體外
解析:選項A,C++規(guī)定goto只能在一個函數(shù)體內(nèi)進(jìn)行轉(zhuǎn)向;選項B,goto后面要
跟它所轉(zhuǎn)向的語句標(biāo)號,不是語句;選項C,goto只能轉(zhuǎn)到單條語句。
13.下述關(guān)于break語句的描述中,(C)是不正確的。
A.break語句可用于循環(huán)體內(nèi),它將退出該重循環(huán)
B.break語句可用于開關(guān)語句中,它將退出開關(guān)語句
C.break語句可用于if體內(nèi),它將退出if語句
D.break語句在一個循環(huán)體內(nèi)可以出現(xiàn)多次
解析:break用在開關(guān)語句或者循環(huán)語句內(nèi),用于結(jié)束這些語句,在其他語句中不
起作用。
14.下述關(guān)于開關(guān)語句的描述中,(A)是正確的。
A.開關(guān)語句中default子句可以沒有,也可以有一個
B.開關(guān)語句中每個語句序列中必須有break語句
C.開關(guān)語句中default子句只能放在最后
D.開關(guān)語句中case子句后面的表達(dá)式可以是整形表達(dá)式
解析:選項B,break可以有,也可以沒有,沒有的話執(zhí)行所有滿足條件的語句;選
項C,default可以放在任何位置;case子句后面的表達(dá)式必須是整常型表達(dá)式。
15.下列關(guān)于條件語句的描述中,(C)是錯誤的
A.if語句中只有一個else子句
B.if語句中可以有多個elseif子句
C.if語句中if體內(nèi)不能是開關(guān)語句
D.if語句中的if體中可以是循環(huán)語句
二、判斷題
1.預(yù)處理命令是在進(jìn)行編譯時首先執(zhí)行的,然后再進(jìn)行正常編譯(V)
2.宏定義命令是以分號結(jié)束的(X)
3.帶參數(shù)的宏定義只能有1至2個參數(shù)(X)
4.文件包含命令所包含的文件是不受限制的(X)
解析:一條文件包含語句只能引入一個文件。
5.條件編譯命令只在編譯時才有作用(V)
6.預(yù)處理命令的主要作用是提高效率(X)
解析:使用預(yù)處理命令可以使程序書寫更簡練,清晰
7.復(fù)合語句就是分程序(X)
解析:含有一條或多條說明語句的復(fù)合語句稱為分程序。
8.條件語句不能作為多路分支語(X)
解析:ifelse語句嵌套使用也可以實現(xiàn)多路分支
9.開關(guān)語句不可以嵌套,在開關(guān)語句的語句序列中不能再有開關(guān)語句(X)
10.開關(guān)語句中的default關(guān)鍵字,只能放在該語句的未尾,不能放在開頭或中間
(X)
解析:default可以放在任何位置。
11.switch語句中必須有break語句,否則無法退出switch語句(X)
解析:switch語句的}代表語句結(jié)束,可以退出語句。
12.while循環(huán)語句的循環(huán)體至少執(zhí)行一次(X)
13.do-while循環(huán)可以寫成while循環(huán)的格式(,)
14.for循環(huán)是只有可以確定的循環(huán)次數(shù)時才可使用,否則不能用for循環(huán)(X)
解析:循環(huán)次數(shù)不確定時,可以使用break退出for循環(huán)
15.只有for循環(huán)的循環(huán)體可以是空語句,其他種循環(huán)的循環(huán)體不能用空語句(X)
解析:都可以為空。
16.當(dāng)循環(huán)體為空語句時,將說明該循環(huán)不作任何工作,只起延時作用(X)
17.循環(huán)是可以嵌套的,循環(huán)體內(nèi)可以包含另一種循環(huán)語句(V)
18.在多重循環(huán)中,內(nèi)重循環(huán)的循環(huán)變量應(yīng)用的次數(shù)比外重的多(V)
19.break語句可以出現(xiàn)在各種循環(huán)體中(V)
20.continue語句只能出現(xiàn)在循環(huán)體內(nèi)(V)
第四章函數(shù)和作用域
一、選擇題
1.當(dāng)一個函數(shù)無返回值時,定義它時函數(shù)的類型應(yīng)是(A)
A.void;B.任意;C.int;D.無
2.在函數(shù)說明時,下列(D)項是不必要的
A函數(shù)的類型;B函數(shù)參數(shù)類型和名字;C函數(shù)名字;D返回值表達(dá)式
解析:函數(shù)說明格式為<類型><函數(shù)名><參數(shù)表>
3.在函數(shù)的返回值類型與返回值表達(dá)式的類型的描述中,(B)是錯誤的
A.函數(shù)的返回值的類型是定義函數(shù)時確定的
B.函數(shù)的返回值的類型就是返回值表達(dá)式的類型
C.函數(shù)的返回值表達(dá)式的類型與函數(shù)返回值類型不同時,表達(dá)式類型應(yīng)轉(zhuǎn)換成函數(shù)
返回值類型
D.函數(shù)的返回值類型決定了返回值表達(dá)式的類型
解析:函數(shù)返回值的類型是在函數(shù)定義時確定的,不會隨返回值表達(dá)式類型改變而
改變。
4.在一個被調(diào)用函數(shù)中,關(guān)于return語句使用的描述,(D)是錯誤的
A.被調(diào)用函數(shù)中可以不用return語句
B.被調(diào)用函數(shù)中可以使用多個return語句
C.被調(diào)用函數(shù)中,如果有返回值,就一定要有return語句
D.被調(diào)用函數(shù)中,一個return語句可返回多個值給調(diào)用函數(shù)
解析:函數(shù)體中可以有多條return語句,大多在if語句中使用,實現(xiàn)按不同條件返
回。一條return只能返回一個值。
5.下列描述(D)是引用調(diào)用
A.形參是指針,實參是地址值
B.形參和實參都是變量;
C.形參是數(shù)組名,實參是數(shù)組名
D.形參是引用,實參是變量
解析:選項A為傳址調(diào)用;選項B為傳值調(diào)用;選項C為傳址調(diào)用,因為數(shù)組名代
表了數(shù)組的指針;
6.在傳值調(diào)用中,要求(C)
A.形參和實參類型任意,個數(shù)相等
B.形參和實參類型都完全一致,個數(shù)相等
C.形參和實參對應(yīng)的類型一致,個數(shù)相等
D.形參和實參對應(yīng)的類型一致,個數(shù)任意
7.在C++中,關(guān)于下列設(shè)置參數(shù)默認(rèn)值的描述中,(C)是正確的
A.不允許設(shè)置參數(shù)的默認(rèn)值
B.設(shè)置參數(shù)默認(rèn)值只能在定義函數(shù)時設(shè)置
C.設(shè)置參數(shù)默認(rèn)值時,應(yīng)該是先設(shè)置右邊的參數(shù)再設(shè)置左邊的參數(shù)
D.設(shè)置參數(shù)默認(rèn)值時,應(yīng)該全部參數(shù)都設(shè)置
解析:A選項,C++允許設(shè)置默認(rèn)值;B選項,參數(shù)默認(rèn)值可以在函數(shù)定義或者函數(shù)
說明時設(shè)置;D選項,設(shè)置參數(shù)默認(rèn)值可以不必全部都設(shè)置,但是沒設(shè)置的參數(shù)一
定要在設(shè)置默認(rèn)值的參數(shù)的左邊。
8.重載函數(shù)在調(diào)用時選擇的依據(jù)中,(無)錯誤的
A.參數(shù)個數(shù);B.參數(shù)的類型;C.函數(shù)名字;D.函數(shù)的類型
解析:函數(shù)重載是指一個函數(shù)名可以對應(yīng)著多個函數(shù)實現(xiàn)。重載確定函數(shù)實現(xiàn)時,
要求同名函數(shù)的參數(shù)個數(shù)或參數(shù)順序或返回值類型不同。
9.下列的標(biāo)識符中,(C)是文件級作用域的
A.函數(shù);B語句標(biāo)號;C外部靜態(tài)類標(biāo)識符;D.自動類標(biāo)識符
解析:作用域從大到小分為程序級、文件級、函數(shù)級、塊級。A選項,內(nèi)部函數(shù)作
用域為文件級,外部函數(shù)的作用域可以是程序級;B選項,語句標(biāo)號屬于函數(shù)級作
用域,只在使用它函數(shù)內(nèi)可見;C選項,外部靜態(tài)類標(biāo)識符作用域為文件級;D自
動類標(biāo)識符,作用域為函數(shù)級。
10.有int型變量,在程序中使用頻度很高,最好定義為(A)
A.register;Bauto;C.extern;D.static
解析:register修飾符暗示編譯程序相應(yīng)的變量將被頻繁地使用,如果可能的話,應(yīng)將
其保存在CPU的寄存器中,以加快其存取速度。
11.下列標(biāo)識符中,(B)不是局部變量
Aregister類;B.外部static類;C.auto類;D函數(shù)形參
解析:局部變量是作用域在函數(shù)級或塊級的變量,包括自動類變量,寄存器變量和
內(nèi)部靜態(tài)類變量以及函數(shù)參數(shù)。外部變量是作用在程序級的變量,外部靜態(tài)變量是
作用域在文件級的變量。
12.下列存儲類標(biāo)識符中,(C)的可見性與存在性不一致
A.外部類;B.自動類;C.內(nèi)部靜態(tài)類;D.寄存器
解析:靜態(tài)類在作用域內(nèi)可見,在作用域外不可見但是仍然存在。A、C、D三種類型
的標(biāo)識符可見性和存在性都是一致的,即在作用域內(nèi)可見時存在,不可見時就消失
了。
13.下列存儲類標(biāo)識符中,要求通過函數(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ù)體來進(jìn)行替換,省去了函數(shù)轉(zhuǎn)移的時間開銷,因此對于函數(shù)代碼不是很大,對執(zhí)
行速度要求很高的函數(shù),使用內(nèi)聯(lián)函數(shù)比較恰當(dāng)。
14.采用函數(shù)重載的目的在于(D)
A.實現(xiàn)共享;B減少空間;C提高速度;D使用方便,提高可讀性
解析:函數(shù)重載可以減少函數(shù)命名的數(shù)量,方便編程,也方便閱讀程序。
15.將兩個字符串連接起來組成一個字符串時,選用(C)函數(shù)
A.strlen();B.strcpy();C.strcat();D.strcmp()
解析:A選項,獲取字符串長度;B選項,復(fù)制字符串;D選項,比較字符串;
16.定義函數(shù)模板使用的關(guān)鍵宇是(C)
A.class
B.inline
C.template
D.operator
解析:A選項,定義類;B選項,定義內(nèi)聯(lián)函數(shù);D選項,操作符重載或者是自定義
對象類型隱式轉(zhuǎn)換。
17.下列有關(guān)對函數(shù)模板參數(shù)的描述,錯誤的是(C)
A.模板參數(shù)可以是1個或多個
B.通常每個模板參數(shù)前必須加class
C.模板參數(shù)是一個算術(shù)表達(dá)式
D.模板參數(shù)是參數(shù)化的類型
18.下列關(guān)于函數(shù)模板和模板函數(shù)的描述中,錯誤的是(D)
A.函數(shù)模板是一組函數(shù)的樣板
B.函數(shù)模板是定義重載函數(shù)的一種工具
C.模板函數(shù)是函數(shù)模板的一個實例
D.模板函數(shù)在編譯時不生成可執(zhí)行代碼
解析:模板函數(shù)是函數(shù)模板的實例,是根據(jù)函數(shù)模板生成的可執(zhí)行的函數(shù),在編譯
時會生成可執(zhí)行代碼。函數(shù)模板是函數(shù)的樣板,因為參數(shù)的類型沒有確定,必須在
實例化之后才能執(zhí)行,所以不參與編譯。
19.已知函數(shù)模板定義如下:
template<classT>
Tmin(Tx,Ty)
(
returnx<y?x:y;
)
在下列描述中,錯誤的是(C)
A.該函數(shù)模板有一個模板參數(shù)
B.該函數(shù)模板生成的模板函數(shù)中,參數(shù)和返回值的類型必須相同
C.該函數(shù)模板生成的模板函數(shù)中,參數(shù)和返回值的類型可以不同
D.T類型所允許的類型范圍應(yīng)對運(yùn)算符大于⑶操作有意義
解析:函數(shù)模板定義了返回值和參數(shù)類型都是T類型,如果在函數(shù)模板實例化時,T
被替換為int,那么參數(shù)類型和返回值類型都是int,其他基本類型同理。
20.在上述19題所定義的函數(shù)模板中,所生成的下列模板函數(shù)錯誤的是(D)
A.intmin(int,int)
B.charmin(char/char)
C.doublemindoubledouble)
D.doublemin(double,int)
解析:函數(shù)模板定義了返回值和參數(shù)類型都是T類型,如果在函數(shù)模板實例化時,T
被替換為int,那么參數(shù)類型和返回值類型都是int,其他基本類型同理。
二、判斷題
1.在C++語言中,定義函數(shù)時必須給出函數(shù)的類型(V)
解析:只有在定義函數(shù)模板時才不用指出具體類型。
2.C++語言中,說明函數(shù)時要用函數(shù)原型,即定義函數(shù)時的函數(shù)頭部分(V)
解析:C++語言中,說明函數(shù)時使用的函數(shù)頭必須和函數(shù)定義中的函數(shù)頭一致。
3.在C++語言中,所有函數(shù)在調(diào)用前都要說明(X)
解析:在調(diào)用前定義的函數(shù)不用說明。
4.如果一個函數(shù)沒有返回值,定義時需用void說明(V)
5.在C++語言中,傳址調(diào)用可以被引用調(diào)用所替代(V)
解析:傳址調(diào)用把實參地址傳遞給形參,引用調(diào)用相當(dāng)于給實參取了一個別名,在
傳入的函數(shù)中操作,二者都會改變實參,所以可以相互替代。
6.使用內(nèi)聯(lián)函數(shù)是以犧牲增大空間開銷為代價的(V)
解析:編譯器把調(diào)用內(nèi)聯(lián)函數(shù)的地方替換為內(nèi)聯(lián)函數(shù)函數(shù)體,增大了代碼量。
7.返回值類型、參數(shù)個數(shù)和類型都相同的函數(shù)也可以重載(X)
8.設(shè)置了參數(shù)默認(rèn)值后,調(diào)用函數(shù)的對應(yīng)實參就必須省略。(X)
解析:如果在調(diào)用時沒有傳入實參,則函數(shù)將使用默認(rèn)值,省略實參不是必須的。
9.計算函數(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.語句標(biāo)號的作用域是在定義該語句標(biāo)號的文件內(nèi)。(X)
解析:語句標(biāo)號的作用域為函數(shù)級。
12.函數(shù)形參的作用域是在該函數(shù)的函數(shù)體內(nèi)(V)
13.定義外部變量時,不用存儲類說明符extern,而說明外部變量時用它(V)
14.內(nèi)部靜態(tài)類變量與自動類變量作用域相同,但是生存期不同。(V)
解析:內(nèi)部靜態(tài)變量和自動類型的作用域都是函數(shù)級,但是內(nèi)部靜態(tài)變量在作用域
外雖然不可見,但是依然存在,沒有被釋放,一旦回到作用域,仍然保留原來的值,
但是自動類會被釋放。
15.靜態(tài)生存期的標(biāo)識符的壽命是短的,而動態(tài)生存期標(biāo)識符的壽命是長的。(X)
解析:靜態(tài)變量在作用域之外雖然不可見,但是仍然存在,動態(tài)變量在作用域之外
將會被釋放。
16.重新定義的標(biāo)識符在定義它的區(qū)域內(nèi)是可見的,而與其同名的原標(biāo)識符在此
區(qū)域內(nèi)是不可見的,但是,它是存在的。(V)
解析:在某個作用范圍內(nèi)定義的標(biāo)識符在該范圍內(nèi)的子范圍內(nèi)可以重新定義該標(biāo)識
符,這是原標(biāo)識符在該子范圍內(nèi)不可見,但是依然存在。
17.靜態(tài)類標(biāo)識符在它的作用域之外是不存在的。(X)
解析:靜態(tài)變量在作用域之外雖然不可見,但是仍然存在
18.所有的函數(shù)在定義它的程序中都是可見的。(X)
解析:外部函數(shù)的作用域是程序級的,在整個函數(shù)都可見,內(nèi)部函數(shù)的作用域是文
件級,在定義它的文件內(nèi)可見。
19.編譯系統(tǒng)所提供的系統(tǒng)函數(shù)都被定義在它所對應(yīng)的頭文件中。(V)
20.調(diào)用系統(tǒng)函數(shù)時,要先將該系統(tǒng)函數(shù)的原型說明所在的頭文件包含進(jìn)去。(V)
21.C++語言中模板分為函數(shù)模板和類模板兩種。(V)
22.函數(shù)模板中模板參數(shù)可用任何一種類型替換。(X)
解析:函數(shù)模板參數(shù)類型有范圍,它必須對函數(shù)模板中使用的運(yùn)算符有效,比如:+,
-1%等。
23.一個函數(shù)模板只生成一個模板函數(shù)。(X)
解析:一個函數(shù)模板可以實例化得到多個模板函數(shù)。
24.函數(shù)模板中模板參數(shù)只能有一個。(X)
25.函數(shù)模板在編譯時不生成可執(zhí)行代碼。(V)
解析:函數(shù)模板中的參數(shù)類型是不確定,因此是不能直接執(zhí)行的,必須實例化為模
板函數(shù)才能執(zhí)行。
第五章類和對象(一)
1.選擇填空。
⑴在下列關(guān)鍵字中,用以說明類中公有成員的是(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ù),但是可以訪問類的私有成員和其它成員。
⑶作用域運(yùn)算符的功能是(D)
A.標(biāo)識作用域的級別
B.指出作用域的范圍
C.給定作用域的大小
D.標(biāo)識某個成員是屬于哪個類的
解析:作用域運(yùn)算符(::)用于表示某個類的成員。
⑷下列不是成員函數(shù)的是(B)
A.構(gòu)造函數(shù)
B.友元函數(shù)
C.析構(gòu)函數(shù)
D.類型轉(zhuǎn)換函數(shù)
解析:友元函數(shù)是外部函數(shù),但是可以訪問類的私有成員和其它成員。
⑸(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ù)必須指定類型說明
解析:構(gòu)造函數(shù)的類型由系統(tǒng)指定,不能顯式指定。
(6)(A)是析構(gòu)函數(shù)的特征。
A一個類中只能定義一個析構(gòu)函數(shù)
B.析構(gòu)函數(shù)名與類名不同
C.析構(gòu)函數(shù)的定義只能在類體內(nèi)
D.析構(gòu)函數(shù)可以有一個或多個參數(shù)
解析:B,析構(gòu)函數(shù)名與類名相同,并在前面加上取反符號(~)。C,析構(gòu)函數(shù)可以在
類體內(nèi)聲明,在類體外定義;D,析構(gòu)函數(shù)沒有參數(shù)。
⑺通常復(fù)制構(gòu)造函數(shù)的參數(shù)是(C)o
A.某個對象名
B.某個對象的成員名
C.某個對象的引用名
D.某個對象的指針名
解析:復(fù)制構(gòu)造函數(shù)的功能是用一個已存在的對象創(chuàng)造新對象,傳入的參數(shù)是一個
對象的引用。
⑻下面關(guān)于成員函數(shù)特征的措述中,(A)是錯誤的。
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)說明在類體外定義的函數(shù)是
外聯(lián)函數(shù)。
(9)下述靜態(tài)數(shù)據(jù)成員的特性中,(D)是錯誤的。
A.說明靜態(tài)數(shù)據(jù)成員時前邊要加修飾符static
B.靜態(tài)數(shù)據(jù)成員要在類體外進(jìn)行初始化
C.引用靜態(tài)數(shù)據(jù)成員時,可在靜態(tài)數(shù)據(jù)成員名前加(類名)和作用域運(yùn)算符
D.靜態(tài)數(shù)據(jù)成員不是所有對象共用的
解析:某個類的靜態(tài)數(shù)據(jù)成員是該類的所有對象共享的。
(10)友元的作用是(A)。
A.提高程序的運(yùn)用效率
B.加強(qiáng)類的封裝性
C.實現(xiàn)數(shù)據(jù)的隱藏性
D.增加成員函數(shù)的種類
解析:友元不是類的成員,但是它可以訪問類的私有成員,友元的作用在于提高程
序的運(yùn)行效率,但是它破壞了類的封裝性。
2-判斷下列描述的正確性,對者劃錯者劃X。
⑴使用關(guān)鍵字class定義的類中默認(rèn)的訪問權(quán)限是私有(private)的。(V)
⑵作用域運(yùn)算符(::)只能用來限定成員函數(shù)所屬的類。(X)
解析:還可以用來限定成員變量所屬的類。
(3)析構(gòu)函數(shù)是一種函數(shù)體為空的成員函數(shù)。(義)
解析:析構(gòu)函數(shù)不用顯式定義,但是可以重寫,函數(shù)體不一定為空,多數(shù)情況下為
空。
⑷構(gòu)造函數(shù)和析構(gòu)函數(shù)都不能重載。(X)
解析:構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)不可以重載但是可以重寫。
⑸說明或定義對象時,類名前面不需要加class關(guān)鍵字。(J)
解析:class關(guān)鍵字只在定義類的時候才加。
⑹對象成員的表示與結(jié)構(gòu)變量成員的表示相同,使用運(yùn)算符.或->。(J)
⑺所謂私有成員是指只有類中所提供的成員函數(shù)才能直接使用它們,任何類以外的
函數(shù)對它們的訪問都是非法的。(X)
解析:私有成員不僅可以被成員函數(shù)訪問,還可以被友元訪問,不屬于這兩種類型
的函數(shù)對私有變量的訪問是非法的。
⑻某類中的友元類的所有成員函數(shù)可以存取或修改該類中的私有成員。(V)
解析:友元可以訪問類中的私有成員,因而它的成員函數(shù)也可以。
(9)可以在類的構(gòu)造函數(shù)中對靜態(tài)數(shù)據(jù)成員進(jìn)行初始化。(X)
(10)函數(shù)的定義不可嵌套,類的定義可以嵌套。(J)
解析:類可以定義內(nèi)部類,所以類的定義可以嵌套。
第六章類和對象(二)
1.選擇填空
⑴已知一個類A,(C)是指向類A成員函數(shù)的指針。假設(shè)類有三個公有成員:void
fl(int),voidf2(int)和inta。
A.A*p
B.intA::*pc=&A::a
C.void(A::*pa)(int)
D.A*pp
解析:A選項,對象指針;B選項,成員變量指針;D選項,對象指針;
(2)運(yùn)算符->*的功能是(A)o
A.使用對象指針通過指向成員的指針表示成員的運(yùn)算符
B.使用對象通過指向成員的指針表示成員的運(yùn)算符
C.用來表示指向?qū)ο笾羔樀某蓡T的運(yùn)算符
D.用來表示對象的成員的運(yùn)算符
解析:B選項為(.*);C選項為(->);D選項(.)
(3)已知fl(int)是類A的公有成員函數(shù),p是指向成員函數(shù)皿)的指針,采用(B)是正確
的。
A.p=fl
B.p=A::fl
C.p=A::fl()
D.p=fl()
⑷已知:p是一個指向類A數(shù)據(jù)成員m的指針,Al是類A的一個對象,
如果要給m賦值為5,(C)是正確的。
A.Al.p=5
B.Al->p=5
C.Al.*p=5
D.*Al.p=5
解析:給m賦值需要使用對象通過指向類成員的指針來操作該類對象成員,因此選擇C
⑸已知:類A中一個成員函數(shù)說明如下:
voidSet(A&a);
其中,A&a的含義是(C)
A.指向類A的指針為a
B.將a的地址值賦給變量Set
C.a是類A的對象引用用來作為函數(shù)Set。的形參
D.變量A與a按位相與作為函數(shù)Set()的參數(shù)
⑹下列關(guān)于對象數(shù)組的描述中,(D)是錯誤的。
A.對象數(shù)組的下標(biāo)是從0開始的
B.對象數(shù)組的數(shù)組名是一個常量指針
C.對象數(shù)組的每個元素是同一個類的對象
D.對象數(shù)組只能賦初值,而不能被賦值
解析:對象數(shù)組可以賦初值,也可以再次賦值,但是只能使川同一個類的對象賦值。
⑺下列定義中,(B)是定義指向數(shù)組的指針P。
A.int*p|:5]
B.int(*p)⑸
C.(int*)p[5]
D.int*p[]
解析:A選項是指針數(shù)組,有5個元素;C選項語法錯誤;D是指針數(shù)組。
⑻下列說明中
constchar*ptr;
ptr應(yīng)該是(AC)O
A.指向字符常量的指針
B.指向字符的常量指針
C.指向字符串常量的指針
D.指向字符串的常量指針
(9)已知:print。函數(shù)是一個類的常成員函數(shù),它無返回值,下列表示中,(A)是正確
的。
A.voidprint()const
B.constvoidprint()
D.voidprint(const)
C.voidconstprint()
(10)關(guān)于new運(yùn)算符的下列描述中,(D)是錯誤的。
A.它可以用來動態(tài)創(chuàng)建對象和對象數(shù)組
B.使用它創(chuàng)建的對象或?qū)ο髷?shù)組可以使用運(yùn)算符delete刪除
C.使用它創(chuàng)建對象時要調(diào)用構(gòu)造函數(shù)
D.使用它創(chuàng)建對象數(shù)組時必須指定初始值
解析:使用new<類名〉口創(chuàng)建對象數(shù)組可以不指定初始值,使用new口創(chuàng)建對象數(shù)組時不能進(jìn)行
初始化。
(11)關(guān)于delete運(yùn)算符的下列描述中,(C)是錯誤的。
A.它必須用于new返回的指針
B.它也適用于空指針
C.對一個指針可以使用多次該運(yùn)算符
D.指針名前只用一對方括號符,不考慮所刪除數(shù)組的維數(shù)
解析:對一個指針只能進(jìn)行一次delete操作。
(12)具有類型轉(zhuǎn)換功能的構(gòu)造函數(shù)應(yīng)該是(B)。
A.不帶參數(shù)的構(gòu)造的數(shù)
B.帶有一個參數(shù)的構(gòu)造函數(shù)
C.帶有兩個以上參數(shù)的構(gòu)造函數(shù)
D.默認(rèn)構(gòu)造函數(shù)
解析:單個參數(shù)的構(gòu)造函數(shù)提供了類型轉(zhuǎn)換功能。
(13)下列關(guān)于類模板的描述中錯誤的是(C)
A.類模板的成員函數(shù)可以是函數(shù)模板
B.類模板生成模板類時,必須指定參數(shù)化的類型所代表的具體類型
C.定義類模板時只允許有一個模板參數(shù)
D.類模板所描述的是一組類
解析:至少要有一個模板參數(shù),可以有多個模板參數(shù)
2.判斷下列描述是否正確,對者劃J、錯者劃X。
⑴指向?qū)ο蟮闹羔樅椭赶蝾惖某蓡T的指針在表示形式上是不相同的。(J)
解析:指向類的成員指針表示形式intA::*pl=&A::c:指向?qū)ο蟮闹羔槺硎拘问綖锳*p2=&a;
(2)已知:m是類A的對象,n是類A的公有數(shù)據(jù)成員,p是指向類A中n成員的指
針。下述兩種表示是等價的:m.n和m.*p。(V)
解析:前一種通過對象引用成員變量,后一種通過對象使用指向成員變量的指針進(jìn)行引用,二
者代表的都是同一個量。
⑶指向?qū)ο蟮闹羔樑c對象都可以作為函數(shù)參數(shù),但是使用前者比后者好些。(J)
解析:使用對象的指針作為函數(shù)參數(shù)是傳址調(diào)用,不需要對對象進(jìn)行拷貝,使用對象作為參數(shù)
是傳值調(diào)用,需要對傳入的對象進(jìn)行一次拷貝,空間開銷增大,程序性能下降,因此使用對象
指針好一些。
(4)對象引用作為函數(shù)參數(shù)比用對象指針更方便些。(J)
解析:使用對象引用具有對象指針的優(yōu)點,同時比對象指針使用方式更簡潔。
⑸對象數(shù)組的元素可以是不同類的對象。(X)
解析:對象數(shù)組的元素只能是同一個類的對象。
(6)對象數(shù)組既可以賦初值又可以賦值。(J)
⑺指向?qū)ο髷?shù)組的指針不一定必須指向數(shù)組的首元素。(J)
⑻一維對象指針數(shù)組的每個元素應(yīng)該是某個類的對象的地址值。(J)
解析:對象指針數(shù)組是指針數(shù)組,每個元素都是對象的指針。
(9)constchar*p說明了p是指向字符串的常量指針。(X)
解析:不一定是指向字符串的,也可能是指向字符的,指向字符串的常指針應(yīng)該這樣聲明
constchar*p="string”
(10)一個能夠更新的變量使用在一個不能被更新的環(huán)境中是不破壞類型保護(hù)的,反
之亦然。(義)
解析:常對象必須使用常成員函數(shù),不能使用非常成員函數(shù);非常對象可以使用常成員函數(shù),
也可以使用非常成員函數(shù)。
(11)一個類的構(gòu)造函數(shù)中可以不包含對其子對象的初始化。(X)
解析:在類中出現(xiàn)了子對象時,該類的構(gòu)造函數(shù)要包含對了對象的初始化。
(12)類型轉(zhuǎn)換函數(shù)不是成員函數(shù),它是用來進(jìn)行強(qiáng)制類型轉(zhuǎn)換的。(X)
解析:類型轉(zhuǎn)換函數(shù)是用戶定義的成員函數(shù)。
(13)使用模板可以減少重復(fù)勞動,提高代碼重用率。(J)
(14)C++語言中模板分為函數(shù)模板和類模板兩種。(J)
(15)類模板可以生成若干個模板類,每個模板類又可定義若干個對象。(J)
第七章繼承性和派生類
1.選擇填空
⑴下列對派生類的描述中,(D)是錯的。
A.一個派生類可以作另一個派生類的基類
B.派生類至少有一個基類
C.派生類的成員除了它自己的成員外,還包含了它的基類的成員
D.派生類中繼承的基類成員的訪問權(quán)限到派生類保持不變
解析:公有繼承時,基類的的公有和保護(hù)成員作為派生類的成員時,保持原有的訪問權(quán)限,基
類的私有成員在派生類中不可見;私有繼承時,基類的公有和保護(hù)成員都變?yōu)榕缮惖乃接谐?/p>
員,并且不能被這個派生類的子類訪問;保護(hù)繼承時,基類的公有和保護(hù)成員都稱為派生類的
保護(hù)成員,并且不能被派生類的對象訪問。
⑵派生類的對象對它的基類成員中(A)是可以訪問的。
A.公有繼承的公有成員
B.公有繼承的私有成員
C.公有繼承的保護(hù)成員
D.私有繼承的公有成員
解析:派生類的對象只可以訪問公有繼承方式下基類中的公有成員。
⑶派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含(C)。
A.基類的構(gòu)造函數(shù)
B.派生類中子對象的初始化
C.派生類中靜態(tài)數(shù)據(jù)成員的初始化
D.派生類中一般數(shù)據(jù)成員的初始化
解析:靜態(tài)數(shù)據(jù)成員的初始化應(yīng)在類體外進(jìn)行。派生類的構(gòu)造函數(shù)負(fù)責(zé)對基類、子對象和一般
數(shù)據(jù)成員初始化。
⑷關(guān)于子類型的描述中,(A)是錯的。
A.子類型就是指派生類是基類的子類型
B一種類型當(dāng)它至少提供了另一種類型的行為,則這種類型是另一種類
型的子類型
C.在公有繼承下,派生類是基類的子類型
D.子類型關(guān)系是不可逆的
⑸下列關(guān)于賦值兼容規(guī)則的描述中,錯誤的是(B)
A.賦值兼容規(guī)則在子類型情況下才可使用
B.公有繼承下,派生類對象不可給基類對象賦值
C.公有繼承下,派生類對象可對基類對象引用進(jìn)行初始化
D.公有繼承下.派生類對象的地址值可以賦值給基類的對象指針
解析:公有繼承下,派生類是基類的子類型,可以賦值給基類對象,這是派生類只發(fā)揮基類的
作用。
(6)關(guān)于多繼承二義性的描述中,(C)是錯的。
A.一個派生類的兩個基類中都有某個同名成員,在派生類中對這個成員
的訪問可能出現(xiàn)二義性
B.解決二義性的最常用的方法是用成員名的限定法
C.基類和派生類中同時出現(xiàn)的同名函數(shù),也存在二義性問題
D.一個派生類是從兩個基類派生來的,而這兩個基類又有一個公共的基
類,對該基類成員進(jìn)行訪問時,也可能出現(xiàn)二義性。
解析:基類和派生類中同時出現(xiàn)的同名函數(shù)時,派生類的函數(shù)將覆蓋基類的函數(shù)。
⑺設(shè)置虛基類的目的是(B)。
A.簡化程序
B.消除二義性
C.提高運(yùn)行效率
D.減少目標(biāo)代碼
解析:引入虛基類的真正目的之一是消除二義性問題。
⑻在帶有虛基類的多層派生類構(gòu)造函數(shù)的成員初始化列表中都要列出
基類的構(gòu)造函數(shù),這樣將對虛基類的子對象初始化(D)。
A.與虛基類下面的派生類個數(shù)有關(guān)
B.多次
C.二次
D.一次
解析:對于虛基類來說,派生類的對象中只有一個虛基類子對象。規(guī)定在建立對象時指定的類
為最派生類,虛基類子對象由最派生類的構(gòu)造函數(shù)通過調(diào)用虛基類的構(gòu)造函數(shù)初始化,而該派
生類的直接基類的中對虛基類構(gòu)造函數(shù)的調(diào)用被忽略,保證了虛基類的子對象只被初始化一
次。
2.判斷下列描述的正確性,對者劃J,錯者劃Xo
⑴C++語言中,既允許單繼承,又允許多繼承。(J)
⑵派生類是從基類派生出米,它不能再生成新的派生類。(X)
解析:派生類可以作為基類派生出其他類。
⑶派生類的繼承方式有兩種:公有繼承和私有繼承。(X)
解析:派生類的繼承方式有三種:公有繼承、私有繼承和保護(hù)繼承。
⑷在公有繼承中,基類中的公有成
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《古代的宗教》古代東西方文明及其交往課件
- 中職中醫(yī)護(hù)理課件 第三章病因病機(jī)學(xué)習(xí)資料
- 腸造口術(shù)后護(hù)理查房
- (譯林2024版)英語七年級下冊unit6 培訓(xùn)講義(學(xué)生版+解析版)
- 2025合同服務(wù)協(xié)議范本版
- 蜀道難原文知識點及翻譯
- 梅林村爭創(chuàng)先鋒村半年工作總結(jié)
- 辦公場地租賃協(xié)議協(xié)議合同二零二五年
- 物品抵押合同范例
- 信用類債券管理制度
- (正式版)YBT 016-2024 廢鋼液壓剪切機(jī)
- 天津市2024屆九年級下學(xué)期中考一模考前訓(xùn)練數(shù)學(xué)試卷(含解析)
- 2023年福建省考評員考試題
- 紙箱廠質(zhì)量管理制度模版
- 鼻竇炎的術(shù)后護(hù)理
- pu鞋底制作工藝
- 無人機(jī)航空保險
- 教師發(fā)展?fàn)I造積極學(xué)習(xí)環(huán)境的策略與方法
- 食堂餐廳服務(wù)方案投標(biāo)方案(技術(shù)標(biāo))
- 2023e簽寶-在線汽車租賃合同電子簽約
- 《鋁型材擠壓機(jī)專用油》
評論
0/150
提交評論