國家二級(C++)筆試模擬試卷2_第1頁
國家二級(C++)筆試模擬試卷2_第2頁
國家二級(C++)筆試模擬試卷2_第3頁
國家二級(C++)筆試模擬試卷2_第4頁
國家二級(C++)筆試模擬試卷2_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級(C++)筆試模擬試卷第I套

一、公共基礎選擇題(本題共70題,每題7.0分,共

70分。)

1、需求分析階段的任務是確定

A、軟件開發(fā)方法

B、軟件開發(fā)工具

C、軟件開發(fā)費用

D、軟件系統(tǒng)功能

標準答案:D

知識點解析:暫無解析

2、數據庫系統(tǒng)的核心是

A、數據庫

B、數據庫管理系統(tǒng)

C、模擬模型

D、軟件工程

標準答案:B

知識點解析:數據庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)是數據

庫的機構,它是一種系統(tǒng)軟件,負責數據庫中的數據組織、數據操縱、數據維護、

控制及保護和數據服務等,數據庫管理系統(tǒng)是數據庫系統(tǒng)的核心。

3、下列程序執(zhí)行后,輸出的結果是()。intx=-5,y=O;while(++x)y++;cout<<y<

<endl;

A、1

B、2

C、4

D、5

標準答案:C

知識點解析:暫無解析

4、下面程序輸出的結果為O。#include<iostream.h>voidfun(inta,intb){inttemp;

temp=a;a=b;b=teinp;}voidmain(){intm,n;m=l;n=2;fun(m,n);cout<<m<<n"<

<n<<endl;|

A、12

B、21

C、22

D、程序有錯誤

標準答案:A

知識點解析:函數fun中定義的參數a和b為形式參數,它們并不是實際存在的數

據,只有在發(fā)生函數調用時才被分配內存空間,結束后,形參所占有的內存單元也

被釋放。并且函數fun沒有返回值,它做的交換操作,并不能影響實際參數m和

no所以輸出值保持不變,仍然是1和2,即輸出:12。

5、模板對類型的參數化提供了很好的支持,因此

A、類模板的主要作用是生成抽象類

B、類模板實例化時,編譯器將根據紿出的模板實參生成一個類

C、在類模板中的數據成員都具有同樣類型

D、類模板中的成員函數都沒有返回值

標準答案:B

知識點解析:類模板是一個通用類,不知道其數據成員和成員函數的返回類型和形

參類型,系統(tǒng)會根據實參的類型來取代類模板中的虛擬類型從而實現不同類的功

能。類模板中的數據成員的類型并非一定要一致。

6、下列有關指針的用法中,錯誤的是()。

A、inti;int*p=&i;

B、inti;int*p;i=*p;

C、int*p;p=O;

D、inti=5;int*p;p=&i;

標準答案:B

知識點解析:"inii;”語句為定義了一個整型變量i。"ini*p”為定義一個整型指針

p。選項A)中的“int*p=&i;"是定義整型指針變量p,并指向整型i的地址。選項B)

中“i=*p”語句是將p指向的變量賦值給i,而指針p沒有初始化,所以選項B)錯

誤。選項。中“p=0;”表示p指向0的地址。選項D)中“&i”為取i的地址,并賦值

給p?

7、下列關于線性鏈表的敘述中,正確的是()。A)各數據結點的存儲空間可以不連

續(xù),但它們的存儲順序與邏輯順序必須一致B)各數據結點的存儲順序與邏輯順序

可以不一致,但它們的存儲空間必須連續(xù)C)進行插入與刪除時,不需要移動表中

的元素D)以上三種說法都不對

A、

B、

C、

D、

標準答案:C

知識點解析:暫無解析

8、下列模式中,能夠給出數據庫物理存儲結構與物理存取方法的是.

A、內模式

B、外模式

C、概念模式

D、邏輯模式

標準答案:1

知識點解析:外模式通常是模式的子集。數據按外模式的描述提供用戶,按內模式

的描述存儲在硬盤上,而模式介于外、內模式之間,既不涉及外部的訪問,也不涉

及內部的存儲,從而起到隔離作用,有利于保持數據的獨立性。內模式依賴于全局

邏輯結構,但可以獨立于具體的存儲設備。

9、下列敘述中,不正確的是()。

A、一個數據結構中的元素在計算機存儲空間中的位置關系與邏輯關系可能不同

B、一個數據結構中的元素在計算機存儲空間中的位置關系與邏輯關系一定不同

C、數據的存儲結構,也稱數據的物理結構。

D、數據的存儲結構與數據的邏輯結構是不同的

標準答案:1

知識點解析:一個數據結構中的元素在計算機存儲空間中的位置關系與邏輯關系不

一定相同,例如在家庭成員的數據結構中,“兒子''和“女兒”都是“父親''的后件,但

在計算機存儲空間中,艱木不能將“兒子”和“女兒”這兩個數據元素的信息都緊鄰存

放在“父親”這個數據元素后邊。但在一年四季的數據結構中,“春、'是"熨、’的前,牛,

在計算機存儲空間中,就可以把“春”存儲在"夏''的前面。數據的邏輯結構在計算機

存儲空間中的存放形式稱為數據的存儲結構,也稱數據的物理結構。

10、兩個或兩個以上模塊之間關聯的緊密程度稱為

A、耦合度

B、內聚度

c骨卒所

D:數次傳輸特性

標準答案:A

知識點解析:本題考核模塊獨立性的評價。評價模塊獨立性的主要標準有兩個:

是模塊之間的耦合,它表明兩個模塊之間互相獨立的程度,也可以說是兩個或兩個

以上模塊之間關聯的緊密程度(所以,本題的正確答案為選項A):二是模塊內部之

