C++程序設計基礎考試題庫(含答案)_第1頁
C++程序設計基礎考試題庫(含答案)_第2頁
C++程序設計基礎考試題庫(含答案)_第3頁
C++程序設計基礎考試題庫(含答案)_第4頁
C++程序設計基礎考試題庫(含答案)_第5頁
已閱讀5頁,還剩232頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGEPAGE237C++程序設計基礎考試題庫(含答案)一、單選題1.設存在整型變量intx,則下列句與其它三項含義不同的是()A、int*p=&x;B、int&p=x;C、int&p=x;D、int&p=x;答案:A解析:A選項是定義指針變量p。故含義不同。BCD選項是聲明p是x的引用,p和x的地址相同,不是定義,不需要為a分配內存。2.下列哪個不是函數重載需要滿足的條件()A、返回值類型不同B、參數個數不同C、參數個數相同時,參數類型不同D、函數名相同答案:A解析:

函數重載,是指在程序的同一范圍內聲明幾個功能類似的同名函數。

在調用同名函數時,實現函數的重載必須滿足下列條件之一:

(1)參數表中對應的參數類型不同。

(2)參數表中參數個數不同。

如果兩個函數的名字和參數表都是一樣的,僅僅是返回值類型不同,則這兩個函數不是重載的,編譯器認為它們是重復定義,編譯時會報錯。故本題選A。3.設存在函數intmax(int,int)返回兩參數中較大值,若求22,59,70三者中最大值,下列表達式不正確的是()A、intm=max(22,max(59,70));B、intm=max(max(22,59),70);C、intm=max(22,59,70);D、intm=max(59,max(22,70));答案:C解析:函數參數的使用應與聲明中類型與個數保持一致。函數形參只有兩個參數,C選項傳遞了3個參數。4.C++中函數返回值類型不可以是()A、引用B、指針C、結構D、數組答案:D解析:返回值類型就是這個成員函數返回值的類型。C++函數的返回值類型可以是除數組和函數以外的任何類型。故不可以是D。5.在下面的二維數定義正確的是()A、intary[5][];B、intary[][5]={{0,1,2}};C、intary[][5];D、intary[5,5];答案:B解析:定義二維數在什么情況下也不能省略第二維,所以選項A錯誤。在沒有初始化的情況下省略第一維是非法的,所以選項C錯誤。選項D格式錯誤。選項B省略的第一維的值為1,合法。6.考慮函數原型intfun1(floatx,chary="$",inta=9,charb=""),下面的函數調用中,屬于不合法調用的是()A、fun1(3.14)B、fun1(3.14,"#")C、fun1(3.14,"$","")D、fun1(3.14,"#",7,"")答案:C解析:在C++語言中,可以在聲明函數時為形參指定默認值。當調用有默認參數值的函數時,調用語句中可以不給出對應的實參,這就相當于調用該函數時以默認值作為參數。調用函數時,主調函數的實參與被調函數的形參按從左至右的順序進行匹配對應。C選項中,實參的個數是3少于形參的個數4,故函數原型形參表中最前面的3個形參與3個實參相對應,即把字符型實參賦值給int型形參a,會產生編譯錯誤。選C。同理,ABD是正確的。7.C++語言是從早期的C語言逐漸發展演變而來的,與C語言相比,C++在求解問題方法上進行的最大改進是()A、面向過程B、面向對象C、安全性D、復用性答案:B解析:C++語言是一種編譯式的、通用的、大小寫敏感的編程語言,完全支持面向對象的開發模式。

C++語言的主要特點:

(1)它是C語言的繼承,盡量兼容C語言。

(2)加入了面向對象的特征,可以進行以抽象數據類型為特點的基于對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。

故與C語言相比,C++語言的最大改進是面向對象,選B。8.下列字符常量的寫法中,錯誤的是()A、′\t′B、“B”C、‘*’D、‘a’答案:B解析:字符常量:用單引號括起來的單個字符或轉義字符。字符串常量:用雙引號括起來。選項B是字符串常量。9.設存在函數intmax(int,int)返回兩參數中較大值,若求22,59,70三者中最大值,下列表達式正確的是()A、intm=max(22,max(59,70));B、intm=max(max(22,59),max(59,70));C、intm=max(max(22,70),59);D、以上皆正確答案:D解析:ABC選項都正確,都可求出三者中的最大值。函數max只有兩個參數,因此傳遞的實參也只能有兩個。10.面向對象中的“對象”是指()A、行為抽象B、數據抽象C、行為抽象和數據抽象的統一D、行為抽象和數據抽象的對立答案:C解析:結構化程序設計使用的是功能抽象,面向對象程序設計不僅能進行功能抽象,而且能進行數據抽象?!皩ο蟆睂嶋H上是功能抽象(行為抽象)和數據抽象的統一。11.C++中定義標準輸入輸出的庫為()A、stdioB、mathC、iostreamD、stdlib答案:C解析:標準輸入輸出流:<iostream>。

標準文件流:<fstream>。

標準字符串處理函數:<string>。

標準數學函數:<cmath>。故本題選C。12.假定a為一個整型數組名,則元素a[4]的字節地址為()A、a+4B、a+8C、a+16D、a+32答案:C解析:a是數組,a數組的地址也就是數組中第一個元素的地址為a[0],如果想算a[i]的地址套下面的公式:a[0]+i*d,其中d為該數組類型所占的字節數,C++中,d是4個字節。所以a[4]=a[0]+4*4=a+16。13.設函數int&index(int*a,inti)返回數組a中下標為i的元素,如存在整型數組intArray[]={1,2,3},在執行index(Array,2)++后,Array中各元素值為()A、{0,1,2}B、{1,1,2}C、{1,2,4}D、{0,2,3}答案:C解析:數組的下標從0開始。函數int&index(int*a,inti)返回數組a中下標為i的元素,故index(Array,2)表示數組array中下標為2的元素,即array[2]=3。執行index(Array,2)++,即array[2]=array[2]+1=4,故array[2]的4替換了3,最終Array={1,2,4}。14.在編譯指令中,嵌入指令是指()A、#includeB、#defineC、#ifD、#else答案:A解析:嵌入指令#include指示編譯器將一個源文件嵌入到帶有#include指令的源文件中該指令所在的位置處。故本題選A。15.要求指針p既不可以修改其本身的內容,也不可修改其所指向地址的內容,定義正確的是()A、constchar*p=“ABCD”;B、char*constp="ABCD";C、charconst*p="ABCD";D、constchar*constp="ABCD";答案:D解析:C++語言也可以使用const限定訪問權限,const修飾指針變量時,基本含義如下:

1)如果唯一的const位于符號*的左側,表示指針所指數據是常量,數據不能通過本指針改變,但可以通過其他方式進行修改;指針本身是變量,可以指向其他的內存單元。

2)如果唯一的const位于符號*的右側,表示指針本身是常量,不能讓該指針指向其他內存地址;指針所指的數據可以通過本指針進行修改。

