一、選擇題
1.D!窘馕觥恳粋(gè)算法的空間復(fù)雜度一般是指執(zhí)行這個(gè)算法所需的存儲(chǔ)空間。一個(gè)算法所占用的存儲(chǔ)空閭包括算法程序所占用的空間、輸入的初始數(shù)據(jù)所占用的存儲(chǔ)空間及算法執(zhí)行過(guò)程中所需要的額外空間。
2.D!窘馕觥繑(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放形式,一種數(shù)據(jù)結(jié)構(gòu)可以根據(jù)需要采用不同的存儲(chǔ)結(jié)構(gòu),常用的存儲(chǔ)結(jié)構(gòu)有順序和鏈?zhǔn)浇Y(jié)構(gòu)。采用不同的存儲(chǔ)結(jié)構(gòu),其處理的效率是不同的。
3.D!窘馕觥克惴ǖ臅r(shí)間復(fù)雜度和算法的空間復(fù)雜度是從不同的角度來(lái)衡量算法的執(zhí)行情況的,它們之間沒(méi)有內(nèi)在聯(lián)系。
4.D!窘馕觥拷粨Q排序方法是指借助數(shù)據(jù)元素之間的互相交換進(jìn)行排序的一種方法,包括冒泡排序和快速排序。冒泡排序是一種最簡(jiǎn)單的交換排序方法,它通過(guò)相鄰元素的交換,逐步將線性表變得有序。
5.D。【解析】對(duì)二叉樹(shù)的前序遍歷是指:先訪問(wèn)根結(jié)點(diǎn),然后訪問(wèn)左子樹(shù),最后訪問(wèn)右子樹(shù),并且,在訪問(wèn)左、右子樹(shù)時(shí),先訪問(wèn)根結(jié)點(diǎn),再依次訪問(wèn)其虛、右子樹(shù)。記住三種遍歷的順序:①前序,訪問(wèn)根→按前序遍歷左子樹(shù)→按前序遍歷右子樹(shù);②中序,按中序遍歷左子樹(shù)→訪問(wèn)根→按中序遍歷右子樹(shù);③后序,按后序遍歷左子樹(shù)→按后序遍歷右子樹(shù)→訪問(wèn)根。
6.D!窘馕觥啃枨蠓治龀S玫墓ぞ哂袛(shù)據(jù)流圖(DFD)、數(shù)據(jù)字典(DD)、判定樹(shù)和判定表。PAD(問(wèn)題分析圖)、PFD(程序流程圖)、N-S(盒式圖)都是詳細(xì)設(shè)計(jì)的常用工具,不是需求分析的工具。
7.B。【解析】對(duì)二叉樹(shù)的前序遍歷是指:先訪問(wèn)根結(jié)點(diǎn),然后訪問(wèn)左子樹(shù),最后訪問(wèn)右子樹(shù)。并且,在訪問(wèn)左、右子樹(shù)時(shí),先訪問(wèn)根結(jié)點(diǎn),再依次訪問(wèn)其左、右子樹(shù)。
8.A!窘馕觥堪缀袦y(cè)試是把測(cè)試對(duì)象看成一個(gè)打開(kāi)的盒子,允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及相關(guān)信息來(lái)設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有的邏輯路徑進(jìn)行測(cè)試。所以,白盒測(cè)試的對(duì)象基本上是源程序,以程序的內(nèi)部邏輯和指定的覆蓋標(biāo)準(zhǔn)測(cè)試數(shù)據(jù)。
9.C!窘馕觥寇浖纳芷诳煞譃檐浖x、軟件開(kāi)發(fā)及軟件運(yùn)行維護(hù)三個(gè)階段。其中軟件定義階段的主要工作有可行性研究、計(jì)劃制定和需求分析等;軟件開(kāi)發(fā)階段的主要工作有概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)和測(cè)試等;軟件運(yùn)行維護(hù)階段的主要工作是軟件的運(yùn)行及后期的維護(hù)等。
10.C!窘馕觥繑(shù)據(jù)庫(kù)系統(tǒng)(DBS)由數(shù)據(jù)庫(kù)(DBS)、數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)、數(shù)據(jù)庫(kù)管理員、硬件平臺(tái)和軟件平臺(tái)五個(gè)部分組成,可見(jiàn)DB和DBMS都是DBS的組成部分。
11.D。【解析】C++中函數(shù)重載和運(yùn)算符重載實(shí)現(xiàn)的多態(tài)性屬于靜態(tài)多態(tài)性,在程序編譯時(shí)系統(tǒng)就能決定調(diào)用的是哪個(gè)函數(shù)。動(dòng)態(tài)多態(tài)性是在程序運(yùn)行過(guò)程中才動(dòng)態(tài)確定操作所針對(duì)的對(duì)象。動(dòng)態(tài)多態(tài)性是通過(guò)虛函數(shù)實(shí)現(xiàn)的。
12.A!窘馕觥勘绢}考查混合運(yùn)算表達(dá)式類型,由表達(dá)式中具有最高優(yōu)先級(jí)的類型所確定,所以答案為A。
13.D!窘馕觥慷S數(shù)組可以看做是一維數(shù)組的擴(kuò)展。選項(xiàng)D表示的是一個(gè)一維數(shù)組,里面每個(gè)元素是一個(gè)指針,而指針肯定指向某個(gè)地址,從而完成二維數(shù)組的擴(kuò)展?忌私*和[]的運(yùn)算優(yōu)先級(jí)。
14.C!窘馕觥吭诔蓡T函數(shù)聲明的前面加上virtual關(guān)鍵字即把該函數(shù)聲明為虛函數(shù)。虛函數(shù)可以是另一個(gè)類的友元函數(shù),但不是靜態(tài)成員函數(shù)。在派生類中可以重新定義從基類繼承下來(lái)的虛函數(shù),在派生類中重新定義虛函數(shù)時(shí),函數(shù)名、形參表和返回值類型必須保持不變。
15.A!窘馕觥勘绢}考查運(yùn)算符的重載。C++中,::、*…?:這4個(gè)運(yùn)算符不能重載。
16.C。【解析】題中函數(shù)聲明帶有默認(rèn)參數(shù),那么在C選項(xiàng)的調(diào)用中,將會(huì)把字符型實(shí)參#賦值給整型形參b,這不符合參數(shù)傳遞規(guī)則。
17.C!窘馕觥坑捎谌∝(fù)運(yùn)算符“-”是一元運(yùn)算符,當(dāng)作為成員函數(shù)重載時(shí)參數(shù)表中沒(méi)有參數(shù),那個(gè)唯一的操作數(shù)以this指針的形式隱藏在參數(shù)表中。
18.B。【解析】本題考查的是內(nèi)聯(lián)函數(shù)的定義,引入內(nèi)聯(lián)函數(shù)是為了解決程序中函數(shù)調(diào)用的效率問(wèn)題,是以目標(biāo)代碼的增加為代價(jià)換取時(shí)間的節(jié)省;一般函數(shù)在運(yùn)行時(shí)被調(diào)用,而調(diào)用的內(nèi)聯(lián)函數(shù)在編譯時(shí)就被替代了,如果不加in-line關(guān)鍵字,則編譯器會(huì)將在類說(shuō)明部分定義的任何函數(shù)都被認(rèn)定為內(nèi)聯(lián)函數(shù)。
19.C!窘馕觥克^函數(shù)重載,是指同一個(gè)函數(shù)名可以對(duì)應(yīng)多個(gè)函擻的實(shí)現(xiàn),進(jìn)行函數(shù)重載時(shí),要求同名函數(shù)的參數(shù)個(gè)數(shù)不同,或者參數(shù)類型不同。
20.D!窘馕觥康谝粋(gè)字符必須是字母或下畫(huà)線,中間不能有空格;在第一個(gè)字母后,可以是任意字母、下畫(huà)線和數(shù)字組成的字符序列;標(biāo)識(shí)符的長(zhǎng)度是任意的,但特定的編譯系統(tǒng)能夠識(shí)別的標(biāo)識(shí)符長(zhǎng)度是有限的。一般不要超過(guò)31個(gè)字符;標(biāo)識(shí)符中大小寫(xiě)字母是有區(qū)別的;用戶定義標(biāo)識(shí)符時(shí),不要采用系統(tǒng)的保留字。
21.B!窘馕觥縱alue作為類的數(shù)據(jù)成員在引用時(shí)可以通過(guò)對(duì)象來(lái)引用,也可以通過(guò)域操作符引入類名來(lái)限定。由于選項(xiàng)D中P是指針,它對(duì)指針變量的賦值方式是錯(cuò)誤的。
22.C!窘馕觥勘绢}考查友元函數(shù)的應(yīng)用。程序中函數(shù)square是類sample的一個(gè)友元函數(shù),它可以直接訪問(wèn)類sample的所有成員。它的功能是返回類sample的私有數(shù)據(jù)成員x的平方。所以程序的執(zhí)行結(jié)果是900。
23.B!窘馕觥空{(diào)用拷貝構(gòu)造函數(shù)的情況為:一個(gè)新對(duì)象被另一個(gè)已存在的同類型對(duì)象初始化;當(dāng)一個(gè)對(duì)象作為實(shí)參傳遞給函數(shù)時(shí)為初始化形參,要調(diào)用拷貝構(gòu)造函數(shù)。在函數(shù)值返回時(shí)形參的生命期結(jié)束時(shí)它的析構(gòu)函數(shù)被調(diào)用;在函數(shù)返回一個(gè)對(duì)象時(shí)調(diào)用拷貝構(gòu)造函數(shù)。符合以上條件的有:用對(duì)象objl來(lái)初始化obj3;obj3作為實(shí)參被傳入;函數(shù)fun返回一個(gè)對(duì)象時(shí);系統(tǒng)用返回值初始化一個(gè)匿
名對(duì)象時(shí)調(diào)用了拷貝構(gòu)造函數(shù)。總共調(diào)用4次。
24.A!窘馕觥坑芍骱瘮(shù)main入手,定義外部變量x和y,調(diào)用函數(shù)add。因?yàn)閤,y為外部變量,所以“intx(20),y(5);”的賦值在add也是有效的,即add函數(shù)的運(yùn)算結(jié)果為25。
25.B!窘馕觥亢瘮(shù)setfill(charc)用于設(shè)置填充字符,在輸出數(shù)據(jù)時(shí),如果數(shù)據(jù)寬度小于設(shè)置的寬度,則空閑位置要用填充字符填滿,設(shè)置的填充符一直有效,直到再次填充字符為止,如題中調(diào)用函數(shù)setfill(’*’)將填充字符設(shè)置為’*’,后又調(diào)用函數(shù)setfill(’#’)將填充字符設(shè)置為’#’。函數(shù)setw(intn)用于設(shè)置輸入/輸出寬度.寬度設(shè)置的效果只對(duì)一次輸入或輸出有效,在完成一次數(shù)據(jù)的輸出/輸入后,寬度設(shè)置自動(dòng)恢復(fù)為0,如題中語(yǔ)句以寬度10輸出數(shù)據(jù)“123”后,字符串“OK”的輸出寬度就自動(dòng)恢復(fù)為0了。而且題中輸出的對(duì)齊方式為在輸出寬度內(nèi)左對(duì)齊。本題結(jié)果為123######OK。
26.D。【解析】C++中,虛基類說(shuō)明格式為class<類名>:virtual<繼承方式><基類名>。其中,virtual是虛基類的關(guān)鍵詞。在定義派生類時(shí)使用虛基類的說(shuō)明,寫(xiě)在派生類名的后面。
27C!窘馕觥勘绢}考查在繼承中構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序,應(yīng)該是先調(diào)用基類的構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù),調(diào)用析構(gòu)函數(shù)時(shí)的順序是先調(diào)用派生類的析構(gòu)函數(shù),后調(diào)用基類的析構(gòu)函數(shù)。
28.D。【解析】構(gòu)造函數(shù)的主要作用是對(duì)數(shù)據(jù)成員初始化。構(gòu)造函數(shù)不能聲明為虛函數(shù),這是因?yàn)樵趫?zhí)行構(gòu)造函數(shù)時(shí)類對(duì)象還未完成建立過(guò)程,當(dāng)然談不上函數(shù)與類對(duì)象的關(guān)聯(lián)。
29.A。【解析】程序中的TestClassl為T(mén)estClass的派生類,主函數(shù)main中定義。TestClass對(duì)象*P,
TestClassl對(duì)象objl,然后P引用0bjl,執(zhí)行p->who()則是調(diào)用基類中的who函數(shù),輸出TestClass。
30.A!窘馕觥勘境绦蛟O(shè)計(jì)了一個(gè)點(diǎn)類Point,包含了橫、縱兩個(gè)坐標(biāo)數(shù)據(jù)x和y,由它派生出了圓類Circle,并加入了新的數(shù)據(jù)成員,即一個(gè)半徑r和一個(gè)求圓面積的函數(shù)成員area。在主函數(shù)main中,首先定義了一個(gè)圓Circle類的對(duì)象c1,并通過(guò)它的構(gòu)造函數(shù)初始化其數(shù)據(jù)成員。由此可知,其半徑r的值為10,所以其面積為PI*10*10=314,即對(duì)象c1的函數(shù)成員area的返回值為314。
31.D!窘馕觥勘绢}考查指針的使用。在給*P賦值前,指針P并沒(méi)有指向一個(gè)具體的對(duì)象。此時(shí)可以通過(guò)編譯,但運(yùn)行時(shí)由于P中為隨機(jī)值,該賦值可能會(huì)破壞內(nèi)存中某個(gè)重要的地址空間的內(nèi)容,導(dǎo)致程序出錯(cuò)。
32.D!窘馕觥勘绢}考查類的定義。C++語(yǔ)言規(guī)定,在類體內(nèi)不允許對(duì)所定義的數(shù)據(jù)成員進(jìn)行初始化。
33.B!窘馕觥勘绢}考查的是對(duì)構(gòu)造函數(shù)的掌握,另外++運(yùn)算符是右結(jié)合的,所以在進(jìn)行輸出的時(shí)候都是先把原來(lái)的輸出后再自加1。
34.C!窘馕觥緾++中可以在定義文件流對(duì)象的同時(shí)打開(kāi)文件,也可以在定義文件流對(duì)象以后用open函數(shù)打開(kāi)文件?梢酝ㄟ^(guò)構(gòu)造函數(shù)或open函數(shù)的第二個(gè)參數(shù),確定文件的打開(kāi)模式。
35.C!窘馕觥++是右結(jié)合的,所以先賦值為3,最后輸出3+1;常成員函數(shù)只有常對(duì)象才能調(diào)用,所以輸出2。
36.C。【解析】根據(jù)遞歸調(diào)用的含義,當(dāng)n為2時(shí)有fib(o),fib(1),fib(2)被調(diào)用,且fib(0),fib(1)時(shí)調(diào)用結(jié)束,共3次。
37.D!窘馕觥窟x項(xiàng)A錯(cuò)誤,不存在這樣的定義方式;選項(xiàng)B定義了一個(gè)MyClass類的對(duì)象P;選項(xiàng)C是Java的定義方式。
38.C!窘馕觥勘绢}針對(duì)虛基類的定義及特點(diǎn)考查。虛基類的聲明為“class<類名>:virtual<繼承方式><基類名>”,即本題的A為虛基類。
39.B!窘馕觥恳辉蚨\(yùn)算符函數(shù)作為成員函數(shù)時(shí),第一操作數(shù)就是對(duì)象本身,并不出現(xiàn)在參數(shù)表中,即第一操作數(shù)僅以this指針的形式隱含于參數(shù)表中,因此對(duì)于一元運(yùn)算符參數(shù)表是空的;而對(duì)于二元運(yùn)算符參數(shù)表中只有一個(gè)參數(shù),它代表第二操作數(shù)。
40.D!窘馕觥磕0逍螀⒂衪ypename<參數(shù)名>、class<參數(shù)名>、<類型修飾><參數(shù)名>3種形式,即typename與class通用。
二、程序改錯(cuò)題
(1)應(yīng)改為“assert(sizeof(s1)==4);”。
(2)應(yīng)改為“assert(sizeof(s2)==1O);”。
(3)應(yīng)改為“assert(sizeof(s3)==1);”。
【解析】assert函數(shù)如果為假,則會(huì)產(chǎn)生一個(gè)中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert函數(shù)只有為真,才不會(huì)產(chǎn)生中斷異常。“assert(sizeof(s1)==3);”語(yǔ)句中“sizeof(s1)==3”為假,這會(huì)使程序產(chǎn)生異常,不能正常執(zhí)行。因?yàn)閟tr1的值為abc,但是它還有一個(gè)尾符,它的長(zhǎng)度應(yīng)該是4,而不是3,所以在第1處修改為“assert(sizeof(s1)==4);”。str2[10]說(shuō)明,str2的空間為10,在第2處修改為“assert(sizeof(s2)==10);”。charstr3=23;語(yǔ)句說(shuō)明23是字符,所占存儲(chǔ)空間為1,所以修改為“assert(sizeof(s3)==1);”。
三、簡(jiǎn)單應(yīng)用題
introw;
intmax;
intmin;
intcol;
for(row=0;row//外循環(huán)求行最大值中的最小值
{
for(max=a[row][0],col=1;col 每一行中的最大值
if(max max=a[row][col]:
if(row==0)//求最小值
min=max:
else
if(max min=max;
}
returnmin;
【解析】本題有兩層循環(huán),內(nèi)層循環(huán)求每一行的最大值,外層循環(huán)求最小值。求最大值,首先將最大值賦值為每行第一列的元素,然后依次循環(huán)比較。將求出的第一個(gè)最大值賦值為第一個(gè)最小值,然后將以后求得的最大值依次與之比較,求出所有值的最小值。
四、綜合應(yīng)用題
(1)應(yīng)添加“intNo;charName[32];”。
(2)應(yīng)添加“voidSet(intno,char*strName)”。
(3)應(yīng)添加“cout<<"No="<
2015年全國(guó)職稱計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書(shū)籍 | |
全國(guó)職稱計(jì)算機(jī)考試速成過(guò)關(guān)系列套裝:W .. 定價(jià):¥133 優(yōu)惠價(jià):¥133.0 更多書(shū)籍 |