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

下載本文檔

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

文檔簡介

國家二級(C++)筆試模擬試卷22(共9套)(共436題)國家二級(C++)筆試模擬試卷第1套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、下列有關(guān)繼承和派生的敘述中,正確的是A)派生類不能訪問基類的保護成員B)作為虛基類的類不能被實例化C)派生類應(yīng)當向基類的構(gòu)造函數(shù)傳遞參數(shù)D)虛函數(shù)必須在派生類中重新實現(xiàn)A、

B、

C、

D、

標準答案:C知識點解析:暫無解析2、以下模板定義:template<classT>Tfun(Tx,Ty){returnx*x+y*y;}下面對fun的調(diào)用中錯誤的是()。A、fun<int>(2,6.5)B、fun(2,6.5)C、fun<>(2,6)D、fun(2,6)標準答案:B知識點解析:暫無解析3、從工程管理角度,軟件設(shè)計一般分為兩步完成,它們是A、概要設(shè)計與詳細設(shè)計B、數(shù)據(jù)設(shè)計與接口設(shè)計C、軟件結(jié)構(gòu)設(shè)計與數(shù)據(jù)設(shè)計D、過程設(shè)計與數(shù)據(jù)設(shè)計標準答案:A知識點解析:從工程管理的角度,軟件設(shè)計可分為概要設(shè)計和詳細設(shè)計兩大步驟。概要設(shè)計是根據(jù)需求確定軟件和數(shù)據(jù)的總體框架;詳細設(shè)計是將其進一步簡化成軟件的算法或表示和數(shù)據(jù)結(jié)構(gòu)。而在技術(shù)上,概要設(shè)計和詳細設(shè)計又由若干活動組成,包括總體結(jié)構(gòu)設(shè)計、數(shù)據(jù)設(shè)計和過程設(shè)計。因此,本題的正確答案是A。4、有如下程序:#include<iostream>usingnamespacestd:classA{public:virtualvoidfuncl(){cout<<"A1";}voidfunc2(){cout<<"A2";}};classB:publicA{public:voidfuncl(){cout<<"B1";}voidfllnc2(){cout<<"B2";}};intmain(){A*p=newB;p->funcl();p->func2();return0:}運行程序,屏幕上將顯示輸出A、B182B、A1A2C、BlA2D、AlB2標準答案:B知識點解析:基類指針可以指向派生類對象,但是指針只能訪問繼承自基類的成員,而不能訪問派生類中的新增加成員或重新定義后的成員。故p->funcl();p->func2();都執(zhí)行基類的成員函數(shù),打印A1A2。5、A、

B、

C、

D、