3)在符號*的左右各有一個const時,表示指針和指針所指數據都是常量,既不能讓指針指向其他地址,也不能通過指針修改所指向的內容。故本題選D。16.下列關于類的權限的描述錯誤的是()A、類本身的成員函數只能訪問自身的私有成員B、類的對象只能訪問該類的公有成員C、普通函數不能直接訪問類的公有成員,必須通過對象訪問D、一個類可以將另一個類的對象作為成員答案:A解析:聲明為私有的成員變量僅能在類內的成員函數中被訪問,在類外是不可訪問的。但反過來說不成立。故A錯誤。部分成員函數聲明為公有的,用于提供外界和這個類的對象相互作用的接口,從而使得其他函數也可以訪問和處理該類的對象。即類的對象可以訪問該類的公有成員。故BCD正確。17.對函數intmax(inta,intb=0,intc=0,intd=0,inte=0);下列調用方式正確的是()A、intm=max(10,11,12,13,14);B、intm=max(10,,12,13,14);C、intm=max(10,11,,13,14);D、intm=max(10,11,12,,14);答案:A解析:調用函數時,主調函數的實參與被調函數的形參按從左至右的順序進行匹配對應??傊?,定義函數時,只能為函數最后面的連續若干個參數設置默認值,且在調用處也只能缺省后面的連續若干個實參。BCD選項中的默認值都不是放在最后的連續參數,故都錯誤。18.函數默認參數在函數原型中說明,默認參數必須放在參數序列的()A、前部B、中部C、后部D、兩端答案:C解析:定義函數時,只能為函數最后面的連續若干個參數設置默認值,且在調用處也只能缺省后面的連續若干個實參。即默認參數必須在參數序列的后部。19.若有以下類型標識符定義:intx=2;charw='a';floaty=23.45f;doublez=45.6789;則表達式w*x+y-z的結果類型是()A、floatB、charC、intD、double答案:D解析:當不同類型的量進行混合算術運算時,系統自動進行合理的類型轉換。編譯器就會自動把低級類型向高級類型轉換。數據類型級別由低到高分別為:char→int→float→double。轉換時由低級別向高級別轉換。會自動提升為參與表達式求值的最上級類型double。故本題選D。使用強制類型轉換運算符:static_cast或const_cast。20.一個函數的功能不太復雜,但要求被頻繁調用,選用最適合的是()A、內聯函數B、重載函數C、遞歸函數D、嵌套函數答案:A解析:對于只有很少幾條語句的函數,特別是頻繁調用時,函數調用導致的額外時間開銷可能會使程序運行明顯變慢。為了避免這種頻繁的函數調用與返回,C++語言引入了內聯函數的概念。故本題選A。注意:內聯函數一般來說僅適用于只有幾條語句的小函數。21.假定有char*P="Hello";,要輸出這個字符串的地址值的正確寫法是()A、cout<<*PB、cout<<PC、cout<<&PD、cout<<(void*)P答案:D解析:char*是聲明一個字符類型的指針。這個指針指向的地址上只能存放字符類型的值。

由于C++標準庫中I/O類對<<操作符重載,因此在遇到字符型指針時,會將其當作字符串名來處理,輸出指針所指的字符串。既然這樣,那么我們就別讓它知道那是字符型指針,所以得用到強制類型轉換,把char的指針轉換為無返回值指針類型,即cout<<(void*)P,故選D。

A輸出的是H;B輸出的是hello;C輸出的是指針的地址。22.內聯函數的特點是()A、減少代碼量,加快訪問速度B、減少代碼量,減緩訪問速度C、增加代碼量,減緩訪問速度D、增加代碼量,加快訪問速度答案:D解析:為了避免這種頻繁的函數調用與返回,加快執行速度,C++語言引入了內聯函數的概念。使用內聯函數,編譯器在編譯時并不生成函數調用,而是將程序中出現的每一個內聯函數的調用表達式直接用該內聯函數的函數體進行替換,就像整個函數體在調用處被重寫了一遍一樣。很顯然,使用內聯函數會使最終可執行程序的體積增大。故綜上,內聯函數增加代碼量,加快訪問速度。23.函數intsum(inta=1,intb=1,intc=3)可與下列哪個函數同時聲明()A、doublesum(int);B、charsum(int,int);C、intsum(double);D、intsum(int,int,int);答案:C解析:函數重載,區別是參數類型不同,參數個數不同。sum(inta=1,intb=1,intc=3)包含了sum(int,int,int),sum(int,int),sum(int),sum()這四種情況,而根據一個函數的返回值是無法得知要調用哪個函數的,只能根據參數來決定,所以這道題跟返回值沒關系。故ABD都錯,選C。24.使用下列哪一限定符可強制改變訪問方式()A、constB、shortC、longD、signed答案:A解析:與C語言一樣,C++語言也可以使用const限定訪問權限,告訴編譯器,它所修飾的量是不能改變的,也就是不能作為左值使用。故const可強制改變訪問方式。25.下列變量命名中,非法的是()A、A**LONGB、MyCarC、my_carD、a48答案:A解析:C++中變量命名規則和標識符命名規則一樣:只能由大小寫字母、下劃線和數字組成,且數字不能開頭。故A錯。26.以下能正確定義數組并正確賦初值的語句是()A、intN=5,b[N][N];B、inta[2]={{1},{3},{4},{5}};C、intc[2][]={{1,2},{3,4}};D、intd[3][2]={{1,2},{3,4}};答案:D解析:A選項數組長度不能使用變量。B選項初始化列表與數組長度不符。C選項中數組列長度不能省略。故只有D正確。27.有以下程序段,其輸出結果是()#include<iostream>usingnamespacestd;voidmain(){charb[]='Hello,you';b[5]='!';cout<<b<<endl;}A、Hello,youB、HelloC、Hello!youD、!答案:C解析:數組b用來存放'Hello,you'中的每個個字符,下標從0開始。數組b開始存放的是字符串“Hello,you”,原來b[5]=',',執行b[5]='!'后,數組b存放的是字符串變成“Hello!you”,所以輸出Hello!you。選C。28.調用聲明為intresult(inta,intb)的函數時,正確的方法是()A、result(1,2)B、result(1)C、result(0.1,0.3)D、result(1,2,3)答案:A解析:函數的使用應與聲明中類型,個數保持一致。故只有A符合。29.下列關于C++標識符的命名不合法的是()A、PadB、name_1C、A#bcD、_a12答案:C解析:一般的標識符命名規則:

字母、數字和下劃線的組合,大小寫敏感,但不能以數字開頭,也不能和系統中使用的關鍵字完全相同。故C錯誤,“#”不屬于字母、數字和下劃線的任何一種。30.頭文件擴展名為()A、cppB、hC、ubD、ob答案:B解析:在C++中,

.h文件是頭文件。

.cpp文件是源程序文件;31.下列不是函數重載所要求的條件是()A、函數名相同B、參數個數不同C、參數類型不同D、函數返回值類型不同答案:D解析:函數重載:是指在程序的同一范圍內聲明幾個功能類似的同名函數。即前提是函數名相同,故A正確。實現函數的重載必須滿足下列條件之一:(1)參數表中對應的參數類型不同。

(2)參數表中參數個數不同。故BC正確。要注意的是,返回值類型不能用來區分函數,也就是說,如果僅僅是返回值類型不同,則這兩個函數不是重載的,編譯器認為它們是重復定義,編譯時會報錯。故本題選D。32.下列表達式,哪個是聲明P為指向常量的常量指針()A、constint*PB、int*constPC、constint*constPD、int*P答案:C解析:C++語言也可以使用const限定訪問權限,const修飾指針變量時,基本含義如下:

1)如果唯一的const位于符號*的左側,表示指針所指數據是常量,數據不能通過本指針改變,但可以通過其他方式進行修改;指針本身是變量,可以指向其他的內存單元。

2)如果唯一的const位于符號*的右側,表示指針本身是常量,不能讓該指針指向其他內存地址;指針所指的數據可以通過本指針進行修改。