間的關系是否緊密,稱為內聚。一般來說,要求模塊之間的耦合盡可能地弱,即模

塊盡可能獨立,而要求模塊的內聚程度盡量地高。

二、選擇題(本題共25題,每題1.0分,共25分。)

“、靜態(tài)數據成員是為()的數據。

A、私有

B、保護

C、所有對象共享

D、類成員

標準答案:c

知識點露析:靜態(tài)數據成員是一種特殊的數據成員。靜態(tài)數據成員不屬于某一個對

象,在為對象所分配的空間中不包括靜態(tài)數據成員所占的空間。所有對象共享這些

靜態(tài)數據成員,都可以引用它。

12、下面程序的輸出結果是()。#include<iostream.h>#include<string.h>void

main(){charpl[10],p2[10];strcpy(p1?"abc’');strcpy(p2,"ABC");

charsty[50]-'xyz^;strcpy(str+2,strcat(pl,p2));cout<<str;)

A、xyzabcABC

B、zabcABC

C、xyabcABC

D、yzabcABC

標準答案:C

知識點解析:該函數的調用方式是sircpy(字符數組,字符串)其中“字符串“可以是

串常量,也可以是字符數組。函數的功能是將“字符串"完整地復制到“字符數組”

中,字符數紐中原有內容被覆蓋。使用該函數時注意:①字符數組必須定義得足

夠大,以便容納復制過來的字符串。復制時,連同結束標志,'\0'一起復制。②不

能用賦值運算符“="將一個字符串直接賦值給一個字符數組,只能用strcpy()函數

來處理。strcai(字符數組,字符串)功能是把''字符串''連接到''字符數組''中的字符串

尾端,并存儲于''字符數組"中?!白址麛到M”中原來的

13、下列表達式的值為false的是()。

A、1<3&&5<7

B、!(2>4)

C、3&0&&1

D、!(5<8)II(2<8)

標準答案:C

知識點解析:fake為邏輯常量.即假°A為1小于3并且5小于7.這個是直的:

B是2不大于4也為真;選項D)是5大于8或者2小于8,只要有一個為真,所以

選項D)也為真。C中為按位的與運算,3和0按位與,然后再與1,結果為

假。

14、對于下面的程序:ifstrcamfin(c:\test.txt);if(fin)cout<<"ok";elsecout<<

"wrong";if語句中的內容可以換為

A、fin.fail();

B、fin.bad();

C、fin.good();

D^fin.eof();

標準答案:C

知識點解析:C++語言中判斷文件操作成功主要有兩個函數goods和fail(),其

中if(文件流名.good())和if(!文件流名名il()),還有if(文件流名)都可以表示判斷

文件操作是否成功。

15、重載輸入流運算符>>必須使用的原型為()。

A^istream&operator>>(istream&,<類名>&);

istream&operator>>(istream,V類名>);

C、istreamoperator>>(istream,<類名>&);

D、(類名>operator>>(istream&,<類名>&);

標準答案:A

知識點解析:C++流的輸入運算符“>>”和輸出運算符“VV”只能作為非成員函數

重載。重載輸入流運算符“>>”須使用以下原型:islream&operator>>(istream&,

V類名〉&);。

16、有如下定義:intb[10]={l,2,3,4,5,6,7,8,9,10],*q=b;則數值為8的表

達式是()。

A、*q+8

B、*(q+7)

C、*q+=8

D、q+7

標準答案:B

知識點解析:數組的下標是從0到數組的長度減1。*(p+i)是取數組的第i+1個元

素,即下標為i的元素。囚山l*(p十7)取數組的笫八個兀素,即元素8。

17、以下程序中調用cin函數給變量a輸入數值的方法是錯誤的,其錯誤原因是

#inckidevoidmain(){int*p,*q,a,b;p=&a;cout<<"inputa:";

cin>>p;)

A、*p表示的是指針變量p的地址

B、p表示的是變量a的地址,而不是變量a的值

C、*p表示的是指針變量p的值

D、*p只能用來說明p是一個指針變量

標準答案:R

知識點解析:p表示的是變量a的地址,定義后*p表示的是變量a的值。

18、友元運算符objl>。初2被C++編譯器解釋為()。

A^operator〉(obj1,obj2)

B、>(objl,obj2)

C、obj2.operator>(obj1)

D^obj1.operator>(obj2)

標準答案:1

知識點解析:暫無解析

19、下面程序的運行結果是()。#include<iostream.h>intx=5;intfun(inta){int

c;C=X*a;returnc;)voidmain())intx=3,a=4;x=x+fun(a);cout<<"x,n,<<

X<<endl;}

A、x=15

B、x=17

C、x=23

D、x=25

標準答案:4

知識點解析:暫無解析

20、請指出程序片段的語法錯誤o

A、int*age_ptr;

B、intm=3;

C、*age_ptr=&m:

D、*age_ptr=10;

標準答,4

知識點解析:暫無解析

21、卜列程序的輸出結果是o#include<iostream>usingnamespacestd;int

main(){chara[]=,'Hello,World";char*ptr=a;while(*ptr){if(*ptr)=,a'&&

*ptr,V='z')cout<<char(*ptr+,A,-,a,);elsecout<<*ptr;ptr++;}return0;}

A、HELLO,WORLD

B、Hello,World

C、hELLO,WORLD

D、hello,world

標準答案:1

知識點解析:對于str的每個字母,如果是大寫字母或者是非字母,就直接打印出

來。如果是小寫字母,就轉化成大寫字母,然后打印。,A-a,正是大小寫字母的

ASCH碼之差。

22、若有如下語句#includeViostream.h>voidmain(){intx=3:do{X=X-2:

cout<<X;)while(!(-x));}則上面程序段

A、輸出的是1

B、輸出的是1和-2