標準答案:C知識點解析:暫無解析6、單個用戶使用的數(shù)據(jù)視圖的描述稱為()。A、外模式B、概念模式C、內(nèi)模式D、存儲模式標準答案:1知識點解析:單個用戶使用的數(shù)據(jù)視圖的描述稱為外模式。7、以下關(guān)于外碼和相應(yīng)的主碼之間的關(guān)系,正確的是_______。A、外碼并不一定要與相應(yīng)的主碼同名B、外碼一定要與相應(yīng)的主碼同名C、外碼一定要與相應(yīng)的主碼同名而且唯一D、外碼一定要與相應(yīng)的主碼同名,但并不一定唯一標準答案:1知識點解析:暫無解析8、若結(jié)點的存儲地址與其關(guān)鍵字之間存在某種映射關(guān)系,則稱這種存儲結(jié)構(gòu)為______。A、順序存儲結(jié)構(gòu)B、鏈式存儲結(jié)構(gòu)C、索引存儲結(jié)構(gòu)D、散列存儲結(jié)構(gòu)標準答案:8知識點解析:暫無解析9、下列說法中錯誤的是()。A、公有繼承時基類中的public成員在派生類中仍是public的B、公有繼承時基類中的private成員在派生類中仍是private的C、私有繼承時基類中的public成員在派生類中是private的D、保護繼承時基類中的public成員在派生類中是protected的標準答案:2知識點解析:暫無解析10、對建立良好的程序設(shè)計風格,下面描述正確的是()。A、程序應(yīng)簡單、清晰、可讀性好B、符號的命名只要符合語法C、充分考慮程序的執(zhí)行效率D、程序的注釋可有可無標準答案:1知識點解析:本題涉及程序的編程風格,考生應(yīng)該掌握一些基本的良好編程風格。符號的命名不僅要符合語法,應(yīng)有一定實際意義,且盡量簡潔。除非對效率有特別要求,程序編寫要做到清晰第一,效率第二。必須要有必要的注釋。二、選擇題(本題共25題,每題1.0分,共25分。)11、在進行了任何C++流的操作后,都可以用C++流的有關(guān)成員函數(shù)檢測流的狀態(tài),其中只能用于檢測剛進行的操作是否失敗函數(shù)名是A、failB、eofC、badD、good標準答案:A知識點解析:C++中可以用文件流對象的下列成員函數(shù)來判別文件流的當前狀態(tài)。函數(shù)is_open()判定流對象是否與一個打開的文件相聯(lián)系,若是,返回true,否則返回false;函數(shù)good()剛進行的操作成功時返回true,否則返回false;函數(shù)fail()與good()相反,剛進行的操作失敗時返回true,否則返回false;函數(shù)bad()如果進行了非法操作返回true,否則返回false;函數(shù)eof()進行輸入操作時,若到達文件尾返回true,否則返回false。其中,eof函數(shù)只能用于輸入流操作。12、在下面的類定義中,橫線處應(yīng)填入的內(nèi)容是classFred{public:voidprint(){cout<<data<<end1;}voidsetData(doubleD){data=d;staticintcount;private:doubledata;};______count=0;//靜態(tài)數(shù)據(jù)成員的定義A、intB、staticintC、intFred::D、staticintFred::標準答案:C知識點解析:本題考核靜態(tài)數(shù)據(jù)成員的定義。題中數(shù)據(jù)成員count被定義成了靜態(tài)的,其初始化的格式為:<類型><類名>::靜態(tài)數(shù)據(jù)成員=常量值;,所以橫線處應(yīng)填入的為“intFred”。13、有如下程序:#include<iostream>usingnamespacestd;intmain(){cout.fill(’*’);cout.width(6);cout.fill(’#’);cout<<123<<end1;return0;}執(zhí)行后的輸出結(jié)果是A、###123B、123###C、***123D、123***標準答案:A知識點解析:本題考核I/O的格式化輸出。語句“cout.fill(’*’);”表示填充字符為‘*’,并且一直有效,直到再次設(shè)置填充字符為止。語句“cout.width(6);”用來設(shè)置輸入輸出寬度,當實際數(shù)據(jù)寬度小于指定的寬度時,多余的位置用填充字符填滿;當實際數(shù)據(jù)的寬度大于設(shè)置的寬度時,仍按實際的寬度輸出。語句“cout.fill(’#’);”表示將填充字符改為‘#’(即把之前設(shè)置的‘#’改為‘#’),由于數(shù)據(jù)“123”的實際寬度小于6,由于輸出的初始狀態(tài)為在輸出寬度內(nèi)右對齊,所以前面將會有3個填充字符‘#’。14、已知n是一個int型變量,下列語句中錯誤的是()。A、long*p=newlong[n];B、longp[n];C、long*p=newlong(n);D、longp[10];標準答案:B知識點解析:此題考查的是數(shù)組、指針及關(guān)鍵字new。說明一維數(shù)組的一般形式是:數(shù)組類型數(shù)組名[數(shù)組長度];其中數(shù)組長度必須是整型常量或常量表達式。選項B)中,n是一個變量,不能做數(shù)組的長度,故選項B)錯誤;其他選項均正確。15、下列有關(guān)類和對象的敘述不正確的是A、任何一個對象都歸屬于一個具體的類B、類與對象的關(guān)系和數(shù)據(jù)類型與變量的關(guān)系相似C、類的數(shù)據(jù)成員不允許是另一個類的對象D、一個類可以被實例化成多個對象標準答案:C知識點解析:對象是類的實例,類的成員可以是其他類的對象。那么在該類實例化的時候,必須保證其他類的對象已經(jīng)生成,否則將會出現(xiàn)錯誤。16、有如下程序:#include<iostream>usingnamespacestd;ClassA{public:A(){cout<<“A”;}~A(){cout<<“~A”;}};A*p;public:B(){cout<<“B”;p=newA;}~B(){cout<<“~B”;deletep;}};Bobj;return0;)執(zhí)行這個程序的輸出結(jié)果是(A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A標準答案:B知識點解析:本題考查的是類的構(gòu)造函數(shù)和析構(gòu)函數(shù)。派生類構(gòu)造函數(shù)的執(zhí)行順序:首先調(diào)用基類的構(gòu)造函數(shù),調(diào)用順序按它們被繼承時說明的順序;然后調(diào)用予對象的構(gòu)造函數(shù),調(diào)用順序按它們在類中說明的順序,最后是派生類構(gòu)造函數(shù)中的內(nèi)容。因此本題中,首先調(diào)用基類構(gòu)造函數(shù)輸出A,然后調(diào)用于對象的構(gòu)造函數(shù)輸出B,p=newA再調(diào)用類A的構(gòu)造函數(shù)輸出A;析構(gòu)函數(shù)的調(diào)用順序和構(gòu)造函數(shù)的調(diào)用順序相反。17、下列程序的運行結(jié)果是#include<iostream.h>classA{inta;public:A(){a=0;}A(intaa){a=aa;cout<<a++;}};voidmain()Ax,y(2),z(3);cout<<endl;}A、00B、23C、34D、25標準答案:B知識點解析:本題考查的是對構(gòu)造函數(shù)的掌握,另外“++”運算符是右結(jié)合的,所以在進行輸出的時候都是先把原來的輸出后再自加1。18、下列關(guān)于虛函數(shù)與函數(shù)重載區(qū)別的敘述中不正確的是()。A、函數(shù)說明形式上不同B、函數(shù)重載允許是非成員函數(shù),虛函數(shù)只能是成員函數(shù)C、函數(shù)重載的調(diào)用依據(jù)參數(shù)和類型的差別,虛函數(shù)則依據(jù)對象D、函數(shù)重載的本體可以在類外定義,虛函數(shù)不可以標準答案:D知識點解析:A項,B項,C項均為虛函數(shù)與函數(shù)重載的不同之處。但有一點它們是相同的:在類內(nèi)外定義均可。故D項錯誤。19、有如下程序:#include<iostream)usingnamespacestd;classBase{public:Base(intx=0){cout<<x;}};ClassDerived:publicBase{public:Derived(intx=0){cout<<x;}private:BaseVal;};intmain(){Derivedd(1);returnA、100B、000C、010D、001標準答案:D知識點解析:本題考查的知識點是:類的構(gòu)造。建立一個類的對象時,構(gòu)造函數(shù)的執(zhí)行順序如下:①執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個基類被繼承時聲明的順序(自左向右);②執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中聲明的順序(自上而下):③執(zhí)行自身的構(gòu)造函數(shù)。本題Derived類繼承于Base類,所以首先會構(gòu)造基類Base,但Derived類的構(gòu)造函數(shù)沒有初始化列表,所以將調(diào)用Base類的默認構(gòu)造函數(shù),輸出一個0。接下來由于它的成員中還定義了一個Base類的對象,而構(gòu)造函數(shù)也沒有顯示初始化這個對象,所以再次調(diào)用20、下面程序的功能是把316表示為兩個加數(shù)的和,使兩個加數(shù)分別能被13和11整除,在下畫線處應(yīng)填入的選項是#include<iostream.h>Voidmain(){inti=0,j,k;do{i++;k=316-13*i;}while(____);j=k/11;cout<<"316=13*"<<i<<"+11*"<<j;}A、k/11B、k%11C、k/11=0D、k%11=0標準答案:B知識點解析:do…while語句的一般形式是do{語句}while(表達式);特點是:“直到型”循環(huán)結(jié)構(gòu)。先執(zhí)行一次“語句”,判“表達式”,當“表達式”為非0,再執(zhí)行“語句”,直到“表達式”的值為0時停止執(zhí)行語句。在一般情況下,用while和do…while語句解決同一問題時,若二者的循環(huán)體部分是一樣的,它們的結(jié)果也一樣。但當while后面的“表達式”一開始就為“假”時,兩種循環(huán)的結(jié)果不同。這是因為此時while循環(huán)的循環(huán)不被執(zhí)行,而do…while循環(huán)的循環(huán)體被執(zhí)行一次。本題的關(guān)鍵是兩個加數(shù)分別能被13和11整除,在i=0時,直接將316賦值給k,當k%11的值為0時,則不必執(zhí)行循環(huán),將執(zhí)行j=k/11語句,輸出結(jié)果,所以該表達式合理的條件是k%11。21、有如下程序:#includeusingnamespacestd;classTestClass{intn;public:TestClass(intk):n(k){}intget(){returnn;}intget()const{returnn+1;}};intmain(){TestClassp(5);constTestClassq(6);cout<A、55B、57C、75D、77標準答案:B知識點解析:C++中對常對象的成員函數(shù)調(diào)用,將自動調(diào)用其常成員函數(shù),程序中調(diào)用原型為“intget()const;“”的函數(shù),對于非常對象將調(diào)用原型為“intget();”的函數(shù)。因為首先用5對對象p進行了初始化,所以執(zhí)行p.get()時直接返回5,而對于常對象則以6對q進行初始化,在調(diào)用q.get()時,將調(diào)用原型為“intgetoconst;”的函數(shù),該函數(shù)將返回n+1,第二個輸出應(yīng)為7,所以本題答案為57。22、下列關(guān)于C++流的說明中,正確的是()。A、與鍵盤、屏幕、打印機和通信端口的交互都可以通過流類來實現(xiàn)B、從流中獲取數(shù)據(jù)的操作稱為插入操作,向流中添加數(shù)據(jù)的操作稱為提取操作C、cin是一個預定義的輸入流類D、輸出流有一個名為open的成員函數(shù),其作用是生成一個新的流對象標準答案:1知識點解析:暫無解析23、內(nèi)部格式控制操作函數(shù)是在頭文件()中定義的。A、iostream.hB、iomanip.hC、istream.hD、ostream.h標準答案:2知識點解析:暫無解析24、在說明一個結(jié)構(gòu)體變量時,系統(tǒng)分配給它的存儲空間是()。A、該結(jié)構(gòu)體中第一個成員所需的存儲空間B、該結(jié)構(gòu)體中最后一個成員所需的存儲空間C、該結(jié)構(gòu)體中占用最大存儲空間的成員所需的存儲空間D、該結(jié)構(gòu)體中所有成員所需存儲空間的總和標準答案:8知識點解析:暫無解析25、假定MyClass為一個類,則該類的拷貝初始化構(gòu)造函數(shù)的聲明語句為()。A、MyClass&(MyClassx);B、MyClass(MyClassx)C、MyClass(MyClass&x);D、MyClass(MyClass*x)標準答案:4知識點解析:暫無解析26、對于while、do…while循環(huán)結(jié)果說法正確的是______。A、只是表達形式不同B、do…while結(jié)構(gòu)中的語句至少執(zhí)行—坎C、while結(jié)構(gòu)中的語句至少執(zhí)行一次D、條件成立時,他們有可能一次也不執(zhí)行標準答案:2知識點解析:暫無解析27、下列定義中,x是一個類,______是定義指向?qū)ο髷?shù)組的指針p。A、X*p[4]B、X(*p)[4]C、(X*)p[4]D、X*p[]標準答案:2知識點解析:暫無解析28、下述關(guān)于break語句的描述中,()是不正確的。A、break語句可用于循環(huán)體內(nèi),它將退出該重循環(huán)B、break語句可用于switch語句中,它將退出switch語句C、break語句可用于對體內(nèi),它將退出if語句D、break語句在一個循環(huán)體內(nèi)可以出現(xiàn)多次標準答案:4知識點解析:暫無解析29、下列關(guān)于析構(gòu)函數(shù)的描述中,錯誤的是()。A、類中有且僅有一個析構(gòu)函數(shù)B、析構(gòu)函數(shù)可以有形參C、析構(gòu)函數(shù)沒有函數(shù)類型D、析構(gòu)函數(shù)對象消失時被自動執(zhí)行標準答案:2知識點解析:暫無解析30、下列程序輸出的結(jié)果是()。#include<stdio.h>sub1(chara,charb){charc:c=a:a=b:b=c;}sub2(char*a,charb){charc:c=*a;”a=b;b=c;}sub3(char*a,char*b){charc;c=*a;”a=*b;*b=c;}voidmain(){chara,b;a=’A’;b=’B’:sub1(a,b);putchar(a):putchar(b):a=’A’;b=’B’;sub2(&a,b);putchar(a);putchar(b);a=’A’;b=’B’;sub3(&a,&b);putchar(a);putchar(b);putchar(’\n’);}A、ABABABB、ABBBBAC、ABBABAD、ABABBA標準答案:2知識點解析:暫無解析31、在C++中,打開一個文件,就是將這個文件與一個()建立關(guān)聯(lián),關(guān)閉一個文件,就是取消這種關(guān)聯(lián)。A、類B、流C、對象D、結(jié)構(gòu)標準答案:2知識點解析:暫無解析32、有以下程序main(intargc,chara*argv[]){intn,i=0;while(argv[1][i]!=’\0’){n=fun();i++;}cout<<n*argc<<endl;}intfun(){s=0;s+=1;returns;}假設(shè)程序經(jīng)編譯、連接后生成可執(zhí)行文件exam.exe,若鍵入以下命令行exam123<回車>則運行結(jié)果為A、6B、8C、3D、4標準答案:A知識點解析:本題考察靜態(tài)變量的使用規(guī)則。考生需要注意的是s為靜態(tài)變量,每次進入fun函數(shù)時s還保留使用原來的值,因此while循環(huán)將最終返回的是各位數(shù)之和,而argc表示參數(shù)的個數(shù),此處為1,因此正確答案為A。33、在C++語言程序中A、函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套B、函數(shù)的定義和調(diào)用均可以嵌套C、函數(shù)的定義和調(diào)用均不可以嵌套D、函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套標準答案:D知識點解析:本題考查函數(shù)的定義,調(diào)用及其嵌套之間的關(guān)系。34、表示C++類中保護成員的關(guān)鍵字是()。A、publicB、privateC、virtualD、Rrotected標準答案:D知識點解析:保護成員的語法。35、在語句cin>>data;中,cin是A、C++的關(guān)鍵字B、類名C、對象名D、函數(shù)名標準答案:C知識點解析:本題考查的知識點是:預定義流對象。C++流有4個預定義的流對象,它們的名稱及與之聯(lián)系的I/0設(shè)備如下:cin標準輸入cout標準輸出cerr標準出錯信息輸出clog帶緩沖的標準出錯信息輸出故本題應(yīng)該選擇C。三、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5分。)36、在最壞情況下,堆排序需要比較的次數(shù)為______。標準答案:O(nlog2n)知識點解析:在最壞情況下,冒泡排序所需要的比較次數(shù)為n(n-1)/2;簡單插入排序所需要的比較次數(shù)為n(n-1)/2;希爾排序所需要的比較次數(shù)為O(n1.5個);堆排序所需要的比較次數(shù)為O(nlog2n)。37、標準答案:成員初始化列表知識點解析:派生類是基類的具體化,而基類則是派生類的抽象。派生類也就是基類的具體實現(xiàn),所以對基類數(shù)據(jù)成員的初始化是在派生類的構(gòu)造函數(shù)中成員初始化列表執(zhí)行的。38、在深度為5的完全二叉樹中,葉子結(jié)點的個數(shù)最多為【】。標準答案:16知識點解析:在深度為5的完全二叉樹中,就屬深度為5的滿二叉樹中的葉子結(jié)點的個數(shù)最多,這些葉子結(jié)點均在最后一層(即第5層)上。又根據(jù)二叉樹的性質(zhì)1:在二叉樹的第k層上,最多有2k-1(k≥1)個結(jié)點。因此,在第5層上最多的結(jié)點數(shù)為25-1=16。39、符合結(jié)構(gòu)化原則的3種基本控制結(jié)構(gòu)是:選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和【】。標準答案:順序結(jié)構(gòu)知識點解析:結(jié)構(gòu)化程序設(shè)計的3種基本邏輯結(jié)構(gòu)為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。順序結(jié)構(gòu)是一種簡單的程序設(shè)計結(jié)構(gòu),它是最基本、最常用的程序設(shè)計結(jié)構(gòu);選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu),包括簡單分支和多分支選擇結(jié)構(gòu);循環(huán)結(jié)構(gòu)也叫重復結(jié)構(gòu),它根據(jù)給定的條件,判斷是否需要重復執(zhí)行某一相同的程序段。40、一個隊列的初始狀態(tài)為空?,F(xiàn)將元素A,B,C,D,E,F(xiàn),5,4,3,2,1依次入隊,然后再依次退隊則元素退隊的順序為______。標準答案:A,B,C,D,E,F(xiàn),5,4,3,2,1。知識點解析:隊列是先進先出的。四、填空題(本題共10題,每題1.0分,共10分。)41、表達式c3=c1.operator+(c2)或c3=operator+(c1,c2)還可以表示為______。標準答案:c3=c1+c2知識點解析:此題考查的是“+”運算符的重載。運算符函數(shù)的調(diào)用有兩種形式,第一種是像一般函數(shù)那樣用函數(shù)名調(diào)用,即c1.Opeerator(c2)或者operator+(c1,c2);另一種是通過運算符構(gòu)成表達式,即c1+c2。42、為解決在多重繼承環(huán)境中因公共基類帶來的______問題,C++語言提供了虛基類機制。標準答案:二義性知識點解析:暫無解析43、在任何類中都有三種訪問權(quán)限的數(shù)據(jù)成員,這三種權(quán)限是public、private和_______。標準答案:protected知識點解析:暫無解析44、下面程序運行輸出的結(jié)果是【】。#include<iostream>usingnamespacestd;intmain(){chara[]="Chinese";a[3]=’\0’;cout<<a<<endl;return0;}標準答案:Chi知識點解析:字符串的結(jié)束標識是’\0’,輸出字符串時,到第一個’\0’輸出結(jié)束,而不管其后是否還有數(shù)據(jù),因此本題輸出為字符中的前3個字符。45、在下面函數(shù)的橫線處填上適當?shù)膬?nèi)容,使該函數(shù)能夠利用遞歸方法求解字符串str的長度(不得使用系統(tǒng)提供的字符串處理函數(shù))。intGJetLen(char*str){if(【】)return0;elsereturn1+GetLen(str+1);}標準答案:*str==NULL知識點解析:暫無解析46、在一個函數(shù)的定義或聲明前加上關(guān)鍵字【】時,該函數(shù)就聲明為內(nèi)聯(lián)函數(shù)。標準答案:inline知識點解析:暫無解析47、由C++編寫的面向?qū)ο蟮某绦蚴怯梢粋€個的對象組成,對象之間通過【】而相互作用。標準答案:消息知識點解析:暫無解析48、C++語言中表示雙精度浮點數(shù)的關(guān)鍵字是【】。標準答案:double知識點解析:C++語言中基本的數(shù)據(jù)類型關(guān)鍵字,有int,float,double。49、假設(shè)fin是一個文件流對象,則關(guān)閉文件的語句是【】。標準答案:fin知識點解析:如果程序沒有用close()主動關(guān)閉文件,則在文件流對象退出作用域時,被調(diào)用的析構(gòu)函數(shù)會關(guān)閉對象所聯(lián)系的文件。但應(yīng)及時關(guān)閉,以便盡早釋放占用的系統(tǒng)資源并將文件置于更安全的狀態(tài)。50、如果要把返回值為void的函數(shù)A聲明為類B的友元函數(shù),則應(yīng)在類B的定義中加入的語句是【】。標準答案:friendvoidA();知識點解析:C++中類的友元函數(shù)在聲明時應(yīng)在該函數(shù)前面加上關(guān)鍵字friend,同樣如果要聲明一個類為另一個類的友元類也要在前面類名前加上friend。國家二級(C++)筆試模擬試卷第2套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、按照“先進后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。A、隊列B、棧C、雙向鏈表D、二叉樹標準答案:B知識點解析:棧是一種特殊的線性表,其插入和刪除運算都只在線性表的一端進行,而另一端是封閉的。進行插入、刪除的一端稱為棧頂,封閉的一端稱為棧底。棧頂元素是最后被插入的元素,而棧底元素是最后被刪除的棧,是按“先進后出”的原則組織數(shù)據(jù)的。2、常采用的兩種存儲結(jié)構(gòu)是()。A、順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)B、散列方法和索引方式C、鏈表存儲結(jié)構(gòu)和數(shù)組D、線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)標準答案:A知識點解析:線性表的存儲通常要用兩種存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)。3、樹是結(jié)點的集合,它的根結(jié)點的數(shù)目是()。A、有且只有1個B、1或多于1C、0或1D、至少有2個標準答案:C知識點解析:樹具有明顯的層次關(guān)系,即樹是一種層次結(jié)構(gòu)。在樹結(jié)構(gòu)中,根結(jié)點在第一層上。當樹為非空時,樹中有且只有一個根結(jié)點;當樹為空時,樹中根結(jié)點的數(shù)目為0。4、已知一個有序線性表為(13,18,24,35,47,50,62,83,90,115,134),當用二分法查找值為90的元素時,查找成功的比較次數(shù)為()。A、1B、2C、3D、9標準答案:B知識點解析:根據(jù)二分法查找需要兩次:①首先將90與表中間的元素50進行比較,由于90大于50,所以在線性表的后半部分查找;②第二次比較的元素是后半部分的中間元素,即90,這時兩者相等,即查找成功。5、結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是()。A、程序的規(guī)模B、程序的效率C、程序設(shè)計語言的先進性D、程序的易讀性標準答案:D知識點解析:程序不光是編寫完就結(jié)束了,為了測試和維護程序,往往還有其他人閱讀和跟蹤程序,因此程序設(shè)計的風格應(yīng)該強調(diào)簡單和清晰,即程序的易讀性,“清晰第一,效率第二”。6、結(jié)構(gòu)化程序設(shè)計的核心和基礎(chǔ)是()。A、結(jié)構(gòu)化分析方法B、結(jié)構(gòu)化設(shè)計方法C、結(jié)構(gòu)化設(shè)計理論D、結(jié)構(gòu)化編程方法標準答案:C知識點解析:結(jié)構(gòu)化程序設(shè)計的核心和基礎(chǔ)是結(jié)構(gòu)化設(shè)計理論,其中包括結(jié)構(gòu)化分析方法、結(jié)構(gòu)化設(shè)計方法和結(jié)構(gòu)化編程方法。7、在面向?qū)ο蠓椒ㄖ校?)描述的是具有相似屬性與操作的一組對象。A、屬性B、事件C、方法D、類標準答案:D知識點解析:類(class)描述的是具有相似屬性與操作的一組對象,而一個具體對象則是其對應(yīng)類的一個實例。8、需求分析階段的任務(wù)是()。A、軟件開發(fā)方法B、軟件開發(fā)工具C、軟件開發(fā)費用D、軟件系統(tǒng)功能標準答案:D知識點解析:需求分析是軟件定義時期的最后一個階段,它的基本任務(wù)就是詳細調(diào)查現(xiàn)實世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在這些基礎(chǔ)上確定新系統(tǒng)的功能。9、有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()。A、ACFXDBEYZB、ABEFXYZCDC、ABCDEFXYZD、ABDYECFXZ標準答案:D知識點解析:對二叉樹的前序遍歷是指先訪問根結(jié)點,然后訪問左子樹,最后訪問右子樹。并且在訪問左、右子樹時,先訪問根結(jié)點,再依次訪問其左、右子樹。記住3種遍歷的順序:①前序,訪問根→按前序遍歷左子樹→按前序遍歷右子樹:②中序,按中序遍歷左子樹→訪問根→按中序遍歷右子樹;③后序,按后序遍歷左子樹→按后序遍歷右子樹→訪問根。10、設(shè)R是一個2元關(guān)系,S是一個3元關(guān)系,則下列運算中正確的是()。A、R-SB、R×SC、R∩SD、R∪S標準答案:B知識點解析:關(guān)系的交(∩)、并(∪)和差(-)運算要求兩個關(guān)系是同元的,顯然作為二元的R和三元S只能做笛卡爾積運算。二、選擇題(本題共25題,每題1.0分,共25分。)11、下列關(guān)于C++函數(shù)的敘述中,正確的是()。A、每個函數(shù)至少要具有一個參數(shù)B、每個函數(shù)都必須返回一個值C、函數(shù)在被調(diào)用之前必須先聲明D、函數(shù)不能自己調(diào)用自己標準答案:C知識點解析:暫無解析12、下列運算符不能重載為友元函數(shù)的是()。A、=()[]->B、+-++--C、><>=<=D、+=-=*=/=標準答案:A知識點解析:暫無解析13、在多繼承中,公有派生和私有派生對于基類成員在派生類中的可訪問性與單繼承的規(guī)則()。A、完全相同B、完全不同C、部分相同,部分不同D、以上都不對標準答案:A知識點解析:暫無解析14、在下列選項中,沒有構(gòu)成死循環(huán)的程序是()。A、inti=100;while(1){i=i%100+1;if(i>100)break;}B、for(;;);C、intk=1000;do{++k}while(k>=1000);D、ints=36;while(s);--s;標準答案:C知識點解析:暫無解析15、下列對派生類的表述中,錯誤的是()。A、一個派生類可以作為另一個派生類的基類B、派生類至少有一個基類C、派生類的缺省繼承方式是privateD、派生類只繼承了基類的公有成員和保護成員標準答案:D知識點解析:暫無解析16、在下面敘述中,不正確的是()。A、一個類的所有對象都有各自的數(shù)據(jù)成員,它們共享函數(shù)成員B、一個類中可以有多個同名的成員函數(shù)C、一個類中可以有多個構(gòu)造函數(shù)、多個析構(gòu)函數(shù)D、在一個類中可以聲明另一個類的對象作為它的數(shù)據(jù)成員標準答案:C知識點解析:暫無解析17、下列字符串中,正確的C++標識符是()。A、foo-1B、2bC、newD、_256標準答案:D知識點解析:暫無解析18、關(guān)于在調(diào)用模板函數(shù)時模板實參的使用,下列表述正確的是()。A、對于虛擬類型參數(shù)所對應(yīng)的模板實參,如果能從模板函數(shù)的實參中獲得相同的信息,則都可以省略B、對于虛擬類型參數(shù)所對應(yīng)的模板實參,如果它們是參數(shù)表中的最后的若干個參數(shù),則都可以省略C、對于虛擬類型參數(shù)所對應(yīng)的模板實參,若能夠省略則必須省略D、對于常規(guī)參數(shù)所對應(yīng)的模板實參,任何情況下都不能省略標準答案:D知識點解析:暫無解析19、一個類的友元函數(shù)或友元類能夠通過成員操作符訪問該類的()。A、私有成員B、保護成員C、公有成員D、公用成員、保護成員和私有成員標準答案:D知識點解析:暫無解析20、下列關(guān)于運算符重載的描述中,正確的是()。A、運算符重載可以改變運算符的操作數(shù)的個數(shù)B、運算符重載可以改變優(yōu)先級C、運算符重載可以改變結(jié)合性D、運算符重載不可以改變語法結(jié)構(gòu)標準答案:D知識點解析:暫無解析21、模板是實現(xiàn)類屬機制的一種工具,其功能非常強大,它允許用戶構(gòu)造類屬類,即()。A、模板函數(shù)B、函數(shù)模板C、模板類D、類模板標準答案:C知識點解析:暫無解析22、下面關(guān)于this指針的說法中,不正確的是()。A、當調(diào)用類的成員函數(shù)時,指針this被自動傳遞給該成員函數(shù)B、當調(diào)用類的成員函數(shù)時,指針this實際上指向了該類的一個對象C、友元函數(shù)也可以被傳遞指針thisD、在缺省狀態(tài)下,所有的成員函數(shù)都自動傳遞一個指針給激活它的對象標準答案:C知識點解析:暫無解析23、有如下函數(shù)模板定義:template<classT>Tfunc(Tx,Ty){returnx*x+y*y;}在下列對func的調(diào)用中,錯誤的是()。A、func(3,5);B、func(3.0,5.5);C、func(3,5.5)D、func<int>(3,5.5);標準答案:C知識點解析:暫無解析24、以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是()。A、publicB、staticC、protectedD、private標準答案:B知識點解析:暫無解析25、有如下定義語句:inta[]={1,2,3,4,5);,則對語句int*p=a;正確的描述是()。A、語句int*p=a;定義不正確B、語句int*p=a;初始化變量p,使其指向數(shù)組對象a的第一個元素C、語句int*p=a;是把a[0]的值賦給變量pD、語句int*p=a;是把a[1]的值賦給變量p標準答案:B知識點解析:暫無解析26、以下四種說法中,正確的一項是()。A、C++允許在字符串上進行整體操作B、語句:charvn[]="Brown";將vn定義成一個有5個元素的數(shù)組,因為"Brown"中含有5個字符C、對指針只要賦給一個地址值就可以了D、一維的指針數(shù)組實際上是一個二維數(shù)組標準答案:A知識點解析:暫無解析27、下列對于虛函數(shù)和重載函數(shù)的敘述,正確的是()。A、虛函數(shù)要求函數(shù)名、返回值類型和參數(shù)序列完全相同B、重載函數(shù)要求函數(shù)有相同的返回值類型和函數(shù)名稱,并有不同的參數(shù)序列C、虛函數(shù)是根據(jù)對象的不同去調(diào)用不同類的虛函數(shù)D、虛函數(shù)和重載函數(shù)都是在運行時表現(xiàn)出多態(tài)功能標準答案:D知識點解析:暫無解析28、設(shè)有以下說明和定義:#include<iostream.h>Voidmain(){typedefunion{longi;intk[5];charc;}DATE;structdate{intcat;DATEcow;doubledog;}too;DATEmax;cout<<(sizeof(structdate)+sizeof(max))<<end1;}A、26B、52C、18D、8標準答案:B知識點解析:暫無解析29、有如下程序:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){cout.fill(’*’);cout.width(6);cout.fill(’#’);cout<<123<<end1;return0;}執(zhí)行生的輸出結(jié)果是()。A、###123B、123###C、***123D、123***標準答案:A知識點解析:暫無解析30、有如下程序#include<iostream>#include<iomanip>usingnamespacestd;intmain(){cout<<setprecision(3)<<fixed<<setfill(’*’)<<setw(8);cout<<12.345<<__________<<34.567;return0;}若程序的輸出是:**12.345**34.567則程序中下劃線處遺漏的操作符是()。A、setprecision(3)B、fixedC、setfill(’*’)D、setw(8)標準答案:D知識點解析:暫無解析31、下面的描述中,正確的是()。A、virtual可以用來聲明虛函數(shù)B、含有純虛函數(shù)的類是不可以用來創(chuàng)建對象的,因為它是虛基類C、即使基類的構(gòu)造函數(shù)沒有參數(shù),派生類也必須建立構(gòu)造函數(shù)D、靜態(tài)數(shù)據(jù)成員可以通過成員初始化列表來初始化標準答案:A知識點解析:暫無解析32、如果類A被說明成類B的友元,則()。A、類A的成員即類B的成員B、類B的成員即類A的成員C、類A的成員函數(shù)不得訪問類B的成員D、類A的成員函數(shù)可以訪問類B的成員標準答案:D知識點解析:暫無解析33、帶有基類的多層派生類構(gòu)造函數(shù)的成員初始化列表中都要排出虛基類的構(gòu)造函數(shù),這樣將對虛基類的子對象初始()。A、與虛基類下面的派生類個數(shù)有關(guān)B、多次C、二次D、一次標準答案:D知識點解析:暫無解析34、下面程序的運行結(jié)果為()。#include<iostream.h>voidswap(int&a,intb){inttemp;temp=a++;a=b;b=temp;}voidmain(){inta=2,b=3;swap(a,b);cout<<a<<","<<b<<end1;}A、2,3B、3,2C、2,2D、3,3標準答案:D知識點解析:暫無解析35、有如下程序:#include<iostream>usingnamespacestd;classAA{intn;public:AA(intk):n(k){}intget(){returnn;}intget()const{returnn+1;}}intmain(){AAa(5);constAAb(6);cout<<a.get()<<b.get();return0;}執(zhí)行后的輸出結(jié)果是()。A、55B、57C、75D、77標準答案:B知識點解析:暫無解析三、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5分。)36、設(shè)一棵二叉樹中有3個葉子結(jié)點,有8個度為1的結(jié)點,則該二叉樹??偟慕Y(jié)點數(shù)為【】。標準答案:13知識點解析:根據(jù)二叉樹的性質(zhì)3:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中的二叉樹有3個葉子結(jié)點,所以,該二叉樹有3-1=2個度為2的結(jié)點;又知本題中的二叉樹有8個度為1的結(jié)點。所以,本題中的二叉樹總結(jié)點數(shù)為葉子結(jié)點數(shù)+度為1的結(jié)點數(shù)+度為2的結(jié)點數(shù)=3+8+2=13.所以,本題的正確答案為13。37、類是一個支持集成的抽象數(shù)據(jù)類型,而對象是類的【】。標準答案:實例知識點解析:在面向?qū)ο蟮某绦蛟O(shè)計中,類描述的是具有相似性質(zhì)的一組對象,而一個具體對象稱為類的實例。38、結(jié)構(gòu)化設(shè)計主要分為系統(tǒng)設(shè)計和模塊設(shè)計,【】的任務(wù)是決定系統(tǒng)的模塊結(jié)構(gòu)。標準答案:系統(tǒng)設(shè)計知識點解析:結(jié)構(gòu)化設(shè)計主要分為系統(tǒng)設(shè)計和模塊設(shè)計。系統(tǒng)設(shè)計的任務(wù)是決定系統(tǒng)的模塊結(jié)構(gòu);模塊設(shè)計的任務(wù)是具體考慮每一個模塊內(nèi)部采用什么算法,模塊的輸入、輸出以及該模塊的功能。39、一般來說,數(shù)據(jù)庫的設(shè)計過程要經(jīng)歷3個大的階段,即可行性分析與研究階段、系統(tǒng)設(shè)計階段、設(shè)計實施與系統(tǒng)運行階段。概念設(shè)計、邏輯結(jié)構(gòu)設(shè)計、物理結(jié)構(gòu)設(shè)計屬于數(shù)據(jù)庫設(shè)計的【】階段。標準答案:系統(tǒng)設(shè)計知識點解析:數(shù)據(jù)庫的設(shè)計過程要經(jīng)歷3個階段:可行性分析與研究階段、系統(tǒng)設(shè)計階段、設(shè)計實施與系統(tǒng)運行階段.系統(tǒng)設(shè)計階段是系統(tǒng)的具體設(shè)計過程,主要包括概念設(shè)計、邏輯結(jié)構(gòu)設(shè)計、物理結(jié)構(gòu)設(shè)計3個步驟。這3個不同層次上的設(shè)計過程,是把實體以及相互之間的聯(lián)系轉(zhuǎn)換為“數(shù)據(jù)”并落實于計算機中。數(shù)據(jù)庫設(shè)計中的主要技術(shù)工作在這個階段中完成。40、數(shù)據(jù)流圖有兩種典型的結(jié)構(gòu)形式,它們分別是變換型和【】。標準答案:事務(wù)型知識點解析:數(shù)據(jù)流圖中有眾多的加工,但必有一個加工是起核心作用的,這樣的加工稱為中心加工。由數(shù)據(jù)流圖導出結(jié)構(gòu)圖的關(guān)鍵是找出中心加工。一般來說,中心加工有兩種存在形態(tài),即數(shù)據(jù)流圖有兩種典型的結(jié)構(gòu)形式:一種是變換型,另一種是事務(wù)型。四、填空題(本題共4題,每題1.0分,共4分。)41、若有如下程序段:#include<iostream>usingnamespacestd;intmain(){char*p="abcdefgh",*r;long*q;q=(long*)p;q++;r=(char*)q;cout<<r<<end1;return0;}該程序的輸出結(jié)果是______。標準答案:efgh知識點解析:本題定義了一個字符型指針變量p,并通過賦初值讓它指向了一個字符串,還定義了另一個字符型指針變量r和一個長整型指針變量q。首先通過語句“a=(long*)p;”,把p的地址值強制轉(zhuǎn)換為長整型地址值并賦值給小然后執(zhí)行“q++”,地址值增加了4,執(zhí)行語句“r=(char*)q;”,把長整型指針變量q的值再強制轉(zhuǎn)換成字符型地址值并賦給r,r的值應(yīng)為字符串中字符“e”的地址。最后輸出r指向的字符串。42、請將下列類定義補充完整classBase{public:voidfun(){cout<<"Base::fun"<<end1;}};classDerived:publicBase{public:voidfun(){______//顯式調(diào)用基類的fun函數(shù)cout<<"Derived::fun"<<end1;}};標準答案:Base::fun();知識點解析:本題考核虛基類。作用域分辨符號是“::”,它可以用來限定要訪問的成員所在的類的名稱。一般來說,在派生類中對基類成員的訪問應(yīng)該是惟一的。但是,多繼承情況下可能造成對基類中某個成員的訪問出現(xiàn)不惟一的情況,通過使用對象作用域分辨符可以解決這種對基類成員訪問的;義性問題。43、與成員訪問表達式p->name等價的表達式是______。標準答案:(*p).name知識點解析:本題考核對象指針的定義與使用。一個基類型為類類型的指針稱為對象指針。對于指向?qū)ο蟮闹羔?,下面兩種表示方式是等價的:對象指針名->成員名;(*對象指針名).成員名;44、有如下程序:#include<iostream>usingnamespacestd;classAA{public:virtualvoidf(){cout<<"AA";}};classBB:publicAA{public:BB(){cout<<"BB":}};classCC:publicBB{public:virtualvoidf(){BB::f():cout<<"CC";}};intmain(){AAaa,*p;BBbb;CCcc;p=&cc;p->f();return0;}運行后的輸出結(jié)果______。標準答案:BBBBAACC知識點解析:本題考核虛函數(shù)。本題中,函數(shù)f()在基類AA和派生類CC中都聲明為虛函數(shù),所以采用動態(tài)聯(lián)編。主函數(shù)首先定義類AA的對象aa和指針對象p,然后定義了類BB的對象bb,此時調(diào)用了類BB的構(gòu)造函數(shù)輸出BB。再定義類CC的對象cc,由于類CC是類BB的派生類,所以此時又調(diào)用類BB的構(gòu)造函數(shù)輸出BB。最后執(zhí)行語句“p=&cc;p->f();”,輸出AA和CC。五、填空題(含2小題)(本題共1題,每題1.0分,共1分。)45、下面程序的輸出結(jié)果為:Base::fun,請將程序補充完整。#include<iostream.h>classBase{public:【】fun(){cout<<"Base::fun"<<end1:}classDerived:publicBase{public:【】fun(){cout<<"Derived::fun"<<end1;}};intmain(){Basea,*pb;Derivedb;pb=&b;pb->fun();return0;}標準答案:virtualvoidvoid知識點解析:本題考核虛函數(shù)的使用。在C++中,一個基類指針(或引用)可以用于指向它的派生類對象,而且通過這樣的指針(或引用)調(diào)用虛函數(shù)時,被調(diào)用的是該指針(或引用)實際指向的對象類的那個重定義版本,這樣的調(diào)用稱為多態(tài)調(diào)用?;怋ase和派生類Derived中都定義了成員函數(shù)fun,但是有不同的實現(xiàn)。程序最后輸出的結(jié)果為:Base::fun,表明通過對象指針pb調(diào)用的函數(shù)版本為派生類中定義的,只有把基類的fun函數(shù)定義為虛函數(shù),才能滿足要求。同時通過函數(shù)fun的定義可知函數(shù)的返回類型為void。國家二級(C++)筆試模擬試卷第3套一、公共基礎(chǔ)選擇題(本題共35題,每題1.0分,共35分。)1、算法分析的目的是()A、找出數(shù)據(jù)結(jié)構(gòu)的合理性B、找出算法中輸入和輸出之間的關(guān)系C、分析算法的易懂性和可靠性D、分析算法的效率以求改進標準答案:D知識點解析:暫無解析2、下列敘述中正確的是()。A、線性鏈表的各元素在存儲空間中的位置必須是連續(xù)的B、線性鏈表的頭元素一定存儲在其他元素的前面C、線性鏈表中的各元素在存儲空間中的位置不一定是連續(xù)的,但表頭元素一定存儲在其他元素的前面D、線性鏈表中的各元素在存儲空間中的位置不一定是連續(xù)的,且各元素的存儲順序也是任意的標準答案:D知識點解析:暫無解析3、線性表常采用的兩種存儲結(jié)構(gòu)是()A、順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)B、散列方法和索引方式C、鏈表存儲結(jié)構(gòu)和數(shù)組D、線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)標準答案:A知識點解析:暫無解析4、設(shè)棧S和隊列Q的初始狀態(tài)為空,元素a、b、c、d、e和f依次通過棧S,一個元素出棧后即進入隊列Q,若6個元素出隊的順序是b、d、c、f、e、a,則棧S的容量至少應(yīng)該是()。A、6B、4C、3D、2標準答案:C知識點解析:棧的操作規(guī)則是后進先出,隊列的運算規(guī)則是先進先出。對于本題,出隊順序也就是入隊順序,同樣也是出棧順序,為了得到b、d、c、f、e、a出棧順序,則入棧順序應(yīng)該是a進、b進、b出、c進、d進、d出、c出、e進、f進、f出、e出、a出。可以看作最多只有3個元素在棧內(nèi),所以棧的容量最少應(yīng)為3。5、數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()A、DB包括:DBS和DBMSB、DBMS包括DB和DBSC、DBS包括DB和DBMSD、沒有任何關(guān)系標準答案:C知識點解析:暫無解析6、在包含1000個元素的線性表中實現(xiàn)如下各運算,所需的執(zhí)行時間最長的是()A、線性表按順序方式存儲,在線性表的第100個結(jié)點后面插入一個新結(jié)點B、線性表按鏈接方式存儲,在線性表的第100個結(jié)點后面插入一個新結(jié)點C、線性表按順序方式存儲,刪除線性表的第900個結(jié)點D、線性表按鏈接方式存儲,刪除指針P所指向的結(jié)點標準答案:A知識點解析:由于線性表采用的是順序存儲方式,用存儲單元的鄰接性體現(xiàn)線性表元素間的一維順序關(guān)系,因此對線性表進行插入和刪除運算時,可能需要移動大量的結(jié)點,以保持這種物理和邏輯的一一致性。對于選項A),后面的900個結(jié)點都要住后移動,對于選項C),后面的100個結(jié)點都要往前移動。而對于線性表按鏈接方式存儲,當進行插入與刪除操作時,只改變相應(yīng)的指針即可,所以比較4個選項的操作可得知選項A)所需要的執(zhí)行時間最長。7、一間教室可坐多名學生,則實體教室和學生之間的聯(lián)系是()。A、一對一B、一對多C、多對一D、多對多標準答案:B知識點解析:暫無解析8、對于長度為n的線性表,在最壞情況下,下列各種排序法所對應(yīng)的比較次數(shù)中正確韻是()。A、冒泡排序為n/2B、冒泡排序為nC、快速排序為nD、快速排序為n(n-1)/2標準答案:D知識點解析:暫無解析9、對關(guān)系S和R進行集合運算,結(jié)果中既包含s中的所有元組也包含R中的所有元組,這樣的集合運算稱為()A、并運算B、交運算C、差運算D、積運算標準答案:A知識點解析:暫無解析10、建立E-R模型的工作,屬于軟件生命周期中的()A、需求分析階段B、設(shè)計階段C、編碼階段D、測試階段標準答案:B知識點解析:暫無解析11、在下列橫線處應(yīng)添加的語句是()。classBase{public:voidfun(){cout<<"Base::fun"<<end1;}};class:Derived:publicBase{public:voidfun(){______//顯示調(diào)用基類的fun函數(shù)cout<<"Derived::fun"<<end1;}};A、Derived::funB、Base::fun();C、Pubic::funD、fun();標準答案:B知識點解析:暫無解析12、()提供了類對外部的接口,私有成員是類的內(nèi)部實現(xiàn),而保護成員不允許外界訪問,但允許派生類的成員訪問,這樣既有一定的隱藏能力,又提供了開放的接口。A、公有成員B、私有成員C、私有成員函數(shù)D、保護成員標準答案:A知識點解析:暫無解析13、若類A和類B的定義如下:#include<malloc.h>classA{inti,j;public:intgeti(){returni;}};classB:publicA{intk;public:voidmake(){k=i,j;});則上述定義中非法的表達式是()。A、k=i*j;B、intk;C、returni;D、voidmake();標準答案:A知識點解析:因為派生類不能訪問基類的私有成員i和j(默認情況下,成員的屬性為私有),所以表達式k=i*j是非法的。其余的訪問權(quán)限都是許可的。14、在下面的類定義中,錯誤的語句是()。classSample{public:Sample(intval)://①~Sample();//②private:inta=2.5;//③Sample()://④};A、①②③④B、②C、③D、①②⑨標準答案:C知識點解析:暫無解析15、假定MyClass為一個類,則該類的拷貝初始化構(gòu)造函數(shù)的聲明語句為()A、MyClass&(MyClassx);B、MyClass(MyClassx)C、MyClass(MyClass&x);D、MyClass(MyClass*x)標準答案:C知識點解析:拷貝構(gòu)造函數(shù)是一個特殊的構(gòu)造函數(shù),它用一個已知的對象初始化一個正在創(chuàng)建的同類對象,它的一般格式是:類名::類名(const類名&引用對象名)。16、下面對靜態(tài)數(shù)據(jù)成員的描述中,正確的是()A、靜態(tài)數(shù)據(jù)成員是類的所有對象共享的數(shù)據(jù)B、類的每個對象都有自己的靜態(tài)數(shù)據(jù)成員C、類的不同對象有不同的靜態(tài)數(shù)據(jù)成員值D、靜態(tài)數(shù)據(jù)成員不能通過類的對象調(diào)用標準答案:A知識點解析:暫無解析17、關(guān)于運算符重載,下列表述中正確的是()。A、C++已有的任何運算符都可以重載B、運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C、在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D、可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符標準答案:C知識點解析:此題考查的是運算符的有關(guān)概念。運算符重載是針對C++原有運算符進行的,不能通過重載創(chuàng)造新的運算符;除了.、.*、->*、::、?:這五個運算符之外,其他運算符都可以重載;在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型;運算符函數(shù)的返回值類型可以聲明為基本數(shù)據(jù)類型:18、不能作為函數(shù)重載的判斷依據(jù)的是()。A、constB、返回類型C、參數(shù)個數(shù)D、參數(shù)類型標準答案:B知識點解析:暫無解析19、有如下類的定義。橫線處的語句是()。classMyClass{public:MyClass(inta=0,intb=0){X=a;Y=b;}voidChange()const{X-=10;Y+=10;}private:______intX,Y;A、staticB、constC、mutableD、不需要填入內(nèi)容標準答案:C知識點解析:C++中const關(guān)鍵字用來表示一個常量,同時const也用來修飾函數(shù)。這兩個概念需要明確:const所修飾的函數(shù)只能是類的成員函數(shù),因為const所修飾的函數(shù)中,要由編譯器負責保護類的成員變量不被修改。而相對的,mutable則是用來修飾類的成員變量,讓該變量在const所修飾的成員函數(shù)中可以被修改。而且const修飾的函數(shù)只能是類的成員函數(shù),mutable修飾的變量只能是類的成員變量。20、有如下函數(shù)模板定義:templateT1sum(T1a1){return(a1+a2+a3);}則以下調(diào)用中正確的是()。A、sum<int,4,3>(5);B、sum<4,3>(5);C、sum<int,int,int>(5);D、sum(5);標準答案:A知識點解析:本題考查的函數(shù)模板的使用,有時不能根據(jù)用戶傳進來的參數(shù)決定所有模板函數(shù)的值類型,如函數(shù)的返回值,還有用戶希望自己指定參數(shù)類型,這時就需要顯式地指出參數(shù)模板的類型,顯示指定模板的類型格式為:返回值類型函數(shù)模板<參數(shù)類型表>(參數(shù)表)。21、下列關(guān)于this指針的敘述中,正確的是()A、任何與類相關(guān)的函數(shù)都有this指針B、類的成員函數(shù)都有this指針C、類的友元函數(shù)都有this指針D、類的非靜態(tài)成員函數(shù)才有this指針標準答案:D知識點解析:this指針是成員函數(shù)所屬對象的指針,它指向類對象的地址;它隱含于每個類的非靜態(tài)成員函數(shù)中;this指針只能在類的成員函數(shù)中使用,它指向該成員函數(shù)被調(diào)用的對象;靜態(tài)成員函數(shù)沒有this指針,因為類中只有一個靜態(tài)成員函數(shù)實例,使用this指針無意義。22、以下程序輸出結(jié)果是():#include<iostream>usingnamespacestd;voidadd(intX,inty,int*z){*z=y+x;}intmain(){inta,b,c;add(8,4,&a);add(6,a,&b);add(a,b,&c);cout<<a<<","<<b<<","<<c<<end1;return0;A、12,10,14B、12,18,30C、12,6,18D、12,14,30標準答案:B知識點解析:暫無解析23、有如下程序:#include<iostream.h>usingnamespacestd;classTestClass{public:TestClass(){cout<<"defaultconstructor\n";}TestClass(constTestClass&x){cont<<"copyconstructor\n";}TestClassuserCode(TestClassb){TestClassc(b);returnc;}intmain(){TestClassa,d;cout<<"callinguserCode()\n";d=userCode(a);return0;}執(zhí)行上面程序的過程中,構(gòu)造函數(shù)TestClass()和TestClass(constTestclass&x)被調(diào)用的次數(shù)分別是()A、2次3次B、3次2次C、都是2次D、都是3次標準答案:A知識點解析:由主函數(shù)入手,定義了類TestClass的對象a和d,當類對象進入其作用域時調(diào)用構(gòu)造函數(shù),構(gòu)造函數(shù)在建立對象時由系統(tǒng)自動執(zhí)行,而且只執(zhí)行一次。因為定義了兩個對象,所以構(gòu)造函數(shù)TestClass()被調(diào)用的次數(shù)是2?!癲=userCode(a);”語句d中調(diào)用成員為a的user(ode()成員函數(shù),所以是3次。24、有以下程序:#include<iostream>usingnamespacestd;{public:TestClass(intr1,intr2){R1=r1;R2=r2;}voidprint();voidprint()const;private;intR1,R2;};voidTestClass::print(){cout<<R1<<","<<R2<<end1;}voidTestclass::print()constcout<<R1<<<<","<<R2<<end1;}intmain(){TestClassa(5,4);constTestClassb(20,52);b.print();return0;}執(zhí)行后的輸出結(jié)果是()。A、5,4B、20,52C、0,0D、4,5標準答案:B知識點解析:暫無解析25、靜態(tài)數(shù)據(jù)成員是為()的數(shù)據(jù)。A、私有B、保護C、所有對象共享D、類成員標準答案:C知識點解析:暫無解析26、下列說法中錯誤的是()A、公有繼承時基類中的public成員在派生類中仍是public的B、公有繼承時基類中的private成員在派生類中仍public是的C、私有繼承時基類中的public成員在派生類中仍private是的D、保護繼承時基類中的public成員在派生類中仍protected是的標準答案:B知識點解析:暫無解析27、有如下程序:#include<iostream>usingnamespacestd;{TestClass(){cout<<"BB";fun()}voidfun(){cout<<"Bf";}};classTestClass1:publicTestClass{public:TestClass1(){cout<<"DD";}voidfun(){cout<<"Df";}};intmain(){TestClass1d;return0;}執(zhí)行上面的程序?qū)⑤敵?)。A、BBBfDDB、BBDfDDDfC、DDD、DDBBBf標準答案:A知識點解析:暫無解析28、下列程序中橫線處正確的語句是()。#include<iostream>usingnamespacestd;classTestClass{public:voidfun(){cout<<"TestClass::fun"<<end1;}};classTestClass1:publicTestClass{voidfun(){______//顯示調(diào)用基類的函數(shù)fun()cout<<"TestClass1::fun"<<end1;}};A、fun();B、TestClass.fun()C、TestClass::fun();D、TestClass->fun();標準答案:C知識點解析:暫無解析29、下面關(guān)于虛函數(shù)的描述中正確的是()A、虛函數(shù)是一個靜態(tài)成員函數(shù)B、虛函數(shù)是一個非成員函數(shù)C、虛函數(shù)即在函數(shù)說明時定義,也可以在函數(shù)實現(xiàn)時定義D、派生類的虛函數(shù)與基類中對應(yīng)的虛函數(shù)具有相同的參數(shù)個數(shù)和類型標準答案:D知識點解析:暫無解析30、有如下程序:#include<iostream>usingnamespacestd;classTestClass1{public:virtualvoidfun(){cout<<"1";}};classTestClass2:publicTestClass1{public:TestClass2(){cout<<"2";}};classTestClass3:publicTestClass2{public:virtualvoidfun(){TestClass2::fun();cout<<"3";}};intmain(){TestClass1aa,*p;TestClass2bb;TestClass3cc;p=&cc;P->fun();return0;}執(zhí)行上面程序的輸出是()。A、1122B、2112C、2213D、2223標準答案:C知識點解析:主函數(shù)中定義TestClass1的對象aa,*p對象指針,TestClass2的對象bb以及TestClass3的對象cc。p指向cc,TestClass3為TestClass2的派生類,構(gòu)造函數(shù)輸出2。TestClass3中fun函數(shù)中為TestClass2中的。fun,調(diào)用TestClass2的構(gòu)造函數(shù),輸出2?!皃->fun();”,TestClass2繼承于TestClass1中的fun,所以輸出1。然后輸出TestClass3中的“cout<<”3””,即輸出3。31、有如下程序:#include<iostream>usingnamespacestd;longfun(intn){if(n>2)return(fun(n-1)+fun(n-2));return2;}intmain(){cout<<fun(3)<<end1;return0;}則該程序的輸出結(jié)果應(yīng)該是()。A、2B、3C、4D、5標準答案:C知識點解析:暫無解析32、下列程序的輸出結(jié)果是()。#include<iostream>usingnamespacestd;templateTfun(Ta,Tb){return(a>=b)?a:b;}voidmain(){cout<<fun(3,6)<<’,’<<fun(3.14F,6.28F)<<end1;}A、6,3.14B、3,6.28C、3,3.14D、6,6.28標準答案:D知識點解析:暫無解析33、針對數(shù)組定義intdata[10];,下列表述中錯誤的是()A、用*data可訪問到數(shù)組的首元素B、用data[9]可訪問到數(shù)組的末元素C、用data[10]訪問數(shù)組元素會超出數(shù)組邊界D、data共有10個元素,其首元素是data[1]標準答案:D知識點解析:暫無解析34、有如下類聲明:classFoo{intbar;};則Foo類的成員bar是()A、公有數(shù)據(jù)成員B、公有成員函數(shù)C、私有數(shù)據(jù)成員D、私有成員函數(shù)標準答案:C知識點解析:暫無解析35、為了取代C中帶參數(shù)的宏,在C++中使用()。A、重載函數(shù)B、內(nèi)聯(lián)函數(shù)C、遞歸函數(shù)D、友元函數(shù)標準答案:B知識點解析:暫無解析二、公共基礎(chǔ)填空題(本題共15題,每題1.0分,共15分。)36、軟件生命周期可分為多個階段,一般分為定義階段、開發(fā)階段和維護階段。編碼和測試屬于______階段。標準答案:開發(fā)知識點解析:軟件生命周期可分為多個階段,一般分為定義階段、開發(fā)階段和維護階段。定義階段包括可行性研究初步項目計劃和需求分析:開發(fā)階段包括概要設(shè)計、詳細設(shè)計、實現(xiàn)和測試;維護階段包括使用、維護和退役。37、不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)的是______。標準答案:選抒知識點解析:暫無解析38、用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型是______。標準答案:層次模型知識點解析:暫無解析39、在兩種基本測試方法中,______測試的原則之一是保證所測模塊中每一個獨立路徑至少執(zhí)行一次。標準答案:白盒知識點解析:按功能劃分測試可分為白盒測試和黑盒測試。白盒測試的原則是保證所測試模塊中每一獨立路徑至少執(zhí)行一次;保證所測試模塊所有判斷的每一分支至少執(zhí)行一次;保證所測試模塊每一循環(huán)都在邊界條件和一般條件下至少各執(zhí)行一次;驗證所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。40、與二維表中的“行”的概念最接近的概念是______。標準答案:元組知識點解析:在關(guān)系模型中,數(shù)據(jù)結(jié)構(gòu)用單一的二維表結(jié)構(gòu)來表示實體及實體間的聯(lián)系。一個關(guān)系對應(yīng)一個二維表。二維表中的列稱為屬性,屬性值的取值范圍稱為值域。二維表中的行稱為一個元組。41、執(zhí)行以下程序后,輸出“*”號的個數(shù)是______。#include<iostream.h>main(){inti,j;for(i=1;i<5;i++)for(j=2;j<=i;j++)cout<<’*’;}標準答案:6知識點解析:暫無解析42、有如下類聲明:classTestClass1{intk;public:voidset(intn){k=n;}intget()const{returnk;}};classTestClass2:protectedTestClass1{protected:intj;public:voidset(intm,intn){TestClass1::set(m);j=n;}intget()const{returnTestClass1::get()+j;)};則類TestClass2中保護的數(shù)據(jù)成員和成員函數(shù)的個數(shù)是______。標準答案:3知識點解析:暫無解析43、一個在基類中說明的虛函數(shù),它在該基類中沒有定義,但要求任何派生類都必須定義自己的版本,此虛函數(shù)又稱______。標準答案:純虛函數(shù)知識點解析:暫無解析44、表達式x.operator+(y.operator++(0))還可以寫成______。標準答案:x+y++或x+(y++)知識點解析:暫無解析45、基類為虛函數(shù),撤銷對象調(diào)用析構(gòu)函數(shù)時,采用______聯(lián)編。標準答案:動態(tài)知識點解析:暫無解析46、以下函數(shù)實現(xiàn)的功能是______。voidfun(char*s){char*p,*q,temp;p=s;q=s+strlen(s)-1;while(p<q){temp=*p;*p=*q;*p=temp;p++;q--;}}標準答案:將字符串首尾顛倒知識點解析:暫無解析47、指針數(shù)組是由______構(gòu)成的數(shù)組。標準答案:指針或指針變量知識點解析:暫無解析48、已知一個函數(shù)的原型是:intfn(doublea);若要以5.27為實參調(diào)用該函數(shù),應(yīng)使用表達式______。標準答案:fn(5.27)知識點解析:暫無解析49、非成員函數(shù)應(yīng)聲明為類的______函數(shù)才能訪問這個類的private成員。標準答案:友元知識點解析:暫無解析50、在類中,______成員為類的所有對象所共享。標準答案:靜態(tài)知識點解析:暫無解析國家二級(C++)筆試模擬試卷第4套一、公共基礎(chǔ)選擇題(本題共10題,每題1.0分,共10分。)1、棧和隊列的共同特點是A、都是先進先出B、都是先進后出C、只允許在端點處插入和刪除元素D、沒有共同點標準答案:4知識點解析:棧和隊列都是一種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進行插入或刪除操作,是一種“后進先出”的線性表;而隊列只允許在表的一端進行插入操作,在另一端進行刪除操作,是一種“先進先出”的線性表。2、已知二叉樹后序遍歷序列是d

溫馨提示

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

評論

0/150

提交評論