3)在符號*的左右各有一個const時,表示指針和指針所指數據都是常量,既不能讓指針指向其他地址,也不能通過指針修改所指向的內容。P為指向常量的常量指針,即指針和所指數據都是常量,故需*左右各有一個const,本題選C。33.設存在函數intmax(int,int)返回兩參數中較大值,若求22,59,70三者中最大值,下列表達式不正確的是()A、intm=max(22,max(59,70));B、intm=max(max(22,59),70);C、intm=max(22,59,70);D、intm=max(59,max(22,70));答案:C解析:max中參數為兩個,當實參數量多于形參數量時,多于的參數會被忽略。故本題中不能比較出三者中的最大值34.決定C++語言中函數的返回值類型的是()A、return語句中的表達式類型B、調用該函數時系統隨機產生的類型C、調用該函數時的主調用函數類型D、在定義該函數時所指定的數據類型答案:D解析:函數都需要由類型說明并在定義該函數時指定數據類型。故本題選D。35.一個函數功能不太復雜,但要求被頻繁調用,應選用()A、內聯函數B、重載函數C、遞歸函數D、嵌套函數答案:A解析:對于只有很少幾條語句的函數,特別是頻繁調用時,函數調用導致的時間開銷可能會使程序運行明顯變慢。為了避免這種頻繁的函數調用與返回,加快執行速度,C++語言引入了內聯函數的概念。故本題選A。36.下列默認參數的聲明不正確的是()A、intmax(inta,intb,intc,intd=0);B、intmax(inta,intb,intc=0,intd=0);C、intmax(inta=0,intb,intc=0,intd=0);D、intmax(inta,intb=0,intc=0,intd=0);答案:C解析:C++語言規定,提供默認值時必須按從右至左的順序提供,即有默認值的形參必須在形參列表的最后。如果有某個形參沒有默認值,則它左側的所有形參都不能有默認值。故C錯誤,默認值應該連續出現再形參列表的最后。調用函數時,主調函數的實參與被調函數的形參按從左至右的順序進行匹配對應。即在調用時只能缺省后面的連續若干個實參。37.下列哪種類型的函數適合聲明為內聯函數()A、函數體語句較多B、函數體邏輯較復雜C、函數執行時間較長D、函數語句較少,執行速度要求高答案:D解析:對于只有很少幾條語句的函數,特別是頻繁調用時,函數調用導致的時間開銷可能會使程序運行明顯變慢。為了避免這種頻繁的函數調用與返回,加快執行速度,C++語言引入了內聯函數的概念。故本題選D。38.已知:p是一個指向類A數據成員m的指針,A1是類A的一個對象。如果要給m賦值為5,正確的是()A、A1.p=5;B、A1->p=5;C、A1.*p=5;D、*A1.p=5;答案:D解析:假設已經有了一個對象,則可使用“.”運算符調用成員函數賦初值。題中p是指針,所以如果要給m賦值為5,則*A1.p=5;。39.下列函數原型聲明語句中,錯誤的是()A、intf(void);B、voidf(int);C、intf(a);D、voidf(doublea);答案:C解析:題目考查原型聲明。函數原型:返回類型函數名(參數類型列表)在函數原型中,可以省略形參的名字,而只給出它的類型及默認值。故ABD對。不能只寫形參的名字,故C錯。40.在一個被調用函數中,關于return語句使用的描述,錯誤的是()A、被調用函數中可以不用return語句B、被調用函數中可以使用多個return語句C、被調用函數中,如果有返回值,就一定要有return語句D、被調用函數中,一個return語句可返回多個值給調用函數答案:D解析:被調用函數中,一個return語句只能返回一個值給調用函數。故D錯誤。return語句當然可以有多條,只不過函數運行的時候,最后只會執行其中的一條。故B正確。

函數有返回值,那么函數就要返回其聲明類型的值,所以應該有return語句返回相應的值,否則編譯出錯。故C正確。41.設有說明constchar*constp="ABCD";,則下列選項中正確的是()A、允許修改指針p本身,且允許通過p修改所指向的數據B、允許修改指針p本身,且禁止通過p修改所指向的數據C、禁止修改指針p本身,且允許通過p修改所指向的數據D、禁止修改指針p本身,且禁止通過p修改所指向的數據答案:D解析:C++語言也可以使用const限定訪問權限,const修飾指針變量時,基本含義如下:

1)如果唯一的const位于符號*的左側,表示指針所指數據是常量,數據不能通過本指針改變,但可以通過其他方式進行修改;指針本身是變量,可以指向其他的內存單元。

2)如果唯一的const位于符號*的右側,表示指針本身是常量,不能讓該指針指向其他內存地址;指針所指的數據可以通過本指針進行修改。

3)在符號*的左右各有一個const時,表示指針和指針所指數據都是常量,既不能讓指針指向其他地址,也不能通過指針修改所指向的內容。本題中,const既出現在*的左側,也出現在*的右側,表示指針本身及指針所指的數據都是不可修改的。故本題選D。42.已知類A中一個成員函數說明"voidSet(A&a);",其中A&a的含義是()A、指向類A的指針為aB、將a的地址值賦給變量SetC、a是類A的對象引用,用來作函數Set()的形參D、變量A與a按位相與作為函數Set()的參數答案:C解析:引用”的定義格式如下:

類型名&引用名=同類型的某變量名;首先,A&a是函數Set()的形參,根據引用的語法形式,a是一個引用,它的類型是A&,也就是說,a是類A的對象的引用。Set是函數名,不是變量名。符號&表示引用,不是按位與。答案為C。43.C++中是否允許在類結構中定義函數()A、不允許B、允許C、僅允許定義構造函數D、只不允許定義構造函數答案:B解析:類中定義的數據和函數稱為這個類的成員。故允許在類結構中定義函數。44.聲明函數為內聯使用的關鍵字為()A、constB、inlineC、shortD、signed答案:B解析:內聯函數應該定義在前,調用在后,定義時只需在函數頭返回值類型的前面加上關鍵字inline。故本題選B。

short表示數據類型短整型。定義引用時,可以在定義的前面加const關鍵字,表明該引用是“常引用”。D為干擾項。45.對使用關鍵字new所開辟的動態存儲空間,釋放時必須使用()A、freeB、createC、deleteD、realse答案:D解析:使用new運算符動態申請的內存空間,需要在使用完畢釋放。C++提供了delete運算符,用來釋放動態分配的內存空間。delete運算符的基本用法如下:

delete指針;故本題選C46.對C++語言和C語言的兼容性,描述正確的是()A、C++兼容CB、C++部分兼容CC、C++不兼容CD、C兼容C++答案:A解析:C語言是C++語言的前身,在進一步擴充和完善C語言的基礎上得到了C++語言。故C++語言兼容C語言。47.函數intsum(inta=10,intb=15,intc=25);不可與下列哪個函數同時聲明()A、intsum(int,int,int,int)B、intsum(int,int,int)C、intsum(double)D、intsum(double,double,double);答案:B解析:名稱相同,參數個數相同,參數類型相同,無法重載。48.一個函數功能不太復雜,但要求頻繁使用,則該函數適合作為()A、內聯函數B、重載函數C、遞歸函數D、嵌套函數答案:A解析:對于只有很少幾條語句的函數,特別是頻繁調用時,函數調用導致的額外時間開銷可能會使程序運行明顯變慢。為了避免這種頻繁的函數調用與返回,C++語言引入了內聯函數的概念。故本題選A。內聯函數的適用情況:只有幾條語句,且頻繁調用的小函數。49.關于成員函數特征的描述中,錯誤的是()A、成員函數一定是內聯函數B、成員函數可以重載C、成員函數可以設置參數的缺省值D、成員函數可以是靜態的答案:A解析:成員函數:是類中的另一類成員,個數不限,其聲明方式與普通函數的聲明相同。成員函數可以是靜態的。一個類的成員函數之間可以互相調用。類的成員函數可以重載,也可以設定參數的默認值。故BCD正確。成員函數既可以在類體內定義,也可以在類體外定義。如果成員函數定義在類體內部,則默認是內聯函數。也可以在類體內部聲明函數,并加上inline關鍵字,然后在類體外給出函數定義,這樣的成員函數也是內聯函數。除此之外的不是內聯函數。故A錯。50.下面關于數組的初始化正確的是()A、charstr[]={'a','b','c'};B、charstr[2]={'a','b','c'};C、charstr[1][2]={{'a','b'},{'e','d'}};D、charstr[][]={'a','b','c'};答案:A解析:一維數組:T[N],N代表數組“元素個數”。如果對數組的全部元素賦初值,定義時數組長度可以省略;如果被定義數組的長度,與初值個數不同,則數組長度不能省略。故A正確,B中N應為3。