C、輸出的是3和0

D、是死循環(huán)

標準答案:2

知識點解析:do—while語句的一般格式為do循環(huán)體語句while(表達式);,先執(zhí)

行循環(huán)體語句一次,再判斷表達式的值,若為真則繼續(xù)執(zhí)行循環(huán),否則終止循環(huán)。

本題中,先執(zhí)行x=x-2,即為1。判斷表達式的值,!(-x)為真,x=0,繼續(xù)循環(huán)。再

次執(zhí)行循環(huán)體語句后,x=-2,此時表達式的值為0,結束循環(huán)。

23、下列語句的輸出結果cout<<strlen("\t\"\065\xff\nH);

A、5

B、14

C>8

D、輸出項不合法,無E常輸出

標準答案:1

知識點解析:該字符串中包含的字符是''(跳格符)、(雙引號)、'\065,(ASCn值

為八進制065,也即十進制為51的字符)、為fP(ASCn值為十六進制ff,也即十進

制為255的字符)、'\n,(換行符)。

24、有如下說明inta[10]={l,2,3,4,5,6,7,8,9,10),*p=a;則數值為9

的表達式是

A、*p+9

B、*(p+8)

C、*p+=9

D、p+8

標準答案:2

知識點解析:在C++語言的數組元素的引用方法,如數組元素a[0],可以用表達式

*(p+0),即*p來引用,對于數組元素a[l],可以用表達式*(p+l)來引用,在這里,

p+1的值就是數組元素a[l]的地址,對此地址使用“間接訪問運算符”:*(p+l)就代表

存儲單元a|l注意:一對圓括號不可少。同樣,對于數組元素a|2],則可以用表

達式.(p+2)來引用…,對于數組元素al9],可以用表達式*(p+9)來引用。因此,當

指針變量p指向a數組的起始地址時,若0W<10,則數組元素a[i]可以用*(p+i)。

25、若有定義:int*p;則下列各選項中,不同于表達式“*p=*p+l;”的是()。

A、*p++;

B、++*p;

C、*p+=l;

D、++(*p);

標準答案:1

知識點解析:題目中的語句“*p=*p+l;”是將指針變量p所指向的存儲單元的值加

1?然后再放入p所指向的存儲單元中°選項A中,語句“*ivH?:當把該表達式

賦給一整型變量k時,就會發(fā)現,原語句可變?yōu)椤発=*p;p=p+1;”,即語句“*p++”

最后所執(zhí)行的是p的值(即p中存放的地址)加1,與題中語句“*p=*p+l;”的意思不

同。再來看選項B,C,D,選項B中的語句可表示為“*p=*p+l;選項C中的

語句可表示為“*p=*p+l;選項D中的語句也可表示為“*p=*p+l;

26、若有以下定義和語句:inis[4][5],(*ps)[5];ps=s;則對s數組元素的正確引

用形式是()。

A、ps+1

B、*(ps+3)

C、ps[0]⑵

D、*(ps+l)+3

標準答案:4

知識點解析:暫無解析

27、不合法的main函數命令行參數表示形式是()。

A^main(intchar*c[l]

B、main(intarc,char**arv)

C、main(intargc,char*argv)

D、main(intargy,char*argcd)

標準答案:4

知識點解析:暫無解析

28、派生類對象對其基類中的什么成員是可訪問的?

A、公有繼承的私有成員

B、私有繼承的公有成員

C、私有繼承的保護成員

D、保護繼承的保護成員

標準答案:8

知識點解析:C++語言中通常有三種繼承修飾符public,protected,Privale,限制

依次嚴格,另外對類中的數據和函數也有這三種修飾符進行限制,有3種是不能繼

承的:公有繼承基類的私有成員,私有繼承基類的私有成員,保護繼承基類的私有

成員。

29、下面程序應能對兩個整型變量的值進行交換。以下正確的說法是

#include<iostream.h>voidswap(intp,intq){intt;t=p;

p=q;q=t;}voidmain(){inta=10,b=20:cout<

<a<<n"<<b;swap(&a,&b);cout<<a<<""<<

b;}

A、該程序完全正確

B、該程序有錯,只要將語句sw叩(&a,&b);中的參數改為a,b即可

C、該程序有錯,只要將swap()函數中的形參p和q以及I均定義為指針(執(zhí)行語句

不變)即可

D、以上說法都不對

標準答案:8

知識點解析:本題應該?Eswap()函數改成這樣:swap(int*P,int*q){intt;t=*p;

*p二*q;*q=t;)執(zhí)行程序時,先將a的地址傳遞給指針變量p,b的地址傳遞給指

針變量q,然后將*p(a的值)的值傳遞給I,將*q(b的值)傳遞給*p,將I的值傳遞

給*q,從而將a值和b值互換。

30、若執(zhí)行以下程序時從鍵盤上輸入9,則輔出結果是main。{int

n;cin>>n;if(n++<10)cout<<n<<endl;elsecout<

<n—<<endl;}

A、11

B、10

C>9

D、8

標準答案:B

知識點解析:本題考察的是后置自增運算符的知識,這類題考生往往做錯,以原因

不能正確拆解。題中if語句可以拆解為:if(9V10),n+l=10,coutVV10VVendl;

自增所代表的加一操作要緊跟在原表達式后面,而不是原語句后面。

31、下列各類函數中,不是類的成員函數的是

A、構造函數

B、析構函數

C、友元函數

D、拷貝構造函數

標準答案:C

知識點解析:構造函數包括默認構造函數和拷貝構造函數等,析構函數和構造函數

一樣屬于類的特殊的成員函數.而友元函數則是為了增加類的訪問靈活行而允許其

他類的成員函數或全局函數訪問類的內部變量或成員函數的一種機制,其缺點是破