二維數組:如果對全部元素都賦初值,則“行長度”可以省略。需要注意的是只能省略“行長度”,但第二維的長度即“列長度”不能省略。故C錯誤,應為str[2][2]。D錯誤,列長度不能省略。51.設函數int&index(inta,inti)返回數組a中下標為i的元素,如果整型數組intarray[]={1,2,3},在執行index(array,1)+=3后,array中各元素值為()A、{4,2,3}B、{1,5,3}C、{1,2,6}D、{4,5,6}答案:B解析:數組的下標從0開始,index(array,1)+=3使用加法賦值運算符(+=),故也可以表示為:index(array,1)=index(array,1)+3。index(array,1)返回array[1]的值,即為2,然后array[1]=2+3=5,所以array中各元素值為{1,5,3}。選B。52.考慮函數原型voidpass(intx,inty=5,charz=‘*’),下面的函數調用中,屬于不合法調用的是()A、pass(5)B、pass(5,8)C、pass(6,'#')D、pass(0,0,'*')答案:C解析:在C++語言中,可以在聲明函數時為形參指定默認值。當調用有默認參數值的函數時,調用語句中可以不給出對應的實參,這就相當于調用該函數時以默認值作為參數。

調用函數時,主調函數的實參與被調函數的形參按從左至右的順序進行匹配對應。

C選項中,實參的個數是2少于形參的個數3,故函數原型形參表中最前面的2個形參與2個實參相對應,即把字符型實參#賦值給int型形參y,會產生編譯錯誤。故C錯誤。同理,ABD是正確的。53.可用作C++語言用戶標識符的一組標識符是()A、void,define,+WORDB、a3_b3,_123,YNC、for,-abc,CaseD、2a,DO,sizeof答案:B解析:一般的標識符命名規則:

字母、數字和下劃線的組合,大小寫敏感,但不能以數字開頭,也不能和系統中使用的關鍵字完全相同。

故本題只有B正確。A有+,C有-,D數字開頭。54.對類中聲明的變量,用new運算符創建一維數組的正確形式是()A、int*p=newa[10];B、float*p=newfloat[10];C、int*p=newfloat[10];D、int*p=newint[5]={1,2,3,4,5,6};答案:B解析:使用new運算符可以動態分配一個任意大小的數組:

p=newT[N];

其中,T是任意類型名,p是類型為T*的指針,N代表數組“元素個數”,可以是任何的值為正整數的表達式。數組中元素的類型是T類型。故本題選B。float*p=newfloat[10];的含義是:開辟一個長度為10的float型數組的空間,并把首地址賦予指針變量p,而p是指向float型數據的指針。55.下列有關重載函數的說法中錯誤的是()A、重載函數必須具有不同的返回值類型B、重載函數名必須相同C、重載函數參數個數可以不同D、重載函數必須有不同的形參列表答案:A解析:函數重載,是指在程序的同一范圍內聲明幾個功能類似的同名函數。在調用同名函數時,實現函數的重載必須滿足下列條件之一:

(1)參數表中對應的參數類型不同。

(2)參數表中參數個數不同。如果兩個函數的名字和參數表都是一樣的,僅僅是返回值類型不同,則這兩個函數不是重載的,編譯器認為它們是重復定義,編譯時會報錯。故本題選A。56.下面關于類和對象說法不正確是()A、類由數據與函數組成B、一個對象必屬于某個類對象是類的實例C、對象是類的實例D、一個類的對象只有一個答案:D解析:對象是類的一個具象,類是對象的一個抽象。一個類的對象可以不只有一個。故D錯誤。57.下列語句錯誤的是()A、intval(20);B、externintval(20);C、constintval;D、externconstintval;答案:C解析:因為被const修飾的變量的值在程序中不能被改變,所以在聲明符號常量時,必須對符號常量進行初始化,除非這個變量時用extern修飾的外部變量。故只有C錯誤,既沒有初始化,也沒有用extern修飾。58.下列關于類的權限描述錯誤的是()A、類本身的成員函數可以訪問自己定義的任何成員B、類的對象只能訪問公有成員C、普通函數只能通過對象訪問類的公有成員D、一個類不能包含另一個類的對象作為成員答案:D解析:因為類本身就是一種新的數據類型,所以一個類的對象可以作為另一個類的成員。普通成員函數由類的對象調用。故D錯誤。訪問類的成員變量及調用類的成員函數時,要考慮成員名的訪問范圍。類中定義的訪問方法是public的,所以可以在類外(如主函數中)中直接調用。類內的函數僅作為類內其他函數的輔助函數使用,并不對外提供服務,這樣的函數可以定義為私有的,也就是說,在類外不可以直接調用它們。故ABC正確。59.使用new創建的對象,對其生命周期描述正確的是()A、由系統決定B、由用戶控制C、全局生命周期D、永久存在答案:B解析:運算符new用于建立生存期可控的對象,new返回這個對象的指針。使用new建立的動態對象只能用delete刪除,以便釋放所占空間,因此由new創建的對象生命周期由用戶控制。60.C++中函數中的return指令可以()A、只能有一條B、0或多條C、至少有一條D、只能主函數調用答案:B解析:

如果函數是void的話,可以沒有return,否則一定要有return,在最結尾加就行了,可以有多個。61.下列關于類的權限的描述錯誤的是()A、類本身的成員函數只能訪問自身的私有成員B、類的對象只能訪問該類的公有成員C、普通函數不能直接訪問類的公有成員,必須通過對象訪問D、一個類可以將另一個類的對象作為成員答案:A解析:類本身的成員函數既可以訪問自身的私有成員,也可以訪問自身的公有成員。故A錯。將部分成員函數聲明為公有的,用于提供外界和這個類的對象相互作用的接口,從而使得其他函數也可以訪問和處理該類的對象。故BCD正確。62.下列關于類定義的敘述中,正確的是()A、類中可以定義成員變量,并賦初值B、類中可以聲明成員函數,并可以給出參數的默認值C、類體不能為空,即必須定義成員變量及成員函數D、類中僅能包含成員變量答案:B解析:選項A中,類中可以定義成員變量,但不能賦初值。初值應該是特定對象中成員變量的初始值。而定義類時,還沒有創建類的對象,所以不能賦初值。通常為對象中成員變量賦初值的工作由構造函數完成。

選項C中,類體可以為空,也就是說可以定義一個空類。

選項D中,類中既可以包含成員變量,也可以包含成員函數。故本題只有B正確。63.以下有關類與對象的敘述中,錯誤的是()A、對象是類的一個實例B、一個類可以有多個對象C、任何一個對象都歸屬于一個具體的類D、只要是某個類的對象,那么該對象就可以訪問這個類的所有成員答案:D解析:對象是類的一個具象,類是對象的一個抽象。類和對象的關系如同一個模具與用這個模具鑄造出來的鑄造件之間的關系。故一個類可以有多個對象,且任何一個對象都歸屬于一個具體的類。故ABC正確。類的對象只能訪問公有成員,其他函數不能使用類的私有成員,也不能使用公有成員函數,它們只能通過類的對象使用類的公有成員函數。因此D錯誤。64.已知:"inta=5;charc='a';"則輸出語句cout<<c+1<<a<<c;的顯示結果是()A、65aB、985aC、98'5'aD、65'a'答案:B解析:cout是一個標準輸出流對象,使用流插入運算符“<<”向輸出設備屏幕輸出信息。使用cout進行輸出時,系統會自動判別輸出數據的類型,并按相應的類型輸出對應的數據。字符型數據在內存中以ASCII碼的形式存放。故a對于的ASCII的代碼值為97,c+1為98,因此輸出結果為985a。故選B。65.定義了指向常量的指針p的選項是()A、constint*p;B、int*p;C、int*constp=&x;D、constint*constp=&x;答案:A解析:const修飾指針變量時:如果唯一的const位于符號*的左側,表示指針所指數據是常量,數據不能通過本指針改變,但可以通過其他方式進行修改;指針本身是變量,可以指向其他的內存單元。本題中,“指向常量的指針p”,表示指針所指數據是常量,故唯一的const位于符號*的左側,選A。注意:如果唯一的const位于符號*的右側,表示指針本身是常量,不能讓該指針指向其他內存地址;指針所指的數據可以通過本指針進行修改。在符號*的左右各有一個const時,表示指針和指針所指數據都是常量,既不能讓指針指向其他地址,也不能通過指針修改所指向的內容。66.在C++中,頭文件擴展名為()A、.cppB、.hC、.libD、.obj答案:B解析:在C++中,.h文件是頭文件。.cpp文件是源程序文件;67.如果有int型變量a,則定義指向變量a的指針p正確的寫法是()A、intp=&vB、int*p=&vC、int&p=*vD、int*p=v答案:B解析:指針變量中保存的是一個地址,有時也稱指針指向一個地址。定義一個指向int型變量a的指針p為:int*p=&a;故選B68.面向對象不僅進行功能抽象,還要進行()A、動態抽象B、消息抽象C、數據抽象D、算法抽象答案:C解析:對象具有兩個特性:一是狀態(也稱為屬性);二是行為(也稱為操作)。在面向對象技術中,屬性表現為數據,而把對對象的操作定義為實現一定功能的函數。故“對象”實際上是功能抽象和數據抽象的統一。選C。69.如想使用std命名空間,正確的程序語句是()A、usingstd;B、namespacestd;C、usingnamespace;D、usingnamespacestd;答案:D解析:using語句引用其他命名空間的標識符的語法格式有兩種形式:

using命名空間名::標識符;

usingnamespace命名空間名;故D符合。70.下列關于類和對象的敘述中,錯誤的是()A、一個類只能有一個對象B、對象是類的具體實例C、類是某一類對象的抽象D、類和對象的關系是一種數據類型與變量的關系答案:A解析:具有類類型的變量稱為對象。類只是一個樣板,根據這個樣板,可以在內存中開辟出同樣結構的實例,即對象。所以說,對象是類的實例。故一個類可以有多個對象。答案為A。71.若有定義int*p=newint(0),則下列說法正確的是()A、系統用指針變量p來表示所指整型變量B、聲明一個指針變量p,指向名為new的存儲單元C、系統為指針變量p分配一個整型數據的存儲空間D、通過運算符new,分配一個整型數據的存儲空間,并將其內存地址賦予指針變量答案:D解析:在C++語言中,使用new運算符實現動態內存分配。例如,可以寫如下的語句:

p=newT;其中,T是任意類型名,p是類型為T*的指針。這樣的語句會動態分配出一片大小為sizeof(T)字節的內存空間,并且將該內存空間的起始地址賦值給指針p。本題中,int*p=newint(0)表示通過運算符new,分配一個整型數據的存儲空間,并將其內存地址賦予指針變量。D正確。72.下列關于類的權限描述錯誤的是()A、類本身的成員函數可以訪問自身的任何成員B、類的對象只能訪問公有成員C、普通函數可以不通過對象直接訪問類的公有成員D、一個類可以包含另一個類的對象作為成員答案:C解析:類本身的成員函數可以使用類的所有成員(私有和公有成員)。故A正確。類的對象只能訪問公有成員函數,其他函數不能使用類的私有成員,也不能使用公有成員函數,它們只能通過定義類的對象為自己的數據成員,然后通過類的對象使用類的公有成員函數。故B正確,C錯誤。類本身就是一種新的數據類型,所以一個類的對象可以作為另一個類的成員。故D正確。73.不同對象調用同名函數,但導致完全不同行為的現象稱為()A、抽象B、封裝C、繼承D、多態性答案:D解析:多態是指不同種類的對象都具有名稱相同的行為,而具體行為的實現方式卻有所不同。

可簡單理解為:多態即同名,行為不同,故本題選D。74.下面關于對象概念的描述中錯誤的是()A、任何對象都必須有繼承性B、對象是屬性和方法的封裝體C、對象間的通信靠消息傳遞D、操作是對象的動態屬性答案:A解析:

對象的特點包括兩個方面:屬性和操作。屬性指的是描述對象靜態特征(即狀態)的數據項;操作指的是描述對象動態特征(即行為)的函數序列。故D正確。故也可稱對象是屬性和方法的封裝體。故B正確?!袄^承”,就是在編寫一個“新”類的時候,以現有的類作為基礎,使得新類從現有的類“派生”而來,從而達到代碼擴充和代碼復用的目的。繼承支持層次概念。并不是任何對象都必須具有繼承性。因此A錯誤。75.結構化程序設計所規定的三種基本控制結構是()A、輸入、處理、輸出B、樹形、網形、環形C、順序、選擇、循環D、主程序、子程序、函數答案:C解析:在編寫程序時,使用3種基本控制結構來構造程序:順序、選擇、循環基本控制結構。這3種結構到目前為止仍是主要的控制結構。故本題選C。76.下列關于類和對象的說法中,正確的是()A、編譯器為每個類和類的對象分配內存B、類的對象具有成員函數的副本C、類的成員函數由類來調用D、編譯器為每個對象的成員變量分配內存答案:D解析:選項A中,類并不占用空間,占用空間的是類的對象。

選項B中,定義類后,不是每創建一個對象,就為成員函數分配存儲的空間。實例化對象時,只會分配成員變量的空間,而不會分配成員函數的空間。

選項C中,類的成員函數不一定是由類來調用的,普通成員函數由類的對象調用。類的靜態成員函數由類來調用。故本題只有D正確。77.用于包含C++標準庫iostream的預處理指令是()A、#define<iostream>B、#include<iostream>C、#define‘iostream’D、#include‘iostream’答案:B解析:嵌入指令#include指示編譯器將一個源文件嵌入到帶有#include指令的原文件中該指令所在的位置處。當使用當程序中用到cin和cout時,需要在程序中包含頭文件<iostream>。故綜上,B符合。78.下列輸出語句中,正確的是()A、cout<<("%c\n","student")B、cout<<("%s\n","hello")C、cout<<("%c\n","c")D、cout<<("%s\n",&a)答案:B解析:%c是輸岀單個字符的格式控制符。%s是輸出字符串的格式控制符。故只有B正確。選項C中"c"是字符串,不能用c%格式輸出。79.結構化程序設計的基本原則不包括()A、多態性B、自頂向下C、模塊化D、逐步求精答案:A解析:在結構化程序設計中,采用自頂向下、逐步求精及模塊化的思想,將復雜的大問題層層分解為許多簡單的小問題。故不包括A。80.下列表達式,哪一是聲明P為指向常量的指針()A、constint*pB、int*constp;C、constint*constpD、int*p答案:A解析:const修飾指針變量時,基本含義如下:

1)如果唯一的const位于符號*的左側,表示指針所指數據是常量,數據不能通過本指針改變,但可以通過其他方式進行修改;指針本身是變量,可以指向其他的內存單元。

2)如果唯一的const位于符號*的右側,表示指針本身是常量,不能讓該指針指向其他內存地址;指針所指的數據可以通過本指針進行修改。

3)在符號*的左右各有一個const時,表示指針和指針所指數據都是常量,既不能讓指針指向其他地址,也不能通過指針修改所指向的內容。故本題中,“指向常量”,是指數據是常量,故const在*左側,選A。81.在C++語言中用于注釋的標識符是()A、&B、//C、*D、/答案:B解析:C++程序中,仍沿用C語言的注釋風格,即注釋有以下兩種形式。