壞了類的封裝性。

32、如下程序的輸出結果是main(){inta=2,b=-l,c=2;if(a<B)if(b<O)c=O;else

c++;cout<<c<<end1;}

A、0

B、1

C、2

D、3

標準答案:C

知識點解析:本題考察的是if…else語句中的配對原則:與最近的配對,故當aVb

為假時直接執(zhí)行輸出語句,即c的值是2,正確答案為C。

33、下面敘述不正確的是()<,

A、在函數中,通過return語句傳回函數值

B、在函數中,可以有多條return語句

C、主函數名main。后的一對圓括號中也可以帶有參數

D、調用函數必須在一條獨立的語句中完成

標準答案:D

知識點解析:調用函數不必在一條獨立的語句中完成。

34、關于關鍵字class和typename,下列表述正確的是

A、程序中所有的typename都可以替換為class

B、程序中所有的class都可以替換為typename

C、A)和B)都正確

D、A)和B)都不正確

標準答案:A

知識點解析:暫無解析

35、已知Value是一個類,value是Value的一個對象。下列以非成員函數形式重

載的運算符函數原型中,正確的是

A^Valueoperator+(Valuev,inti);

B>Valueoperator+(Valuev=value,inti);

C、Valueoperator+(Valuev,inti=0);

D^Valueoperator+(Valuev=value,inti=0);

標準答案:B

知識點解析:類名operator+(類名String&si,類名Siring&s2)。

三、公共基礎填空題(本題共5題,每題1.0分,共5

分。)

36定義字野指計char?$17=伙110”?已知§izeRstr)=4,則strkn(str尸.

標準答案:5

知識點解析:暫無解析

37、在兩種基本測試方法中,測試的原則之一是保證所測模塊中每一個

獨立路徑至少執(zhí)行一次。

標準答案:白盒

知識點解析:按功能劃分測試可分為白盒測試和黑盒測試。白盒測試的原則是保證

所測試模塊中每一獨立路徑至少執(zhí)行一次;保證所測試模塊所有判斷的每一分支至

少執(zhí)行一次;保證所測試模塊每一循環(huán)都在邊界條件和一般條件下至少各執(zhí)行一

次:驗證所有內部數據結構的有效性。

38、

軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護期,詳細設計屬于中的一個階段.

標準答案;軟件開發(fā)

知識點解析:軟件生命周期分為三個時期共八個階段:軟件定義期(問題定義、可

行性研究和需求分析階段)、軟件開發(fā)期(系統(tǒng)設計、詳細設計、編碼和測試階段)、

軟件維護期(即運行維護階段)。

39、有如卜.程序:#include<iostream>usingnamespacestd;classCA{public:

CA(){cout<<,A,;}};classCB:privateCA{public:CB(){cout<<,B,;));