1)從/*開始,到*/結束,這之間的所有內容都視作注釋。

2)從//直到行尾,都是注釋。故綜上,/*……*/或//都用于注釋。本題選B。82.若有說明:intn=2,*p=&n,*q=p;,則以下非法的賦值語句是()A、n=*qB、p=nC、p=qD、*q=*P答案:B解析:指針變量中保存的是一個地址,有時也稱指針指向一個地址。指針p指向整型變量n,p中保存n的地址,而不是值2。p指向的地址中的值是2。地址與地址中的值不要混淆。故p是指向int類型的指針,n是int類型的數據,不能p=n。故B錯。83.下列對于類的描述錯誤的是()A、類要先聲明后使用B、類是具有唯一標識的實體C、兩個類可以使用同一個名稱D、組成類的不僅有數據,還可以有對數據進行操作的函數答案:C解析:類是具有唯一標識符的實體,就是說類名不能重復。故C錯誤。84.下列選項中,不屬于類模型結構圖中的是()A、類名B、屬性C、操作D、對象名答案:D解析:類模型結構與對象結構很類似,如下圖:對象結構圖與類模型結構圖中都含有屬性與操作,不同的是,對象結構圖中有對象名,類模型結構圖中有類名。故本題選D。85.以下說法中不正確的是()A、C++程序中必須有一個主函數main(),而且是從main()的第一條語句開始執行B、非主函數都是在執行主函數時,通過函數調用或嵌套調用而得以執行的C、主函數可以在任何地方出現D、主函數必須出現在固定位置答案:D解析:程序中必須有且僅有一個主函數main(),這是程序執行的總入口。但并無固定位置。主函數也稱為主程序。程序從主函數的開始處執行,按照其控制結構,一直執行到結束。故A、C正確,D錯誤。主函數中可以調用程序中定義的其他函數,但其他函數不能調用主函數。故B正確。答案為D。86.intFunc(int,int);不可與下列哪個函數構成重載()A、intFunc(int,int,int);B、doubleFunc(int,int);C、doubleFunc(double,double);D、doubleFunc(int,double);答案:B解析:函數重載的條件:同名,不同參數表,不同參數個數。故B不可以。87.設存在數組a,其長度為Len,則下列哪項泛型算法用于在a中尋找值Value的位置()A、reverse(a,a+Len,Value);B、sort(a,a+Len,Value);C、find(a,a+Len,Value);D、copy(a,a+Len,Value);答案:C解析:A選項用于將數組元素反轉;B選項用于對a進行升冪排序;C選項用于查找數組a內是否存在值為value的元素;D選項用于輸出數組的內容。故本題選C。88.下列哪個類型函數不適合聲明為內聯函數()A、函數體語句較多B、函數體語句較少C、函數執行時間較短D、函數執行時間過長答案:A解析:內聯函數的適用情況:只有幾條語句,且頻繁調用的小函數。故A明顯錯誤。89.關于對象概念的描述中,說法錯誤的是()A、對象就是C語言中的結構體B、對象代表著正在創建的系統中的一個實體C、對象是類的一個變量D、對象之間的信息傳遞是通過消息進行的答案:A解析:類是對現實世界中客觀事物的抽象。對象是系統中用來描述客觀事物的一個實體。故A錯誤,B正確。對象是類的一個具象,類是對象的一個抽象。對象是類的實例,是類的一個變量。故C正確。對象之間通過消息進行信息傳遞,故D正確。90.對classpoint,如使用point*ptr=newpoint[2];創建對象數組,則刪除此數組使用的語句是()A、deleteptr[2];B、delete[]ptr;C、deleteptr[];D、delete[2]ptr;答案:B解析:當delete釋放動態對象數組時,必須告訴這個動態對象數組有幾個元素對象,C++使用“[]”來實現,即delete[]ptr;。91.包含自定義頭文件file.h的預處理指令是()A、#define<file.h>B、#includefile.hC、#definefile.hD、#include"file.h"答案:D解析:嵌入指令#include指示編譯器將一個源文件嵌入到帶有#include指令的源文件中該指令所在的位置。書寫時,可以使用引號,也可以用尖括號。尖括號引用系統提供的包含文件。雙引號引用自己定義的包含文件。根據題意,D選項正確。92.C++程序文件擴展名為()A、.cppB、.hC、.libD、.obj答案:A解析:在C++中,.cpp文件是源程序文件,即.cpp是程序文件擴展名。.h文件是頭文件。93.在inta=3,*p=&a;中,*p的值是()A、變量a的地址值B、無意義C、變量p的地址值D、3答案:D解析:指針p指向整型變量a,p中保存a的地址,而不是a中的值3。而*p表示地址中的值,即為3。地址與地址中的值不要混淆。94.假設給出如下的函數聲明:voidfunc(inta,intb=2,intc=3);,則下列函數調用正確的是()A、func(1,22,333);B、func();C、func("#",20);D、func(5,,9);答案:A解析:在C++語言中,可以在聲明函數時為形參指定默認值。當調用有默認參數值的函數時,調用語句中可以不給出對應的實參,這就相當于調用該函數時以默認值作為參數。

調用函數時,主調函數的實參與被調函數的形參按從左至右的順序進行匹配對應。本題中,“func(1,22,333);”是正確的,調用時給出了所有實參,且參數的類型也是匹配的。

“func();”是錯誤的,聲明中參數a沒有默認值,調用時必須給出實參值。

“func("#",20);”是錯誤的,實參表中的字符型實參#賦值給int型形參b,會產生編譯錯誤?!癴unc(5,,9);”是錯誤的,調用時給出的實參應該是連續排列的。95.類聲明的內容用花括號括起來,在花括號后跟哪個符號表示類聲明結束()A、:B、;C、,D、.答案:B解析:類所有聲明的內容用花括號括起來,右花括號后的分號(即;)作為類聲明語句的結束標志。96.設存在函數intmin(int,int)返回兩參數中較小值,若求15,26,47三者中最小值,下列表達式中錯誤的是()A、intm=min(min(15,26),min(15,47));B、intm=min(15,26,47);C、intm=min(15,min(47,26));D、intm=min(min(47,26),16);答案:B解析:函數的使用中參數的類型與個數應與聲明中保持一致。函數形參只有兩個參數,B選項傳遞了3個參數,故錯誤。97.適宜采用inline定義函數情況是()A、函數體含有循環語句B、函數體含有switch語句C、函數代碼多,不常調用D、函數代碼少,頻繁調用答案:D解析:定義內聯函數時只需在函數頭返回值類型的前面加上關鍵字inline。內聯函數的適用情況:只有幾條語句,且頻繁調用的小函數。故本題選D。98.下列表達式,能將P聲明為指向常量的指針的是()A、constint*P;B、int*constP;C、constint*constP;D、int*P;答案:A解析:C++語言也可以使用const限定訪問權限,const修飾指針變量時,基本含義如下:

1)如果唯一的const位于符號*的左側,表示指針所指數據是常量,數據不能通過本指針改變,但可以通過其他方式進行修改;指針本身是變量,可以指向其他的內存單元。

2)如果唯一的const位于符號*的右側,表示指針本身是常量,不能讓該指針指向其他內存地址;指針所指的數據可以通過本指針進行修改。