intmain()(CAa;CBb;return0:{運行時的輸出結果是。

標準答案:AAB

知識點解析:CAa生成一個cA類對象a,調用CA的構造函數一次,打印,

CBb中的b是派生類,在構造時先調用基類的構造函數,然后調用派生類的構造

函數,故先打印'A,后打印,

40、在數據庫技術中,實體集之問的聯系可以是一對一或一對多或多對多的,那么

“學生”和“可選課程”的聯系為。

標準答案:多對多

知識點解析:一名學生可選擇多門課程,一門課程也可由多名學生選擇,因此是多

對多聯系。

四、填空題(本題共70題,每題1.0分,共10分。)

41、有如下類聲明:class1.estClassl{intk:public:voidset(intn)(k=n;)int

get()const{returnk;)};classTestClass2:protectedTestClass1{protected:inij;

public:voidset(intm,intn){TestClass1::set(m):j=n:)intgetoconst{return

TestClass1::get()+j;));則類TestClass2中保護的數據成員和成員函數的個數

是o

標準答案:3

知識點解析:首先在TestClass2中聲明為protected的變量j為保護的數據成員,然

后TeslClass2保護繼承于TestClass1,所以基類TestClass1中的公有成員和保護成

員在派生類TestClass2中都成了保護成員。即get和set函數都成了保護成員。

42、寫出執(zhí)行完下列代碼段之后指定變量的值:boolx=true,y=false,z=false;

x=x&&yIIz;y=xIIy&&z;z=!(x!=y)II(y==z),則x=false,y=false,z=[]o

標準答案:真

知識點解析:暫無解析

43、指針變量所保存的不是一般的數據值,而是程序中另一個對象的【】。

標準答案:內存地址

知識點解析:暫無解析

44、函數swap(arr,n)可完成對arr數組從第1個元素到第n個元素兩兩交換。在運

行調用函數中的語句后,a[0]和a[l]的值分別為[]oa[0]=l;a[l]=2;swap(a,2);

標準答案;2,1

知識點解析:暫無解析

45、若要在C盤根目錄下作為二進制文件打開文件test,dat,則應該用的語句是

(10

標準答案:ifstream且fin("C:\tesl.daf\ios_binary);或itslreamfin,;

fin.open(c:\test.dat",ios_binary);

知識點解析:C++中打開文件有兩種方式①ifstreamfin("test,dat”);②ifstream

fin;fin.open(utest.dal");,沁s_binary的意義是以二進制文件打開。

46、operator是運算符重載時必須使用的關鍵字,它和被重載的運算符連在一起,

作為運算符函數的專用函數名,務必把該函數說明為的。

標準答案:public

知識點解析:暫無解析

47、多態(tài)性分為兩類:編譯時的多態(tài)性和【】的多態(tài)性。

標準答案:運行時

知識點解析:本題考核多態(tài)性的概念。在C++語言中,多態(tài)性可分為兩類:編譯

時的多態(tài)性和運行時的多態(tài)性。

48、耦會和內聚是評價模塊獨立性的兩個主要標準,其中反映了模塊內各成

分之間的聯系。

標準答案:內聚

知識點解析:暫無解析

49、在C++流類庫中,根基類為o

標準答案:ios類

知識點解析:暫無解析

50、下面程序的運行結果為[]o#include<iostream.h>voidfun(intx=0,int

y=0){cout<<x<<y;}voidmain(){fun(5);]

標準答案:50

知識點解析:本題考查的是函數的默認參數,如果一個函數中有多個參數,則默認

參數應從右至左逐個定義,所以題目中x使用參數5,y使用默認參數0。

國家二級(C++)筆試模擬試卷第2套

一、公共基礎選擇題(本題共10題,每題7.0分,共

10分。)

1、首先訪問該結點,然后訪問結點的左子樹,最后訪問結點的右子樹,這種遍歷

方式稱為()0

A、前序遍歷

中序遍歷

C、后序遍歷

D、順序遍歷

標準答案:A

知識點解析:前序遍歷序列的順序是先根、再左子樹、最后右子樹;中序遍歷序列

的順序是先左子樹、再根、最后右子樹;后序遍歷序列的順序是先左子樹、再右子

樹、最后根。

2、冒泡排序算法在最好的情況下的元素交換次數為()o

A、0

B、1

C、元素個數

D、元素個數的2倍

標準答案:A

知識點解析:在數據已經排序好的情況下,冒泡排序算法不需要進行元素交換。

3、字符串通常采用的兩種存儲方式是()。

A、鏈式存儲結構和索引存儲結構

B、順序存儲結構和散列存儲結構

C、順序存儲結構和鏈式存儲結構

D、索引存儲結構和散列存儲結構

標準答案:c

知識點詞析:字符串的兩種最基本的存儲方式是順序存儲方式和鏈接存儲方式。

4、在面向對象的系統(tǒng)中,系統(tǒng)責任的良好分配原則是()o

A、根據個人喜好進行分配

B、在類之間均勻分配

C、根據交互圖的消息進行分配

D、集中分配在少數控制類中

標準答案.D

知識析:在面向對象的系統(tǒng)中,系統(tǒng)責任的良好分配原則是集中分配在少數控

制類中。

5、軟件工程管理的具體內容不包括對()管理。

A、開發(fā)人員

B、組織機構

C、用戶

D、設備

標準答案:D

知識點解析:軟件工程管理包括六個子域,即啟動和范圍定義、軟件項目計劃、軟

件項目實施、評審與評價、關閉、軟件工程度量。軟件工程管理的具體內容包括對

開發(fā)人員、組織機構、用戶、文檔資料等方面的管理。

6、軟件測試中根據測試用例設計的方法的不同可分為黑盒測試和白盒測試兩種,

它們()o

A、前者屬于靜態(tài)測試,后者屬于動態(tài)測試

B、前者屬于動態(tài)測試,后者屬于靜態(tài)測試

C、都屬于靜態(tài)測試

D、都屬于動態(tài)測試

標準答案:D

知識點解析:常用的軟件測試方法有兩大類:靜態(tài)測試方法和動態(tài)測試方法。靜態(tài)

測試主要是以一些人工的模擬技術對軟件進行分析和測試。動態(tài)測試包括黑盒測試

和白盒測試兩種。

7、屬于關系的基本類型的是()o

A、堆棧表

B、視圖表

C、雙列表

D、散列表

標準答案:B

知識點解析:數據庫中關系的基本類型包括基本表、視圖表和查詢表?;颈硎顷P

系數據庫中實際存在的表,是實際存儲數據的邏輯表示;視圖表是由基本表或其他

視圖表導出的表;查詢表是指查詢結果表或查詢中生成的臨時表。

8、數據庫的邏輯結構設計階段的任務是將概念結構設計階段所得到的概念模型轉

換為具體DBMS所能支持的()。

A、記錄模型

B、具體模型

C、數據模型

D、參數模型

標準答案:c

知識點.析:概念模型用于信息世界的建模,其不依賴于某一個DBMS支持的數

據模型。概念模型可以轉換為計算機,某一DBMS支持的特定數據模型。

9、數據庫物理結構設計不包括()。

A、存儲記錄結構設計

B、存儲記錄布局

C、存儲記錄的值

D、存取方法設計

標準答案:C

知識點解析:數據庫物理結構設計主要包括存儲記錄結構設計、存儲記錄布局和存

取方法設計二個方面c

10、依照某種數據模型組織起來并存放二級存儲器中的數據集合是指()o

A、數據庫

B、數據表

C、數據倉庫

D、數據記錄

標準答案:A

知識工解析:數據庫是依照某種數據模型組織起來并存放二級存儲器中的數據集

合。

二、選擇題(本題共25題,每題分,共25分。)

11、設a,b,c都是int的變量,且a=3,b=4,c=5,則下面的表達式中值為。的

是()

A、匕’&&力’

B、a<=b

C^a||b+c&&b-c

D、!((a<b)&&!c||l)

標準答案:D

知識點解析:該題主要考查運算符的優(yōu)先級,另外,在C++語言中任何非零值都

被看做true,值為I。前三個表達式的值都是0。

12、設ch是chai■型變量,其值為,AL則下面表達式的值是()。

ch=(ch>='A'&&chV=2')?(ch+32):ch

A、A

B、a

C、Z

D、z

標準答案:B

知識點解析:ch=(ch>=,A,&&ch<=,Z,)?(ch+32):ch,其中,初始ch='A',則ch

>='A'&&chV='Z'為真,執(zhí)行ch+32變成小寫a。

13、下列運算符中,要求運算對象必須是整數的是()。

A、/

B、*

C、%

D、!

標準答案:C

知識點解析:題目中“尸、的運算對象既可以是整數,也可以是實數,只有

取余數運算符“%”要求運算對象必須是整數C

14、以下程序的輸出為()。main(){inta=20,b=30,

c=40;if(a>b)a=b,b=c;c=a;cout<<

"a="<<a<<nb="<<b<<"c="<<c:}

A、a=20,b=30,c=20

B、a=20,b=40,c=20

C、a=30,b=40,c=20

D、a=30,b=40,c=30

標準答案:A

知識點解析:題中的a=b,b=c;是一個語句書寫在了兩行,因a>b為假,所以此

句不執(zhí)行,又“c=a”與if語句無關,總要執(zhí)行,故a、b值不變,c值為20。

15、下面程序運行結果為()omain(){charc=,a\

if(,a,<c<='z')cout<<nLOW";elsecout<<

"UP";!

A、LOW

B、UP

C、LOWUP

D、語句錯誤,編譯不能通過

標準答案:A

知識點解析:關系運算符“V"和“<=''的優(yōu)先級相同,計算順序是從左向右,求解

表達式匕yc時,是先計算出匕yc的值(此值只有。和1兩種情況),接著

再判斷該值小于等于*12的ASCH碼是122),所以該式的值永遠為1,程序輸出

LOWo

16、以下說法中正確的是()。

A、C++程序總是從第一個定義的函數開始執(zhí)行

B、C++程序總是從main函數開始執(zhí)行

C、C++函數必須有返回值,否則不能使用函數

D、C++程序中有調用關系的所有函數必須放在同一個程序文件中

標準答案:B

知識點解析:C++程序總是從main函數開始執(zhí)行。

17、假定變量m定義為intm=7;則定義變量p的正確語句為()。

A、intp=&m;

B、int*p=&m;

C^int&p=*m;

D、int*p=m;

標準答案:B

知識點解析:將變量m的地址賦給指針山

18、下面程序的運行結果為()o#include<iostream>using

namespacestd;voidmain(){inta=l;

switch(a){case1:cout<<"r,;

case2:cout<<"2";break;

default:cout<<"0";})

A、12

B、120

C、1

D、10

標準答案:A

知識點解析:switch語句檢測到符合條件case執(zhí)行后面語句不再判斷。

19、下面程序的運行結果為()。#include<iostream>using

namespacestd;voidswap(int&a,int

&b)(inttemp;tcmp=a;

a=b;b=temp;}void

main(){inta=2,b=3;swap(a,b);

cout<<a<<n,n<<b<<ENDL;}

A、2,3

B、3,2

C、2,2

D、3,3

標準答案:B

知識點解析:函數形參是引用方式,則在函數體內形參改變,對應的實參也改變。

20、對于下面程序,對進行賦值正確的是()oclass

A{public:fun(inti){cout<<i<<endl;)};

main(){void(A::*p)(int);}

A、p=fun;

B、p=fun();

C、p=A::fun;

D、p=A::fun()

標準答案:C

知識點解析:給類函數指針賦值的格式是:V指針名>=<類名::函數名〉

21、下面程序的運行結果為()。#include<iostream>using

namespacestd;classA{public:A(){cout<

<")?A(){coutVV"";}}classB:

publicA{public:B(){oout<<n

":)-B(){coiit<<H":})void

main(){Bb;}

A、1234

B、1324

C、1342

D、3142

標準答案:C

知識點解析:構造函數和析構函數系統(tǒng)可以自動調用。先執(zhí)行其基類構造函數,輸

出1;執(zhí)行派生類的構造函數,輸出3;執(zhí)行派生類析構函數,輸出4;執(zhí)行基類

析構函數,輸出2。

22、下面函數的運行結果是()o#include<iostream>using

namespacestd;classA{public:A(){}

intMin(inta,intb){returna<b?a:b:}intMin(int

a,intb,intc){if(a<b)returna<c?a:c;

elsereturnb<c?b:c;)?

A(){}};voidmain(){Aa;

cout<<a.Min(l,2,3)<<a.Min(2,0);}

A、10

B、12

C、30

D、32

標準答案:A

知識點解析:函數的重載調用。首先調用3個參數返回最小值I,再調用2個參數

返回最小值0o

23、關于拷貝初始化構造函數,描述不正確的是()。

A、拷貝初始化構造函數是類的成員函數,函數名與類名相同。

B、函數只有一個參數,并且是對某個對象的引用

C、每個類都必須有一個拷貝初始化構造函數。

D、要定義拷貝初始化構造函數,必須指定返回類型

標準答案:D

知識點解析?:拷貝初始叱構造函數也是一個構造函數,也沒有返回類型。

24、在多繼承中,公有派生和私有派生對于基類成員在派生類中的可訪問性與單繼

承的規(guī)則()。

A、完全相同

B、完全不同

C、部分相同

D、以上都不對

標準答案:A

知識點解析:在多繼承中,公有派生和私有派生對于基類成員在派生類中的可訪問

件與單繼承的規(guī)則完全相同C

25、在派生類中,重載一個虛函數時,要求函數名、參數的個數、參數的類型、參

數的順序和函數的返回值()。

A、完全相同

B、完全不同

C、部分相同

D、以上都不對

標準答案:A

知識點解析:在派生類中,重載一個虛函數時,要求函數名、參數的個數、參數的

類型、參數的順序和函數的返回值相同。

26、假設有函數模板定義如下,下列各選項中正確的是()。Template

<classT>TMax(Ta,Tb,Tc){if(a<b)

{if(b<c)returnc:else

returnb;}else{if(a<c)

returnc;elsereturn

a;})

A、floatx,y,z;floatmax;max=Max(x,y,z);

B、floatx;inty,z;floatmax;max=Max(x,y,z);

C、floatx;doubley,z;floatmax;max=Max(x,y,z);

D、三個選項都正確

標準答案:A

知識點解析:使用函數模板,要求形參必須為相同類型。

27、下列的模板說明中,正確的是()。

A^template<T1,T2>

B、template<classTl,T2>

C、template<classT1,classT2>

D、template<typenameT1;typenameT2>

標準答案:A

知識點解析:模板說明,要求每個參數前都有一個類型參數,多個參數需用逗號隔

開。

28、下面程序的運行結果是()ovoid

man(){for(i=0;i<=8;i++)if(++i%3!

=2)continue;elsecout<<i}

A、2

B、5

C、258

D、8

標準答案:B

知識點解析:if語句中?++ii%3先做++,后整除:continue語句不執(zhí)行coot語句:

在for中i++,這樣每次循環(huán)i都加2。

29、不論派生類以何種方法繼承基類,都不能使用基類的()。

A、公有成員

B、私有成員

C、保護成員

D、公有成員和保護成員

標準答案:B

知識點解析:基類的私有成員不能夠在派生類中直接訪問。

30、在一個類中可以對一個操作符進行()重載

A、1種

B、2種

C、3種

D、多種

標準答案:D

知識點解析:重載運算符可以針對用戶的各種新的數據類型按實際需要對原有運算

符進行適當的改造,在一個類中可以有多種新的數據類型,所以一個操作符可以進

行多種重載。

31、下列描述中錯誤的是()。

A、派生類的對象可以賦值給基類的對象

B、基類的對象可以賦值給派生類的對象

C、派生類對象可以初始化基類的引用

D、派生類的對象地址可以賦值給指向基類的指針

標準答案:B

知識點解析:賦值兼容規(guī)則:派生類的對象可以賦值給基類的對象;派生類對象可

以初始化基類的引用;D)派生類的對象地址可以賦值給指向基類的指針。

32、下列描述中錯誤的是()。

A、派生類可以使用private派生

B、對基類成員訪問必須是無二義性的

C、賦值兼容規(guī)則也適合于多繼承

D、基類和派生類中存在同名函數,將出現二義性

標準答案:D

知識點解析:基類和派生類存在同名函數,符合支配規(guī)則,不存在二義性。

33、帶有虛基類的多層派生類構造函數的成員初始化列表中都要列出虛基類的構造

函數,這樣對虛基類的子對象初始化()。

A、一次

B、兩次

C、多次

D、以上答案都不對

標準答案:D

知識點解析:只調用一次。

34、read函數的功能是從輸人流中讀取()。

A、一個字符

B、當前字符

C、一行字符

D、指定若干個字符

標準答案:D

知識點解析:read函數可以通過指定參數的方式讀取若干個字符。

35、在ios中提供的格式控制標志位中,()是轉換八進制的。

A、hex

B、dec

C>oct

D、bin

標準答案:A

知識點解析:oct八進制。

三、公共基礎填空題(本題共5題,每題1.0分,共5

分。)

36、所謂數據封裝就是將一組數據和與這組數據有關操作組裝在一起,形成一個實

體,這實體也就是【】。

標準答案:對象

知識點解析?:注意不要誤以為是類,實體是指對象。

37、在面面對泵方法中,一個對象請求另一對象為其服務的方式是通過發(fā)送【】

實現。

標準答案:消息

知識點解析:這是概念題,通過發(fā)送消息實現。

38、在關系數據庫中,用來表示實體之間聯系的是【】。

標準答案:二維表

知識之解析:在關系模型中,把數據看成一個二維表,每一個二維表稱為一個關

系。即關系模型是用表格數據來表示實體本身及其相互之間的聯系。

39、在測試時,完全不考慮程序的內部結構和內部特征的測試方法稱為【】測試

方法。

標準答案:黑盒

知識點解析:黑盒測試方法只是根據程序功能導出測試用例,完全不考慮程序的內

部結構和內部特征。

40、一個項目具有一個頊目主管,一個項目主管可管理多個項目。則實體集“項目

主管”與實體集“項目”的聯系屬于【】的聯系。

標準答案:一對多

知識點解析:“項目主管”與實體集“項目”的聯系屬于一對多的聯系。

四、填空題(本題共70題,每題1.0分,共10分。)

41、函數定義的格式是【】函數名(形式參數表)函數體。

標準答案:類型名或類型修飾符

知識點解析:本題考察基本的函數定義格式。

42、語句序列l(wèi)ongx;x=0L;nJ用一個語句表示為【】。

標準答案:longx=0L;

知識點解析:變量的聲明和賦值可以分別進行也可以同時進行。分別進行時稱為賦

值,同時進行是稱為初始化。

43、在C++中的實型數據分為三種類型,即單精度float、雙精度double和

【]O

標準答案:長雙精度longdouble

知識點解析:長精度類型一般用于高精度的科學運算。

44、若a.b和c均是int型變量,則表達式a=(b=4)+(c=2)執(zhí)行后,a的值為

[1。

標準答案:6

知識點解析:本題考察運算優(yōu)先級問題,從右向左,先括號后乘除,隨后加減,這

是基本的運算規(guī)則。

45、一個結構占用的空間理論上等于【】。

標準答案:每個數據成員所占空間之和

知識點解析:結構體沒有行為,即沒有代碼占用空間,故其占用的空間僅僅包含其

數據成員占用的空間之和。

46、下列程序的輸出結果是【】。#include<iostrcam.h>template<classT>T

max(Tx||,intn){inti;Tmaxv=x|0];for(i=l;i<n;i+4-)if(maxv<x|i])maxv=x|i];

returnmaxv;}voidmain(){inta[]={3,2,7,6,8,9};doubleb[]={1.2,3.4,2.5,73,6.8);

cout<<max(a,4)<<",'<<max(b,3)<<endl;}

標準答案:7,3.4

知識點解析:函數的功能是求出數組中指定范圍的元素中的最大值。所以在a數組

中前四個數據中最大值為7,數組b中前3個元素中最大值為3.4o

47、卜列程序的運行結果是【】。#include<iostream.h>classBase{public:

virtualvoidfunc(inti){cout<<"classBase:"VViVVendl;}classDerived:public

Base{public:voidfunc(doublcd){cout<<"classDerived:n<<d<<cndl;));void

main(){Basea,*p=&a;Derivedb;p=&b;(*p).func(3.3);}

標準答案:classBase:3

知識點解析:題中基類和派生類中有同名函數.但是參數不同。有的考生可能判斷

為重載.卻是錯誤的。重載僅發(fā)生在水平方向,即同一類的成員函數或全局函數

間。在垂直關系上,即派生關系中,只有完全相同的函數類型、函數名和參數個

數,參數類型時,才表現多態(tài)性。木題中參數不同,編譯器便認為是兩個完全不同

的函數。通過基類的指針指向派生類對象時,該指針只能訪問到派生類中具有多態(tài)

性的成員函數,而與基類無關的函數是無法通過基類指針來訪問的。故系統(tǒng)強制轉

化為整型,調用的是base類的func函數。如果將派生類中的func的形參改為int

型,則執(zhí)行的就會是派生類的func函數,此時表現為多態(tài)。

48、下列程序的輸出結果是【】。#include<iostream.h>intCalcDigital(char

*str){if(str==NULL)return0;intnum_of_digital=0;for(inti=O;str{i]!=0x0;i++)

if(str[i]<=,9,&&str[i]>=,0,)num_of_digital-H-;returnnum_of_digital;}voidmain()

{chara|]="Bcijing2008olympic,';cout<<CalcDigital(a)<<endl;)

標準答案:4

知識點解析?:分析本題可知函數功能為計算一個字符串中包含的數字個數。字符串

中包含的數字有2008,故輸出為4。

49、下列程序時類D代碼段出現編譯錯誤,原因是【】。#include<iostream.h

>classA{public:A(charc){cout<<"A^sconstructor."<<c<<endl;)?A(){cout

VV"A'sdestructor."<<cndl;)};classB:virtualpublicA(public:B(charcb,char

cd):A(cb){cout<<HB,sconstructor."<<cd<<endl;)?B(){coutVV"B's

destructor.*'<<endl;)private:charb;);classC:virtualpublicA{public:C(charcc,

charcd):A(cc)(cout<<"C,sconstructor.M<<cd<<endl;J?C(){coutVV”C's

destructor."<<endl;});classD:publicB,publicC{public:D(charcd,charce,charcf,

chareg,charch,charci):C(cf,cg),B(cd,ce),A(cd),aa(ch){cout<<"D,sconstructor."V

<ci<<endl;)?D(){coutVV"D'sdestructor."VVendl;}private:Aaa;);void

main()(Dohj('a','b','c'、'd','c',f)}

標準答案:類的繼承出現二義性

知識點解析:本題就是通過實例來表現多繼承時出現的二義性問題。多重繼承比較

復雜,盡管C++中提供了虛基類來解決這個問題,但在實際開發(fā)中由于過于復雜

而往往盡量避免使用。

50、下列程序編譯錯誤,是由于劃線處缺少某個語句,該語句是【】。#inclu加

<iostream.h>classA{private:intnuml;public:A():numl(0){}A(int

i):numl(i){)};classB{private:intnum2public:B():num2(0){)B(inti):num2(i)()int

my_math(Aobj1,Bobj2);};intB::my_math(AobjLBobj2))return

(obj1.num1+obj2.num2);}voidmain(void){Aobj1(4)Bobj,obi2(5);cout<<

"objl+obj2:n<<obj.my_math(obj1,obj2);}

標準答案:friendclassB;

知識點解析:在B類中出現了對A類中私有成員numl的直接訪問,這是不允許

的。所以必須要把類B設成類A的友員就可以編譯通過了。

國家二級(C++)筆試模擬試卷第3套

一、公共基礎選擇題(本題共34題,每題7.0分,共

34分。)

1、若已知一個棧的入棧序列是1、2、3........n,其輸出序列是pl、p2、p3...........

pn,則pi為()。

A、i

B、n-i

C、n-i+1

D、不確定

標準答案:C

知識點解析:棧是一種特殊的線性表,只能在固定的一端進行插入和刪除操作。棧

的運算是一種后進先出的操作原則。本題中,入棧下列與輸出下列的倒置是對應

的,即輸出序列的pl對應入棧序列的n,輸出序列的p2對應入棧序列的n-1,由

此可推出,pi對應入棧序列的n-i+1。

2、以下數據結構中,不屬于線性數據結構的是()。

A、隊列

B、線性表

C、二叉樹

D、棧

標準答案:C

知識點解析:棧是一種特殊的線性表,這種線性表只能在固定的一端進行插入和刪

除操作,因此棧又稱后進先出表或先進后出表;隊列可看作是插入在一端進行,刪

除在另一端進行的線性表,因此隊列乂稱先進先出表或后進后出表。二叉樹不屬于

線性結構。

3、在軟件開發(fā)中,下面K屬于設計階段的任務的是()。

A、數據結構設計

B、定義模塊算法

C、給出系統(tǒng)模塊結構

D、定義需求并建立系統(tǒng)模型

標準答案:D

知識點解析:軟件設計一般分為總體設計和詳細設計兩個階段,總體設計

溫馨提示

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

評論

0/150

提交評論