3)在符號*的左右各有一個const時,表示指針和指針所指數據都是常量,既不能讓指針指向其他地址,也不能通過指針修改所指向的內容。本題要聲明“指向常量的指針”,即所指數據是常量,故const在左側,選A。99.下列訪問成員的方式哪個是正確的()A、對象名.對象成員名B、對象指針名.對象成員名C、對象名->對象成員名D、類名->對象成員名答案:A解析:定義了類和對象后,就可以訪問對象的成員。通過對象訪問成員變量的一般格式如下:對象名.成員變量名故本題選A。還可以使用指針或引用的方式來訪問類成員。如果是通過指針訪問成員變量,則點運算符.換為箭頭運算符->,即使用“指針->成員名”的方式來訪問對象的成員。故BCD錯誤。100.關于類和對象不正確的說法是()A、類是一種類型,它封裝了數據和操作B、對象是類的實例C、一個類的對象只有一個D、一個對象必屬于某個類答案:C解析:對象就是一類物體的實例,將一組對象的共同特征抽象出來,從而形成“類”的概念。一個類的對象可以有很多,因此C項錯誤。101.在類外定義成員函數時,::運算符兩側分別連接()A、返回值類型函數名B、返回值類型類名C、函數名類名D、類名函數名答案:D解析:類體外函數定義的前面必須用“類名::”來限定,格式如下:返回值類型類名::成員函數名(參數列表)

{

成員函數的函數體

}102.若Test類中的一個成員函數set的說明如下:voidset(Test&a);,則Test&a的含義是()A、指向類Test的名為a的指針B、a是Test的對象引用,用來作函數set()的形參C、將a的地址賦給變量setD、變量Test與a按位與的結果作為函數set()的參數答案:B解析:首先,Test&a是函數set()的形參,根據引用的語法形式,a是一個引用,它的類型是Test&,也就是說,a是類Test的對象的引用。故本題選B。

set是函數名,不是變量名。符號&表示引用,不是按位與。103.關于封裝,下列說法中不正確的是()A、通過封裝,對象的全部屬性和操作結合在一起,形成一個整體B、通過封裝,一個對象的實現細節被盡可能地隱藏起來C、通過封裝,每個對象都成為相對獨立的實體D、通過封裝,對象的屬性都是不可見的答案:D解析:通過封裝,數據和操作數據的函數緊密聯系起來;還可以將對象的一部分屬性和函數隱藏起來,讓這部分屬性和函數對外不可見,而留下另一些屬性和函數對外可見,作為對對象進行操作的接口。故D錯誤,只有部分不可見。封裝特點:將對象的屬性及實現細節隱藏起來,只給出如何使用的信息。故B正確。封裝將對象屬性和操作結合在一起,構成獨立的單元。故A,C正確。104.布爾類型標識符是()A、voidB、shortC、longD、bool答案:D解析:布爾類型標識符是bool。如果函數沒有返回值,那么應聲明為void類型。short短整型。long長整型。105.cout是C++的()A、關鍵字B、對象C、類D、運算符答案:B解析:C++類中對象:

cin:運算符為>>,用于鍵盤輸入。cout:運算符為<<,用于屏幕輸出。故cout是對象。選B。106.下列不屬于C++關鍵字的是()A、externB、gotoC、freeD、default答案:C解析:

extern、goto、default是C++關鍵字。free不是C++關鍵字。107.下列哪個類型的函數適合聲明為內聯函數()A、函數體語句較多B、函數體語句較少C、函數體內含有循環D、函數體內含有switch語句答案:B解析:內聯函數一般來說僅適用于只有幾條語句的小函數。所以函數體語句較多的函數不適合聲明為內聯函數。含有循環語句和switch語句的函數,也不定義為內聯函數。108.若有以下的定義:inta=100,*p=&a;,則下列選項中,表述錯誤的是()A、聲明變量p,其中*表示p是一個指針變量B、變量p經初始化,獲得變量a的地址C、變量p只可以指向一個整型變量D、變量p的值為100答案:D解析:指針p指向整型變量a,p中保存a的地址,而不是值100。p指向的地址中的值是100。故D錯誤。注意:地址與地址中的值不要混淆。109.下列哪種默認參數的聲明是不正確的()A、intmax(inta,intb,intc,intd=0);B、intmax(inta,intb,intc=0,intd=0);C、intmax(inta=0,intb,intc=0,intd=0);D、intmax(inta,intb=0,intc=0,intd=0);答案:C解析:調用函數時,主調函數的實參與被調函數的形參按從左至右的順序進行匹配對應??傊x函數時,只能為函數最后面的連續若干個參數設置默認值,且在調用處也只能缺省后面的連續若干個實參。故只有C不符合在最后面連續設置默認值。110.按照標識符的要求,不能組成標識符的符號是()A、連接符B、下劃線C、大小寫字母D、數字字符答案:A解析:標識符命名規則:字母、數字和下劃線的組合,大小寫敏感,但不能以數字開頭,也不能和系統中使用的關鍵字完全相同。故不包括A。111.對于int*pa[5];的描述中,正確的是()A、pa是一個指向數組的指針,所指向的數組是5個int型元素B、pa是一個指向某數組中第5個元素的指針,該元素是int型變量C、pa[5]表示數組的第5個元素的值,是int型的值D、pa是一個具有5個元素的指針數組,每個元素是一個int型指針答案:D解析:int*pa[5]中pa是一個具有5個元素的指針數組,每個元素是一個int型指針。int(*pa)[5]中pa是一個指向數組的指針,所指向的數組是5個int型元素。112.下列不是C++語言的基本數據類型的是()A、字符類型B、整數類型C、邏輯類型D、枚舉類型答案:D解析:C++的基本數據類型:bool布爾型(又稱邏輯型)

char字符型

int整型

float浮點型

double雙精度浮點型故不包括D。113.假定指針變量p定義為"int*p=newint(100);",要釋放p所指向的動態內存,應使用語句()A、deletep;B、delete*p;C、delete&p;D、delete[]p;答案:B解析:如果是使用new運算符動態分配了一個數組,那么釋放該數組時,語句如下:delete[]指針;故本題選D。114.若二維數組y有m列,則位于y[i][j]之前的元素數量是()A、j*m+iB、i*m+jC、i*m+j-1D、i*m+j+1答案:B解析:二維數組y有m列,即每行有m個元素。y[i][j]前面的元素有前i行i*m個元素再加上第i行第j列前面的j個元素,一共i*m+j個元素。115.在函數調用時,如某一默認參數要指明一個特定值,則有()A、其之前所有參數都必須賦值B、其之后所有參數都必須賦值C、其前、后所有參數都必須賦值D、其前、后所有參數都不必賦值答案:A解析:定義函數時,只能為函數最后面的連續若干個參數設置默認值,且在調用處也只能缺省后面的連續若干個實參。調用函數時,主調函數的實參與被調函數的形參按從左至右的順序進行匹配對應。故默認值前的實參必須都賦值。選A。116.關于new運算符的下列描述中,錯誤的是()A、它可以用來動態創建對象和對象數組B、使用它創建的對象或對象數組可以使用運算符delete刪除C、使用它創建對象時要調用構造函數D、使用它創建對象數組時必須指定初始值答案:D解析:使用“類名*對象指針名=new類名;”創建對象時,調用無參的構造函數。如果這個構造函數是由編譯器為類提供的,則類中成員變量不進行初始化。使用“類名*對象指針名=new類名();”創建對象時,也調用無參的構造函數。如果這個構造函數是由編譯器為類提供的,則對類中的成員變量進行初始化。故創建對象都要調用構造函數,但不一定都指定初始值。故D錯誤,C正確。在C++語言中,使用new運算符實現動態內存分配??梢詣摻▽ο蠛蛯ο髷到M。使用new創建的對象,必須用delete來撤銷。故A、B正確117.編寫C++程序一般需經過的幾個步驟依次是()A、編輯、調試、編譯、連接B、編譯、調試、編輯、連接C、編譯、編輯、連接、運行D、編輯、編譯、連接、運行答案:D解析:用C++語言寫成的程序稱為源程序,源程序必須經過C++編譯程序翻譯成機器語言才能執行。一般需要經過編輯、編譯、連接、運行。118.存儲以下數據,占用存儲字節最多的是()A、0B、'0'C、"0"D、0.0答案:D解析:整型通常將8位的塊作為一個字節,32位或4個字節作為一個字(word)。一般float用一個字(32位)來表示。double類型用兩個字(64位來表示),longdouble類型用三個或四個字(96或128位)來表示。A為整型,B為字符,C為字符串,D為小數,為double類型,因此占用字符字節最多。119.下列哪個類型函數不適合聲明為內聯函數()A、函數體語句較多B、函數體語句較少C、函數執行時間較短D、函數被頻繁調用答案:A解析:內聯函數主要應用于代碼量少的函數,編譯時,編譯程序將整個函數體的代碼復制到調用該函數的位置,而不會編譯成函數調用的指令。故對于代碼量較大的函數,如果將其定義為內聯函數,則增加的程序長度對時空效率的不利影響很大。故內聯函數一般來說僅適用于只有幾條語句的小函數。答案為A。120.使用string.h庫操縱字符串時,將兩個字符串連接成一個字符串的函數是()A、strlen()B、strcap()C、strcat()D、strcmp()答案:C解析:strcat():用于連接字符串。strlen():返回字符串的長度。strcmp():比較兩個字符串的大小。不存在strcap()。故本題選C。121.如果有intx,*p;floaty,*q;則下面操作中,正確的是()A、p=xB、p=qC、p=&xD、p=&y答案:C解析:C選項,指針變量p指向整型變量×,正確。122.對于new類型名[size]描述正確的是()A、申請可以存儲size個字節的空間B、申請可以存儲1個該數據類型的空間C、申請可以存儲size個該數據類型對象的空間D、申請可以存儲1個字節的空間答案:C解析:使用new運算符還可以動態分配一個任意大小的數組:p=newT[N];

其中,T是任意類型名,p是類型為T*的指針,N代表數組“元素個數”。這條語句動態分配了N*sizeof(T)個字節的內存空間。即new類型名[size]//申請可以存儲size個該數據類型的對象。選C。123.關于對象性質,下列描述錯誤的是()A、同一類對象之間不可相互賦值B、可以使用對象數組C、對象可以用作函數參數D、一個對象可以用作另一個類的成員答案:A解析:對象是類的一個具象,類是對象的一個抽象。同一類的對象之間可以相互賦值。故A錯誤。124.采用重載函數的目的是()A、實現共享B、減少空間C、提高速度D、使用方便,提高可讀性答案:D解析:有了函數重載機制,C++程序員在編寫程序時,可以對完成類似功能的不同函數統一命名,可以有效重用代碼,增加可讀性。故本題選D。

針對同名的函數,分別為其編寫函數體,即可實現各自的功能。125.不能作為函數重載的判斷依據的是()A、constB、返回類型C、參數個數D、參數類型答案:B解析:實現函數的重載必須滿足下列條件之一:

(1)參數表中對應的參數類型不同。

(2)參數表中參數個數不同。用const修飾傳遞參數,意思是通知函數,它只能使用參數而無權修改它,可以作為函數重載的判斷依據。返回類型不能作為函數重載的依據。故本題選B。126.在C++中使用流進行輸入輸出,其中專用于從鍵盤進行輸入的流是()A、cerrB、cinC、coutD、cfile答案:B解析:C++類中對象:

cin:運算符為>>,用于鍵盤輸入。

cout:運算符為<<,用于屏幕輸出。故本題選B。127.對C++中主函數描述正確的是()A、名稱為main,可為多個B、名稱不限,可為多個C、名稱為main,必須有且只能有一個D、名稱不限,必須有且只能有一個答案:C解析:C++程序以.cpp作為文件擴展名,文件中包含若干個類和若干個函數。程序中必須有且僅有一個主函數main(),這是程序執行的總入口。128.使用重載函數的目的是()A、共享函數數據B、減少代碼量C、優化運行效率D、提高可讀性答案:D解析:函數重載,是指在程序的同一范圍內聲明幾個功能類似的同名函數。使用同一個函數名作為功能一樣的函數的函數名,這也符合人們的習慣。針對同名的函數,分別為其編寫函數體,即可實現各自的功能。故使用其可提高代碼可讀性。選D。129.所謂數據封裝就是將一組數據和與這組數據有關操作組裝在一起,形成一個實體,這實體也就是()A、類B、對象C、函數體D、數據塊答案:A解析:面向對象方法中的類:是對具有相同屬性和行為的同一類對象的抽象描述。故封裝將對象屬性和操作結合在一起,構成獨立的單元,即實體。故本題選A。130.以下敘述中不正確的是()A、在一個函數中,可以有多條return語句B、函數的定義不能嵌套,但函數的調用可以嵌套C、函數必須有返回值D、不同的函數中可以使用相同名字的變量答案:C解析:函數都需要由類型說明。intmain()指出main是整數類型,返回值由return后面的表達式決定,且表達式的值必須與聲明函數的類型一致。如果函數不需要返回值,還可用void標識。故C錯誤,函數可以沒有返回值。131.對指針動態分配空間用的關鍵字是()A、defineB、intC、newD、float答案:C解析:在C++語言中,使用new運算符實現動態內存分配。例如,可以寫如下的語句:

p=newT;故本題選C。B、D都是基本數據類型。132.考慮函數原型voidtest(inta,intb=7,charch='*'),下面的函數調用中,屬于不合法調用的是()A、test(5)B、test(5,8)C、test(6,'#')D、test(0,0,'*')答案:C解析:在C++語言中,可以在聲明函數時為形參指定默認值。當調用有默認參數值的函數時,調用語句中可以不給出對應的實參,這就相當于調用該函數時以默認值作為參數。調用函數時,主調函數的實參與被調函數的形參按從左至右的順序進行匹配對應。C選項中,實參有2個,少于形參的個數3,故從左至右匹配,將會把字符型實參#賦值給整型形參b,則會產生編譯錯誤。故選C。133.對使用關鍵字new所開辟的動態存儲空間,釋放時必須使用()A、freeB、createC、deleteD、release答案:C解析:使用new運算符動態申請的內存空間,需要在使用完畢釋放。C++提供了delete運算符,用來釋放動態分配的內存空間。delete運算符的基本用法如下:

delete指針;134.若有以下標志符定義:charc=’c’;inta=4;floatf=3.14;doubled=1.212;則表達式c+a/(int)d+f的結果類型是()A、floatB、charC、intD、double答案:D解析:當不同類型的量進行混合算術運算時,系統自動進行合理的類型轉換,編譯器就會自動把低級類型向高級類型轉換。數據類型級別由低到高分別為:char→int→float→double。轉換時由低級別向高級別轉換。會自動提升為參與表達式求值的最上級類型double。故本題選D。也可以在程序中使用強制類型轉換運算符:static_cast或const_cast。135.C++中注釋“//”的有效范圍是()A、從“//”開始到行尾B、從“//”開始到下一個“//”C、“//”及其后一個字符D、從“//”開始到程序尾答案:A解析:C++程序中,仍沿用C語言的注釋風格,即注釋有以下兩種形式。

1)從/*開始,到*/結束,這之間的所有內容都視作注釋。

2)從//直到行尾,都是注釋。故本題選A。136.下面不能夠判斷字符串S是空串的是()A、if(S[0]==0)B、if(strlen(S)==0)C、if(strcmp(S,"")==0)D、if(S=='\0')答案:D解析:S字符串的第一個字符,即S[0]=0,說明S是空串,A正確。系統函數strlen()表示字符串S的長度,若等于0,則判斷字符串S是空串,B正確。系統函數strcmp()表示比較兩個字符串,若相等,返回0,故strcmp(S,"")==0可以判斷字符串S是空串,C正確。S=='\0'這個表達式左邊是字符串,右邊是字符,顯然是非法的,如果改寫成if(S=="\0")就可以判斷字符串S是否是空串。故D錯。137.關于對類的描述中,錯誤的是()A、類是創建對象的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論