國家二級C++機試(選擇題)模擬試卷31(共222題)_第1頁
國家二級C++機試(選擇題)模擬試卷31(共222題)_第2頁
國家二級C++機試(選擇題)模擬試卷31(共222題)_第3頁
國家二級C++機試(選擇題)模擬試卷31(共222題)_第4頁
國家二級C++機試(選擇題)模擬試卷31(共222題)_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級C++機試(選擇題)模擬試卷31(共9套)(共222題)國家二級C++機試(選擇題)模擬試卷第1套一、選擇題(本題共23題,每題1.0分,共23分。)1、有三個關(guān)系R、S和T如下:由關(guān)系R和S通過運算得到關(guān)系T,則所使用的運算為()。A、并B、自然連接C、笛卡爾積D、交標準答案:D知識點解析:自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復的屬性列去掉,所以B錯誤。笛卡爾積是用R集合中元素為第一元素,S集合中元素為第二元素構(gòu)成的有序?qū)Γ訡錯誤。根據(jù)關(guān)系T可以很明顯地看出是從關(guān)系R與關(guān)系S中取得相同的關(guān)系組所以取得是交運算,選擇D。2、下面程序的輸出結(jié)果為()。#include<iostream.h>classTestClass{public:TestClass(){val++;}staticintval;};intTestClass::val=0;voidmain(){TestClasscsl;cout<<cs1.va1<<’’’’;TestClasscs2;TestClasscs3,cs4;cout<<cs2.va1<<end1;}A、03B、13C、14D、24標準答案:C知識點解析:由主函數(shù)main入手,定義TestClass類的對象cs1,執(zhí)行cs1.val,其中val為靜態(tài)變量,根據(jù)“intTestClass::val=0;”初始化,TestClass中的TestClass(){val++;)構(gòu)造函數(shù)執(zhí)行后,val值為1。主函數(shù)中接著定義對象cs2,cs3,cs4。執(zhí)行“cout<<cs2.val<<end1;”中的val值為4。3、結(jié)構(gòu)化程序設(shè)計的基本原則不包括()。A、多元性B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為:自頂向下,逐步求精,模塊化和限制使用GOTO語句,其中不包括多態(tài)性。4、下列排序方法中,最壞情況下比較次數(shù)最少的是()。A、冒泡排序B、簡單選擇排序C、直接插入排序D、堆排序標準答案:D知識點解析:冒泡排序、直接插入排序與簡單選擇排序法在最壞情況下均需要比較n(n一1)/2次,而堆排序在最壞情況下需要比較的次數(shù)是nlog,n。5、軟件生命周期中的活動不包括()。A、市場調(diào)研B、需求分析C、軟件測試D、軟件維護標準答案:A知識點解析:軟件的生命周期描述了軟件從產(chǎn)生到最終消亡的全過程,生命周期中的活動包括需求分析、軟件設(shè)計(分為概要設(shè)計和詳細設(shè)計)、軟件實現(xiàn)、軟件測試和軟件維護,不包括市場調(diào)研。6、數(shù)據(jù)流圖中帶有箭頭的線段表示的是()。A、控制流B、事件驅(qū)動C、模塊調(diào)用D、數(shù)據(jù)流標準答案:D知識點解析:數(shù)據(jù)流圖是從數(shù)據(jù)傳遞和加工的角度,來刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程.其中帶箭頭的線段表示數(shù)據(jù)流,沿箭頭方向傳遞數(shù)據(jù)的通道,一般在旁邊標注數(shù)據(jù)流名。7、下列描述中正確的是()。A、軟件測試應(yīng)該由程序開發(fā)者來完成B、程序經(jīng)調(diào)試后一般不需要再測試C、軟件維護只包括對程序代碼的維護D、以上三種說法都不對標準答案:D知識點解析:為了達到好的測試效果,應(yīng)該由獨立的第三方進行測試工作。因為從心理學角度講,程序人員或設(shè)計方在測試自己的程序時,要采取客觀的態(tài)度是會不同程度地存在障礙的,所以選項A)錯誤。在程序調(diào)試時,修改了一個錯誤的同時可能引入了新的錯誤,解決的辦法是在修改了錯誤之后,必須進行回歸測試,所以選項B)錯誤。所謂軟件維護,就是將交付的軟件投入運行,并在運行使用中不斷地維護,根據(jù)新提出的需求進行必要而且可能的擴充和刪改,所以選項C)錯誤。8、有如下類定義:classAA{inta;public:intgetRefoconst{return&a;}∥①intgetVaheoconst{returna;}∥②voidset(intn)const{a=n;}∥③friendvoidshow(AAaa)const{cout<A、①B、②C、③D、④標準答案:B知識點解析:此題考查了常成員函數(shù)和友元函數(shù)的概念。選項A中,getRef()函數(shù)的返回值和函數(shù)函數(shù)類型不符,故錯誤;C選項中set()常成員函數(shù)改變了數(shù)據(jù)成員的值,這是不允許的:D選項中show()函數(shù)被同時定義成友元函數(shù)和常成員函數(shù)是錯誤的。9、有如下程序:#includeusingnamespacestd;classSample{friendlongfun(Samples);public:Sample(longa){x=a;}private:longx;};longfun(Samples){if(s.x<2)return1:returns.xfun(Sample(s.x-1));}intmain(){intsum=0;for(inti=0;i<6;i++){sum+=fun(Sample(i));}cout<<sum;return0;}運行時輸出的結(jié)果是()。A、120B、16C、154D、34標準答案:C知識點解析:此題考查的是友元函數(shù)和遞歸函數(shù)。因為fun函數(shù)是Sample類的友元函數(shù),所以fun函數(shù)可以直接訪問Sample類對象的私有成員x。主函數(shù)調(diào)用fun函數(shù),構(gòu)造參數(shù)為0~5。當n小于2時,fun函數(shù)返回1,其余返回值為n*fun(n-1)。n取0~5的值時fun(n)依次為1,1,2,6,24,120,累加結(jié)果為154。10、字面常量42、4.2、42L的數(shù)據(jù)類型分別是()。A、long,double,intB、long,float,intC、int,double,longD、int,float,long標準答案:C知識點解析:此題考查的知識點是字面常量。對于整型字面常量,只要沒有超過C++中整數(shù)所能表示的范圍,C++將自動按整數(shù)來存儲此數(shù),也可以通過在整型字面常量后添加u或l來指定無符號整數(shù)或長整數(shù)來存儲;對于實型字面常量,C++將自動按照雙精度數(shù)來存儲,也可以通過在實型字面常量后添加f來指定按單精度數(shù)存儲。11、有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=O):valB(x){cout<A、2332B、2323C、3232D、3223標準答案:A知識點解析:在主函數(shù)中創(chuàng)建類Derived對象objl2(2,3)時,因為類Derived是從基類Base派生而來,所以首先調(diào)用基類的構(gòu)造函數(shù),輸出2,冉調(diào)用派生類構(gòu)造函數(shù),輸出3。當主函數(shù)運算結(jié)果時,首先調(diào)用派生類的析構(gòu)函數(shù),輸出3,再調(diào)用基類的析構(gòu)函數(shù)輸出2。所以輸出結(jié)果為2332。12、有如下程序:#inc1ude<iostream>usingnamespacestd;intmain(){int*p,*p=9;cout<<"Thevalueatp:"<<*p;return0;}編譯運行程序?qū)⒊霈F(xiàn)的情況是()。A、編譯時出現(xiàn)語法錯誤,不能生成可執(zhí)行文件B、運行時一定輸出:Thevalueatp:9C、運行時一定輸出:Thevalueatp:*9D、運行時有可能出錯標準答案:D知識點解析:此題考查的是指針的使用。本題中,在給*p賦值前,指針p并沒有指向一個具體的對象。此時可以通過編譯,但運行時由于p中為隨機值,該賦值可能會破壞內(nèi)存中某個重要的地址空間的內(nèi)容,導致程序出錯。13、在開發(fā)一個C++程序的整個過程中,第3個步驟為()。A、鏈接B、運行C、編輯D、編譯標準答案:A知識點解析:C++程序的開發(fā)過程是編輯、編譯、鏈接、運行和調(diào)試。14、有如下程序:#inc1ude<iostream>#inc1ude<cstring>usingnamespacestd;c1assXCD{char*a;intb;public:XCD(char*aa,intbb){a=newchar[strlen(aa)+1];strcpy(a,aa),b=bb;}char*Geta(){returna;}intGetb(){retumb;}};intmain(){char*p1="abcd",*p2="weirong";intd1=6,d2=8;XCDx(p1,d1),y(p2,d2);cout<<strlen(x.Geta())+y.Getb()<<end1;return0;}運行時的輸出結(jié)果是()。A、12B、16C、14D、11標準答案:A知識點解析:由類XCD的定義可知,成員函數(shù)Geta()返回的是字符串的長度,Getb()返回的是參數(shù)b的值。在主函數(shù)中str1en(x.Geta())的值等于4,y.Getb()的值等于8,所以輸出兩者的和為12。15、在定義一個類模板時,模板形參表是用一對括號括起來的,所采用的括號是()。A、()B、[]C、<>D、{}標準答案:C知識點解析:聲明一個類模板的格式是:template<<模板形參聲明>><類聲明>。16、有如下程序:#inc1ude<iostream>usingnamespacestd;classPoint{public:staticintnumber;public:Pointo{number++;}~Point(){number一一;}};intPoint::number一一0;voidmain0{Point*ptr;PointA,B;{Point*ptr_point=newPoint[3];ptxltrDoint;}PointC;Gout+Point::number+endl;delete[]ptr;A、3B、4C、6D、7標準答案:C知識點解析:此題是靜態(tài)成員、對象的構(gòu)造和對象的生存期等知識點的綜合考查。此題定義了一個靜態(tài)成員變量number.初始值為0。主函數(shù)中第2行定義了。2個Point對象,此時number變?yōu)?;隨后new運算符又定義了一個包含3個Point對象元素的數(shù)組,其通過delete結(jié)束后number的值變?yōu)?;然后又定義了…個Point對象C,number咬為6;最后輸出number的內(nèi)容。17、Sample是一個類,執(zhí)行下面語句后,調(diào)用Sample類的構(gòu)造函數(shù)的次數(shù)是,()。Samplea[2],*P=newSample;A、0B、1C、2D、3標準答案:D知識點解析:在C++中,聲明一個類對象時,編譯程序需要調(diào)用類的構(gòu)造函數(shù)為對象分配存儲空間,進行必須的初始化。在本題的這條語句中,聲明了一個Sample類型的包含2個數(shù)組元素的數(shù)組a[2],一個指向類Sample對象的指針P,所以Sample類的構(gòu)造函數(shù)共調(diào)用了3次。18、有如下定義:inta[5]={1,3,5,7,9},*p=a;下列表達式中不能得到數(shù)值5的是()。A、a[2]B、a[3]C、*(p+2)D、*p+4標準答案:B知識點解析:此題考查的是指針引用數(shù)組元素。B選項中,a[3]是數(shù)組的第四個元素,即7,其它選項的引用均可得到5。19、下列關(guān)于函數(shù)重載的敘述中,錯誤的是()。A、重載函數(shù)的參數(shù)個數(shù)可以不同B、重載函數(shù)的參數(shù)類型可以不同C、重載函數(shù)的返回值類型必須不同D、重載函數(shù)的參數(shù)個數(shù)或參數(shù)類型必須有所不同標準答案:C知識點解析:兩個或兩個以上的函數(shù),具有相同的函數(shù)名,但是形參的個數(shù)或者類型不同,編譯器根據(jù)實參和形參的類型及個數(shù)進行最佳匹配,自動確定調(diào)用哪個函數(shù),這就是函數(shù)的重載。20、有如下程序:#includeusingnamespacestd;classToy{public:Toy(char*_n){strcpy(name,_n);count++;}~Toy(){count--;}char*GetName(){returnname;}staticintgetCount(){returncount;}pfivate:charname[10];staticintcount;};intToy::count=0;intmain(){Toyt1("Snoopy"),t2("Mickey"),t3("Barbie");cout<A、1B、2C、3D、運行時出錯標準答案:C知識點解析:類Toy中包含一個字符數(shù)組name和一個靜態(tài)整型變量count。在程序中首先給類Toy的成員count的賦初始值0,然后在主函數(shù)中,定義了三個Toy對象t1、t2、t3,并分別對它們的name字段賦值,在賦值的同時變量count的值加1,所以最后變量count的值等于3。21、在表達式x+y*z中,+是作為成員函數(shù)重載的運算符,*是作為非成員函數(shù)重載的運算符。下列敘述中正確的是()。A、operator+有兩個參數(shù),operator*有兩個參數(shù)B、operator+有兩個參數(shù),operator*有一個參數(shù)C、operator+有一個參數(shù),operator*有兩個參數(shù)D、operator+有一個參數(shù),operator*有一個參數(shù)標準答案:C知識點解析:此題考查的是運算符的重載。運算符可蘑載成員函數(shù),也可重載為友元函數(shù)。當重載為成員函數(shù)時,運算符重載函數(shù)的形參個數(shù)要比運算符操作數(shù)的個數(shù)少一個:當重載為友元函數(shù)時,其參數(shù)個數(shù)應(yīng)與操作數(shù)的個數(shù)相同。22、假定下列語句都是程序運行后首次執(zhí)行的輸出語句,其中輸出結(jié)果與另外三條語句不同的語句是()。A、cout<<setfill(’*’)<<123<<setw(9)<<321;B、cout<<setfill(’*’)<<setw(6)<<left<<123<<setw(6)<<right<<321;C、cout<<123<<setfill(’*’)<<setw(6)<<321;D、cout<<setfill(’*’)<<setw(9)<<left<<123<<321;標準答案:B知識點解析:按照選項B的輸出格式控制符輸出的結(jié)果為“123******321”,而按照選項A)、C)、D)的輸出格式控制符輸出的結(jié)果為“123***321”。23、在C++中,打開一個文件時與該文件建立聯(lián)系的是()。A、流對象B、模板C、函數(shù)D、類標準答案:A知識點解析:在C++中,打開一個文件時與該文件建立聯(lián)系的是流對象。國家二級C++機試(選擇題)模擬試卷第2套一、選擇題(本題共29題,每題1.0分,共29分。)1、下列選項中,不屬于模塊間耦合的是()。A、內(nèi)容耦合B、異構(gòu)耦合C、控制耦合D、數(shù)據(jù)耦合標準答案:B知識點解析:耦合可以分為下列幾種,它們之間的耦合度由高到低排列:內(nèi)容耦合一一若一個模塊直接訪問另一模塊的內(nèi)容,則這兩個模塊稱為內(nèi)容耦合。公共耦合一一若一組模塊都訪問同一全局數(shù)據(jù)結(jié)構(gòu),則稱為公共耦合。外部耦合一一若一組模塊都訪問同一全局數(shù)據(jù)項,則稱為外部耦合??刂岂詈弦灰蝗粢荒K明顯地把開關(guān)量、名字等信息送入另一模塊,控制另一模塊的功能,則稱為控制耦合。標記耦合一一若兩個以上的模塊都需要其余某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu)時,不使用其余全局變量的方式而全使用記錄傳遞的方式,這樣的耦合稱為標記耦合。數(shù)據(jù)耦合一一若一個模塊訪問另一個模塊,被訪問模塊的輸入和輸出都是數(shù)據(jù)項參數(shù),則這兩個模塊為數(shù)據(jù)耦合。非直接耦合一一若兩個模塊沒有直接關(guān)系,它們之間的聯(lián)系完全是通過程序的控制和調(diào)用來實現(xiàn)的,則稱這兩個模塊為非直接耦合,這樣的耦合獨立性最強。2、下列描述中正確的是()。A、一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)B、數(shù)據(jù)的邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)C、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)不影響數(shù)據(jù)處理的效率D、一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存儲結(jié)構(gòu)影響數(shù)據(jù)處理的效率標準答案:D知識點解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系;數(shù)據(jù)的存儲結(jié)構(gòu)是在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲關(guān)系。數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的表示,一種邏輯結(jié)構(gòu)可以表示成多種存儲結(jié)構(gòu);而采用不同的存儲結(jié)構(gòu),其數(shù)據(jù)處理的效率是不同的。3、下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是()。A、循環(huán)隊列B、帶鏈隊列C、二叉樹D、帶鏈棧標準答案:C知識點解析:根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間的前后件關(guān)系的復雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分為兩大類:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。循環(huán)隊列、帶鏈隊列和帶鏈棧都是線性結(jié)構(gòu),而二叉樹是非線性結(jié)構(gòu)。4、某二又樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是A、10B、8C、6D、4標準答案:C知識點解析:根據(jù)二叉樹的性質(zhì),在任意二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。5、下列程序的輸出結(jié)果為2,橫線處應(yīng)添加語句()。#include<iostream>usingnamespacestd;classTestClass1{public:voidfun(){cout<<1;}};classTestClass2:publicTestClass1{public:voidfun(){cout<<2;}};intmain(){TestClass1*p=newTestClass2;p->fun();deletep;return0:}A、publicB、privateC、virtualD、protected標準答案:C知識點解析:由主函數(shù)main入手,定義TestClass1類的指針對象p指向派生類TestClass2。因為基類和派生類中都有fun函數(shù),題目要求輸出為2,就是基類對象訪問派生類中fun函數(shù)。通過虛函數(shù)與指向基類對象的指針變量的配合使用,就能方便調(diào)用同名函數(shù)。所以這里將基類中的:fun函數(shù)聲明為virtual。并且當一個成員函數(shù)被聲明為虛函數(shù)后,其派生類中的同名函數(shù)自動成為虛函數(shù)。6、為了取代C中帶參數(shù)的宏,在C++中使用()。A、重載函數(shù)B、內(nèi)聯(lián)函數(shù)C、遞歸函數(shù)D、友元函數(shù)標準答案:B知識點解析:此題考查的是內(nèi)聯(lián)函數(shù)。C++語言引入內(nèi)聯(lián)函數(shù)的原因是用它來取代C語言的預處理宏函數(shù)。故選項B正確。7、軟件需求規(guī)格說明書的作用不包括()。A、軟件驗收的依據(jù)B、用戶與開發(fā)人員對軟件要做什么的共同理解C、軟件設(shè)計的依據(jù)D、軟件可行性研究的依據(jù)標準答案:D知識點解析:軟件規(guī)格說明書主要有三個作用:①用戶和軟件開發(fā)人員之間的合同;②開發(fā)人員進行設(shè)計和編程的依據(jù):③軟件工程項目驗收的依據(jù)。8、下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。A、在需求分析階段建立數(shù)據(jù)字典B、在概念設(shè)計階段建立數(shù)據(jù)字典C、在邏輯設(shè)計階段建立數(shù)據(jù)字典D、在物理設(shè)計階段建立數(shù)據(jù)字典標準答案:A知識點解析:數(shù)據(jù)庫設(shè)計目前一般采用生命周期法,即將整個數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)分解成目標獨立的若干階段。分別是:需求分析階段、概念設(shè)計階段、邏輯設(shè)計階段、物理設(shè)計階段、編碼階段、測試階段、運行階段、進一步修改階段。數(shù)據(jù)字典是對系統(tǒng)中數(shù)據(jù)的詳盡描述,是各類數(shù)據(jù)屬性的清單。對數(shù)據(jù)設(shè)計來講,數(shù)據(jù)字典是進行詳細的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要結(jié)果。9、一個工作人員可使用多臺計算機,而一臺計算機被多個人使用,則實體工作人員與實體計算機之間的聯(lián)系是()。A、一對一B、一對多C、多對多D、多對一標準答案:C知識點解析:如果一個工作人員只能使用一臺計算機且一臺計算機只能被一個工作人員使用,則關(guān)系為一對一;如果一個工作人員可以使用多臺計算機,但是一臺計算機只能被一個工作人員使用,則關(guān)系為一對多;如果一個工作人員可以使用多臺計算機,一臺計算機也可以被多個工作人員使用,則關(guān)系為多對多。10、有如下程序#include<iostream>usingnamespacestd;intmain(){chara;cin>>a;if(a=’*’)cout<<"***"<<endl;elsecout<<"###"<<endl;return0;}輸入字符+時,程序的運行結(jié)果是()。A、***B、###C、***###D、無輸出標準答案:A知識點解析:本題的考點是雙分支選擇語句的執(zhí)行流程,答題的關(guān)鍵點在于選擇條件的判定。雙分支選擇語句的執(zhí)行流程是首先計算if后表達式的值,如果表達式的值為非零,則執(zhí)行if后面的分支,否則執(zhí)行與其匹配的else后面的分支。本題執(zhí)行時雖然輸入變量a的值為‘+’,但是在執(zhí)行if后括號內(nèi)表達式(a=’*’)的時,由于此表達式為賦值表達式,因此表達式的值為賦值號右邊的值’*’,其ASCII碼的值非零,執(zhí)行if后面的輸出語句“***”后回車。11、有如下程序段:inti=1,while(1){i++;if(i==10)break;if(i%2==0)cout<<’*’;}執(zhí)行這個程序段輸出字符*的個數(shù)是()。A、10B、3C、4D、5標準答案:C知識點解析:這段程序代碼的功能是計算在1—10(包括10)之間偶數(shù)i的個數(shù),如果整數(shù)i為偶數(shù),則輸出一個‘*’,共有4個偶數(shù),所以共輸出4個‘*’。12、有如下程序:#includeusingnamespacestd;classBase{public:voidfunlO{cout<<“BasCn”;)virtualvoidfun20{cout<<“BasCn”;)};classDerived:publicBase{public:voidfunlO{cout<<”Derivedha”;)voidfun2(){cout<<”DerivedLq”;));voidf(Base&b){b.funl0;b.fun2();)intmain(){Derivedobj;f(obj);return0:}執(zhí)行這個程序的輸出結(jié)果是()。A、BaseBaseB、BaseDerivedC、DerivedBaseD、DerivedDerived標準答案:B知識點解析:此題考查的是虛函數(shù)的概念。在C++語言中,一個派生類的對象可以被它的任何一個基類的指針所指向,若基類和派生類中存在一模一樣的成員函數(shù)。那么通過該基類指針調(diào)用這樣的成員函數(shù)時,若這個成員函數(shù)被定義成虛函數(shù),那么就調(diào)用派生類中的;否則就調(diào)用基類中的。本題中,在f()函數(shù)中,形參b是一個基類的引用,它引用的是主函數(shù)中定義的派生類對象obi,所以在調(diào)用fun()時,運行的是基類的版本,而fun2()運行的是派生類的版本。13、有如下程序:#include<iostream>usingnamespacestd;voidf1(int&x,int&y){intz=x;x=y;y=z;}voidf2(intx,inty){intz=x;x=y;y=z;}intmain(){intx=10,y=26;f1(x,y);f2(x,y);cout<<y<<endl;return0;}運行時的輸出結(jié)果是()。A、10B、16C、26D、36標準答案:A知識點解析:子函數(shù)f1中的形參是引用變量,所以執(zhí)行子函數(shù)實現(xiàn)了變量x,y值的交換,變量x的值等于26,而變量y的值等于10。而子函數(shù)f2中的形參是普通變量,因為C++的函數(shù)之間的參數(shù)傳遞是傳值,所以執(zhí)行函數(shù)f2不能實現(xiàn)變量x,y值的交換。14、有如下的運算符重載函數(shù)定義:doubleoperator+(inti,intk){returndouble(i+k);)但定義有錯誤,對這個錯誤最準確的描述是()。A、+只能作為成員函數(shù)重載,而這里的+是作為非成員函數(shù)重載的B、兩個int型參數(shù)的和也應(yīng)該是int型,而這里將+的返回類型聲明為doubleC、沒有將運算符重載函數(shù)聲明為某個類的友元D、C++已經(jīng)提供了求兩個int型數(shù)據(jù)之和的運算符+,不能再定義同樣的運算符標準答案:D知識點解析:此題考查的是運算符的重載。C++語言規(guī)定,不能作為非成員函數(shù)重載的運算符有=、[]、()、->以及所有的類型轉(zhuǎn)換運算符,故選項A錯誤;運算符重載對返回值類型沒有限制,故選項B錯誤;C++并不強制要求非成員重載的運算符一定是某個類的友元,所以C選項錯誤:題目中重載的“+”運算符的兩個參數(shù)都是int類型,而C++已經(jīng)提供了求兩個int型數(shù)據(jù)之和的運算符+,編譯器無法區(qū)分應(yīng)該調(diào)用哪一個,所以應(yīng)該選擇D選項。15、關(guān)系模型中的關(guān)系模式至少應(yīng)是A、1NFB、2NFC、3NFD、BCNF標準答案:A知識點解析:目前關(guān)系數(shù)據(jù)庫有六種范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Boyce-Codd范式(BCNF)、第四范式(4NF)和第五范式(5NF)。滿足最低要求的范式是第一范式(1NF)。16、有如下程序:#inc1ude<iostream>usingnamespacestd;voidf1(int&x){x++}voidf2(intx){++x;}intmain(){intx=10,y=12;f1(x);f2(y);cout<<x+y<<end1;return0;}運行這個程序的輸出結(jié)果是()。A、22B、23C、24D、25標準答案:B知識點解析:在函數(shù)f1(int&x){x++;}中,是對變量x的引用,所以當在main函數(shù)中執(zhí)行“f1(x);”語句后,變量x的值等于11,而在函數(shù)voidf2(intx){++x;}中,對變量x的傳遞調(diào)用,在main函數(shù)中執(zhí)行“f2(y);”語句后,變量y的值仍然等于12,所以輸出x+y的值等于23。17、C++中的模板包括()。A、對象模板和函數(shù)模板B、對象模板和類模板C、函數(shù)模板和類模板D、變量模板和對象模板標準答案:C知識點解析:此題考查的是模板。在C++語言中,模板有兩類:函數(shù)模板和類模板。18、下列選項中,正確的C++標識符是()。A、6_groupB、group~6C、age+3D、_group_6標準答案:D知識點解析:C++中標識符的命名遵循如下規(guī)則:不能是C++關(guān)鍵字,第一個字母必須是字母或下劃線,中間不能有空格,變量名中不能包括“.”、“;”、“,”、“’”、“"”+-之類的特殊符號。總之標識符中除了能使用26個英文大小寫字母和數(shù)字外,只能使用下劃線“”。19、下列語句中,與語句“1n=(a>b?(1)>c?1:0):0);”的功能等價的是()。A、if(a<=b)n=0;B、if((a>b)Il(b>c))n=1;elsen=0;C、if(a>b)if(b>c)n=1:elsen=0;elsen=0;D、if(a>b)n=1;elseif(<=c)n=1;elseif(b>c)n=1;elsen=0;標準答案:C知識點解析:條件表達式(a>b?(b>c?1:0):0)的含義是,如果a>b成立,則此表達式的值等于條件表達式(b>c?1:0)的值,否則其值等于0。而條件表達式(b>c?1:0)的含義是,如果b>c成立,其值等于1,否則其值等于0。20、字符串“a+b=12\n\t”的長度為()。A、12B、10C、8D、6標準答案:C知識點解析:題目給出的字符串含有7個字符,再加字符串的結(jié)束字符,所以共8個字符。21、已知類Myclass的定義如下classMyClass{public:voidfunction1(MyClass&c){cout<<c.data;}staticvoidfunction2(MyClass&c){cout<<c.data;}voidfunction3(){cout<<data;}staricvoidfunction4(){cout<<data;}private:intdata;};其中有編譯錯誤的函數(shù)是()。A、function1B、function2C、function3D、functicIn4標準答案:D知識點解析:funcyion4()函數(shù)作為類的靜態(tài)成員函數(shù),不能直接訪問類中說明的非靜態(tài)成員,即cout<<data在編譯時會出錯。22、如果派生類以protected方式繼承基類,則原基類的protected成員和public成員在派生類中的訪問屬性分別是()。A、public和publicB、public和protectedC、protected和publicD、protected和protected標準答案:D知識點解析:此題考查的是基類成員在派生類中的訪問屬性。派生類中的成員不能訪問基類中的私有成員,可以訪問基類中的公有成員和保護成員。派生類從基類公有繼承時,基類的公有成員和保護成員在派生類中仍然是公有成員和保護成員;派生類從基類私有繼承時,基類的公有成員和保護成員在派生類中都變成私有成員;派生類從基類保護繼承時,基類的公有成員在派生類中變成保護成員,基類的保護成員在派生類中仍然是保護成員。23、有如下類聲明:classXA{intx;public:XA(intn){x=n;}};classXB:publicXA{inty;public:XB(inta,intb);};在構(gòu)造函數(shù)XB的下列定義中,正確的是()。A、XB::XB(inta,intb):x(a),y(b){}B、XB::XB(inta,intb):XA(a),y(b){}C、XB::XB(inta,intb):x(a),XB(b){}D、XB::XB(inta,intb)iXA(a),XB(b){}標準答案:B知識點解析:此題考查的是派生類中構(gòu)造函數(shù)的定義。派生類的構(gòu)造首先要調(diào)用基類的構(gòu)造函數(shù),對基類成員初始化;然后對派生類中的新增成員初始化。格式為:派生類名(構(gòu)造函數(shù)形參表)基類構(gòu)造函數(shù)(形參表)。24、如果表達式a>=b中的“>=”是作為非成員函數(shù)重載的運算符,則可以等效地表示為()。A、a.operator>=(b)B、b.operatotr>=(a)C、operator>=(a,b)D、operator>=(b,a)標準答案:C知識點解析:運算符函數(shù)作為非成員函數(shù)時,沒有隱含的this指針,因此所有的操作數(shù)必須出現(xiàn)在參數(shù)表中,對于二元運算符,參數(shù)表中有兩個參數(shù),分別代表第一操作數(shù)和第二操作數(shù),且順序不能改變。25、有如下程序:#include<iostrearn>usingnamespacestd;intmain(){cout.fill(’*’);cout.width(6);cout.fill(’#’);cout<<123<<endl;return0;}執(zhí)行后的輸出結(jié)果是()。A、###123B、123###C、***123D、123***標準答案:A知識點解析:此題考查的是I/O格式化輸出。函數(shù)width(intn)設(shè)置輸入輸出寬度,當實際數(shù)據(jù)寬度小于制定的寬度時,多余的位置用填充字符填滿;當實際數(shù)據(jù)寬度大于設(shè)置的寬度時,仍按實際寬度輸出;函數(shù)fill(charc)用來設(shè)置填充字符。26、已知Value是一個類,Value是Value的一個對象。下列以非成員函數(shù)形式重載的運算符函數(shù)原形中,正確的是()。A、Valueoperator+(Valuev,inti);B、Valueoperator+(Valuev=value,inti);C、Valueoperator+(Valuevinti=0);D、Valueoperator+(Valuev=value,inti=0);標準答案:B知識點解析:此題考查的是重載加法運算符“+”?!?”是二元運算符,其第一操作數(shù)是對象本身,i為第二操作數(shù),由此可知選項B正確。27、若要對類BigNumber中重載的類型轉(zhuǎn)換運算符long進行聲明,下列選項中正確的是()。A、operatorlong()const;B、operatorlong(bigNumber);C、longoperatorlong()const;D、longoperatorlong(BigNumber);標準答案:A知識點解析:在重載類型轉(zhuǎn)換符時,由于運算符本身已經(jīng)表示出返回值類型,因此不需要返回值類型的聲明。28、如需要向一個二進制文件尾部添加數(shù)據(jù),則該文件的打開方式為()。A、ios_base::appB、ios_base::binary|ios_base::outC、ios_base::outD、ios_base::binary|ios_base::app標準答案:D知識點解析:iosbase::binary模式是作為二進制文件打開,ios_base::app模式是作為添加數(shù)據(jù)而打開(總是在尾部寫)。29、已知將運算符“+”和“*”作為類Complex的成員函數(shù)重載,設(shè)c1和c2是類Complex的對象,則表達式c1+c2*c1等價于()。A、c1.operator*(c2.operator+(c1))B、c1.operator+(c2.operator*(c1))C、c1.operator*(c1.operator+(c2))D、c2.operator+(c1.operator*(c1))標準答案:B知識點解析:表達式c1+c2*c1的含義是c1加上c2與c1的積。國家二級C++機試(選擇題)模擬試卷第3套一、選擇題(本題共20題,每題1.0分,共20分。)1、下列字符串中可以用作C++標識符的是()。A、2009varB、gotoC、test_2009D、_123標準答案:D知識點解析:標識符是用戶為程序中各種需要命名的“元素”所起的名字。標識符的組成要符合一定的規(guī)則:①標識符是一個以字母或下劃線開頭的,由字母、數(shù)字、F劃線組成的字符串。②標識符不能與任意一個關(guān)鍵字同名。③標識符中的字母區(qū)分大小寫。④標識符不宜過長。c++語言一般設(shè)定一個標識符的有效長度為32個字符。由這四條規(guī)則可知,選項D)為正確答案。2、下列關(guān)于this指針的描述中,正確的是()。A、類的成員函數(shù)都有this指針B、類的友元函數(shù)都有this指針C、任何與類相關(guān)的函數(shù)都有this指針D、類的非靜態(tài)成員函數(shù)都有this指針標準答案:D知識點解析:mis作用域是在類內(nèi)部,當在類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員時,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù)。另外,全局函數(shù)和靜態(tài)函數(shù)都不能使用this指針。所以答案為D。3、下列敘述中正確的是()。A、循環(huán)隊列是隊列的一種鏈式存儲結(jié)構(gòu)B、循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)C、循環(huán)隊列是非線性結(jié)構(gòu)D、循環(huán)隊列是一種邏輯結(jié)構(gòu)標準答案:B知識點解析:本題主要考查循環(huán)隊列的概念,循環(huán)隊列作為隊列的種也應(yīng)該是線性結(jié)構(gòu)。隊列是一種邏輯結(jié)構(gòu),而循環(huán)隊列是一種順序存儲結(jié)構(gòu)的隊列。4、某二叉樹共有12個結(jié)點,其中葉子結(jié)點只有1個。則該二叉樹的深度為(根結(jié)點在第1層)A、3B、6C、8D、12標準答案:D知識點解析:根據(jù)二叉樹的性質(zhì),度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。題目中的二叉樹的葉子結(jié)點為1,因此度為2的結(jié)點的數(shù)目為0,故該二叉樹為12層,每層只有一個結(jié)點。5、下i面程序輸出的結(jié)果為()。#include<iostream.h>voidfun(inta,intb){inttemp;temp=a;a=b;b=temp;}voidmain(){intm,n;m=1;n=2:fun(m,n);cout<<m<<’’’’<<n<<end1:}A、12B、21C、22D、程序有錯誤標準答案:A知識點解析:函數(shù)fun中定義的參數(shù)a和b為形式參數(shù),它們并不是實際存在的數(shù)據(jù),只有在發(fā)生函數(shù)調(diào)用時才被分配內(nèi)存空間,結(jié)束后,形參所占有的內(nèi)存單元也被釋放。并且函數(shù)fun沒有返回值,它做的交換操作,并不能影響實際參數(shù)m和n。所以輸出值保持不變,仍然是1和2,即輸出:12。6、在軟件開發(fā)中,需求分析階段可以使用的工具是()。A、N一S圖B、DFD圖C、PAD圖D、程序流程圖標準答案:B知識點解析:在軟件開發(fā)中,需求分析階段常使用的工具有數(shù)據(jù)流圖(DFD),數(shù)據(jù)字典(DD)、判斷樹和判斷表。7、在下列double型常量表示中,錯誤的是()。A、E15B、.35C、3E5D、3E-5標準答案:A知識點解析:在C++中,科學計數(shù)法表示小數(shù)的方法:E(e)左右必須有數(shù),且E(e)的右側(cè)只能為整數(shù)。8、有如下程序:#includeusingnamespacestd;classCD{public:一CD(){cout<<‘C’;}private:charname[80];};intmain(){CDa,*b,d[2];return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、CCCCB、CCCC、CCD、C標準答案:B知識點解析:本題考查類的析構(gòu)函數(shù),題目中定義了類的一個對象a,對象指針*b,對象數(shù)組d[2],當程序執(zhí)行完后,析構(gòu)函數(shù)執(zhí)行了3次,輸出“CCC”,對象指針不會執(zhí)行析構(gòu)函數(shù)。所以本題答案為B。9、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、數(shù)據(jù)字典B、詳細設(shè)計說明書C、數(shù)據(jù)流圖說明書D、軟件需求規(guī)格說明書標準答案:D知識點解析:需求分析的最終結(jié)果是生成軟件需要規(guī)格說明書,可以為用戶、分析人員和設(shè)計人員之間的交流提供方便。10、有如下程序段:inti=5;while(inti=0){cout<<’*’;i——,)運行時輸出“*”的個數(shù)是()。A、。B、1C、5D、無窮標準答案:A知識點解析:因為while循環(huán)中,因為i的值等于0,所以while循環(huán)體一次也不執(zhí)行。因而運行時輸出“*”的個數(shù)是0。11、有如下函數(shù)模板:templateA、cast(i);B、cast<>(i);C、castD、cast<double,int>(i);標準答案:D知識點解析:此題考查的是模板函數(shù)的調(diào)用。本題中cast()函數(shù)的實參i只能確定模板參數(shù)U的類型為int,而不能確定另外一個模板參數(shù)T,故選項A、B錯誤:C++語言不允許隱式地將int轉(zhuǎn)化為char*,故選項C錯誤。12、下列敘述中,錯誤的是()。A、false是一個邏輯型常量B、’’b’’是一個字符型常量C、365是一個int常量D、3.1415926是一個double常量標準答案:B知識點解析:字符常量簡稱字符,它以單引號作為起止符號,中間有一個或若干個字符。或者以“\”開頭的包括多個字符的字符序列也符合規(guī)定的字符常量。13、C++系統(tǒng)預定了4個用于標準數(shù)據(jù)流的對象,下列選項中不屬于此類對象的是()。A、coutB、cinC、cerrD、cset標準答案:D知識點解析:C++流有4個預定義的流對象,它們分別是:cin標準輸入;cout標準輸出;cerr標準出錯信息輸出;clog帶緩沖的標準出錯信息輸出。14、有如下程序:#include<iostream>usingnamespacestd;classXX{intx;public:XX(intxx=0):x(xx){}intgetX(){returnx;}};classYY:publicXX{inty;public:YY(intXX,intyy):XX(xx),y(yy){}intgetV(){returngetX()+y;}};intmain(){YYc(3,4);cout<<c.getV()+c.getX()<<endl;return0;}運行這個程序的輸出結(jié)果是()。A、3B、4C、7D、10標準答案:D知識點解析:由于類YY公開繼承自類XX,所以執(zhí)行表達式c.gctV()+c.getX()的值等于3+3+4=10。15、關(guān)于運算符重載,下列表述中正確的是()。A、C++已有的任何運算符都可以重載B、運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C、在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D、可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符標準答案:C知識點解析:此題考查的是運算符重載的概念。C++語言規(guī)定,“.”、“.”、“->*”、“::”和“?:”,這五個運算符不能被重載,故選項A錯誤;運算符函數(shù)的返回類型由該運算符所組成的表達式的值的類型來決定,故選項B說法是錯誤的;運算符重載是針對原有運算符,并不能通過重載創(chuàng)造出新的運算符,故選項D錯誤。16、為類Matrix重載下列運算符時,只能作為Matrix類成員函數(shù)重載的運算符是()。A、+B、=C、<<D、++標準答案:B知識點解析:在C++中,=、[]、()、—>以及所有的類型轉(zhuǎn)換運算符只能作為成員函數(shù)重載。17、下列關(guān)于函數(shù)模板的描述中,正確的是()。A、函數(shù)模板是一個實例函數(shù)B、使用函數(shù)模板定義的函數(shù)沒有返回類型C、函數(shù)模板的類型參數(shù)與函數(shù)的參數(shù)相同D、通過使用不同的類型參數(shù),可以從函數(shù)模板得到不同的實例函數(shù)標準答案:D知識點解析:函數(shù)模板是一系列相關(guān)函數(shù)的模型或樣板,這些函數(shù)的源代碼相同,只是所針對的數(shù)據(jù)類型不同。數(shù)據(jù)類型成了函數(shù)模板的參數(shù),所以函數(shù)模板是一種參數(shù)化類型的函數(shù)。18、已知基類Employee只有一個構(gòu)造函數(shù),其定義如下:Employee::Employee(intn):id(n){}Manager是Employee的派生類,則下列對Manager的構(gòu)造函數(shù)的定義中,正確的是()。A、Manager::Manager(intn):id(n){}B、Manager::Manager(intn){id=n;}C、Manager::Manager(intn):Employee(n){}D、Manager::Manager(intn){Employee(n);}標準答案:C知識點解析:基類的構(gòu)造函數(shù)是帶有參數(shù)的,派生類從基類派生,這就需要在派生類的構(gòu)造函數(shù)名后面顯示的調(diào)用基類的構(gòu)造函數(shù)。19、若MyTemp是一個只有一個虛擬類型參數(shù)的類模板,且有如下語句序列MyTemp<double>p2;MyTemp<long>p3[2];編譯系統(tǒng)在處理上面的語句序列時,所生成的模板MyTemp的實例的個數(shù)是()。A、1B、2C、3D、0標準答案:C知識點解析:p2是一個double型的MyTemp,p3[2]是一個long型MyTemp數(shù)組,其中包括兩個元素。所以共有3個MyTemp的實例。20、已知將運算符“+”和“*”作為類Complex的成員函數(shù)重載,設(shè)c1和c2是類Complex的對象,則表達式c1+c2*c1等價于()。A、c1.operator*(c2.operator+(c1))B、c1.operator+(c2.operator*(c1))C、c1.operator*(c1.operator+(c2))D、c2.operator+(c1.operator*(c1))標準答案:B知識點解析:表達式c1+c2*c1的含義是c1加上c2與c1的積。國家二級C++機試(選擇題)模擬試卷第4套一、選擇題(本題共23題,每題1.0分,共23分。)1、下列有關(guān)指針的用法中,錯誤的是()。A、inti;int*p=&i;B、inti;int*p;i=*p;C、int*p;p=0;D、inti=5;int*p;p=&i;標準答案:B知識點解析:“inti”語句為定義了一個整型變量i。“int*p”為定義一個整型指針p。選項A)中的“int*p=&i;”是定義整型指針變量p,并指向整型i的地址。選項B)中“i=*p”語句是將p指向的變量賦值給i,而指針p沒有初始化,所以選項B)錯誤。選項C)中“p=0;”表示p指向0的地址。選項D)中“&i”為取i的地址,并賦值給p。2、Windows環(huán)境下,由C++源程序文件編譯而成的目標文件的擴展名是()。A、cppB、exeC、objD、lik標準答案:C知識點解析:在VC6.0集成開發(fā)環(huán)境下,用戶可以使用編譯(compile)命令將一個.cpp為擴展名的C++源程序文件轉(zhuǎn)換成一個以.obj為擴展名的目標文件。3、下列對隊列的描述中正確的是()。A、隊列屬于非線性表B、隊列按“先進后出”原則組織數(shù)據(jù)C、隊列在隊尾刪除數(shù)據(jù)D、隊列按“先進先出”原則組織數(shù)據(jù)標準答案:D知識點解析:隊列(queue)是指允許在一端進行插入、而在另一端進行刪除的線性表。允許插入的一端稱為隊尾:允許刪除的一端稱為隊頭。在隊列這種數(shù)據(jù)結(jié)構(gòu)中,最先插入的元素將最先能夠被刪除;反之,最后插入的元素將最后才能被刪除。因此,隊列又稱“先進先出”或“后進后出”的線性表。4、下列關(guān)于二叉樹的敘述中,正確的是()。A、葉子結(jié)點總是比度為2的結(jié)點少一個B、葉子結(jié)點總是比度為2的結(jié)點多一個C、葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍D、度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍標準答案:B知識點解析:由二叉樹的性質(zhì)可以知道在二叉樹中葉子結(jié)點總是比度為2的結(jié)點多一個。5、軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是()。A、學生成績管理系統(tǒng)B、C語言編譯程序C、UNIX操作系統(tǒng)D、數(shù)據(jù)庫管理系統(tǒng)標準答案:A知識點解析:學生成績管理系統(tǒng)為應(yīng)用軟件。6、有以下程序,輸出結(jié)果()。#include<iostream.h>voidmain(){staticintb[][3]={{1,2,3},{4),{5,6}};b[0][2]=12,b[1][2]=18;cout<<**<<"\t"<<**(b+1)<<"\t"<<**(b+1)<<"\t"<<*(*(b+1)+2)<<"\n";cout<<b[0][2]+b[1][2]+b[2][2]<<endl;}A、14430B、114418C、441811D、444301標準答案:A知識點解析:本題b是一個3×3的二維數(shù)組:利用指針表示數(shù)組:*(*(數(shù)組名+i)+j)。**b表示b[0][0]元素,值是1,**(b+1)表示是b[0][1]的元素,值是4。*(*(b+1)+2)表示b[1][2]的元素,值是18,b[0][2]+b[1][2]+b[2][2]之和是30。7、有如下類聲明:classFoo{intbar;};則Foo類的成員bar是()。A、公有數(shù)據(jù)成員B、公有成員函數(shù)C、私有數(shù)據(jù)成員D、私有成員函數(shù)標準答案:C知識點解析:此題考查的是類的定義。在定義類的成員變量時,如果沒有使用關(guān)鍵字;所有成員默認定義為private私有權(quán)限。8、在軟件設(shè)計中不使用的工具是()。A、系統(tǒng)結(jié)構(gòu)圖B、PAD圖C、數(shù)據(jù)流圖(DFD圖)D、程序流程圖標準答案:C知識點解析:在軟件開發(fā)的各個階段經(jīng)常會使用到一些圖形工具,如在需求分析階段使用數(shù)據(jù)流圖(DFD圖),在要設(shè)計階段使用系統(tǒng)結(jié)構(gòu)圖,在詳細設(shè)計階段使用程序流程圖、N-S圖或者PAD圖等。9、在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是()。A、程序內(nèi)部邏輯B、程序外部功能C、程序數(shù)據(jù)結(jié)構(gòu)D、程序流程圖標準答案:B知識點解析:黑盒測試法指的是根據(jù)程序的外部功能,把程序本身看成一個黑盒子,設(shè)計測試用例來驗證程序外部功能的正確性。10、在E一R圖中,用來表示實體的圖形是()。A、矩形B、橢圓形C、菱形D、三角形標準答案:A知識點解析:在E一R圖中,用矩形表示實體集,在矩形內(nèi)寫上該實體集的名字;用橢圓形表示屬性;用菱形(內(nèi)部寫上聯(lián)系名)表示聯(lián)系。11、下面屬于白盒測試方法的是A、等價類劃分法B、邏輯覆蓋C、邊界值分析法D、錯誤推測法標準答案:B知識點解析:白盒測試的主要方法有邏輯覆蓋、基本路徑測試等。12、有如下程序:#includeusingnamespacestd;classA{public:A(){cout<<"A";}~A(){cout<<"—A";}};classB:publicA{A*p;public:B(){cout<<"B";P=ncwA();}~B(){cout<<"~B";deletep;}};intmain(){Bobj;return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、BAA~A~B~AB、ABA~B~A~AC、BAA~B~A~AD、ABA~A~B~A標準答案:B知識點解析:此題考查的是派生類對象的構(gòu)造與析構(gòu)。建立派生類對象時,構(gòu)造函數(shù)的執(zhí)行順序如下:執(zhí)行基類的構(gòu)造函數(shù),調(diào)用順序按照各個基類被定義時聲明的順序(自左向右)->執(zhí)行成員對象的構(gòu)造函數(shù),調(diào)用順序按照各個成員對象在類中聲明的順序.>執(zhí)行派生類的構(gòu)造函數(shù)。所以本題在建立派生類B的對象0bj是會先調(diào)用基類A的構(gòu)造函數(shù),然后調(diào)用自身的構(gòu)造函數(shù)。注意:B類中定義的成員p是A類的指針而不是一個對象,故在調(diào)用自身構(gòu)造函數(shù)前不需要構(gòu)造。而在B類構(gòu)造函數(shù)中使用new操作符動態(tài)地構(gòu)造了一個A類的對象,所以整個構(gòu)造結(jié)果是輸出:ABA。派生類對象的析構(gòu)與構(gòu)造嚴格相反,即先析構(gòu)自身,然后析構(gòu)自身所包含的成員對象,最后調(diào)用基類的析構(gòu)函數(shù)。故本題中當main()函數(shù)返回時,析構(gòu)B類的對象obj:首先調(diào)用~B(),接著再調(diào)用~A()因為在~B()函數(shù)中釋放了動態(tài)創(chuàng)建的A類對象,故整個析構(gòu)所輸出的結(jié)果是~B~A~A。所以這個程序輸出結(jié)果為ABA~B~A~A。13、對C++編譯器區(qū)分重載函數(shù)無任何意義的信息是()。A、參數(shù)類型B、參數(shù)個數(shù)C、返回值類型D、常成員函數(shù)關(guān)鍵字const標準答案:C知識點解析:如果重載函數(shù)只是函數(shù)類型不同,而參數(shù)個數(shù)和類型完全相同,C++編譯器則無法區(qū)別它們。14、下列關(guān)于模板的敘述中,正確的是()。A、如果一個類中存在純虛函數(shù),這個類就是類模板B、函數(shù)模板不能有形式參數(shù)表C、類模板是一種參數(shù)化類型的類,是類的生成器D、類模板中不能包含構(gòu)造函數(shù)標準答案:C知識點解析:對于函數(shù)模板,數(shù)據(jù)類型本身成了它的參數(shù),是一種參數(shù)化類型的函數(shù)。對于類模板,數(shù)據(jù)類型本身成了它的參數(shù),因而是一種參數(shù)化類型的類,是類的生成器。15、有如下程序:#includeusingnamespacestd;intmain(){intsum;for(inti=0;i<6;i+=3){sum=i;for(intj=i;j<6;j++)sum+=j;}cout<A、3B、10C、12D、15標準答案:D知識點解析:由題干可以知道,外層循環(huán)會進行兩次,且第一次的結(jié)果我們可以不去理會和計算,讀者仔細觀察能發(fā)現(xiàn),在第一次的循環(huán)以后sum和j都會被重新賦值,所以外層第二次循環(huán)如下:此時i=3,sum=3內(nèi)層循環(huán)開始如下:j=3,j<6,sum=6;j=4,j<6,sum=10,j=5,j<6,sum=15,j=6退出內(nèi)層循環(huán)。得到sum=15。16、下列函數(shù)原型聲明中,錯誤的是()。A、intfunction(intm,intn);B、intfunction(int,int);C、intfunction(intm=3,intn);D、intfunction(int&m,int&n);標準答案:C知識點解析:在C++中,函數(shù)在使用之前要預先聲明。這種聲明在標準C++中稱為函數(shù)原型,函數(shù)原型給出了函數(shù)名、返回類型以及在調(diào)用函數(shù)時必須提供的參數(shù)個數(shù)和類型。其語法為:<返回類型><函數(shù)名>(<形參列表>);使用函數(shù)原型說明有兩種形式:①直接使用函數(shù)定義的頭部,并在后面加上一個分號;②在函數(shù)原型說明中省略參數(shù)列表中的形參變量名,僅給出函數(shù)名、函數(shù)類型、參數(shù)個數(shù)及次序。在選項C)中,給出了形參變量m的初值。17、下面程序中對一維坐標點類Point進行運算符重載#include<iostream>usingnamespacestd;classPoint{public:Point(intval){x=val;}Point&operator++(){x++;return*this;}Pointoperator++(int){Pointold=*this;++(*this);returnold;}IntGetX()const{returnx;}private:intx;};intmain(){Pointa(10);cout<<(++a).GetX();cout<<a++.GetX();return0;}編譯和運行情況是()。A、運行時輸出1011B、運行時輸出1111C、運行時輸出1112D、編譯有錯標準答案:B知識點解析:此題考查的是重載增l運算符“++”。此題中,Point&operator++()重載的是前綴形式,而Pointoperator++(int)重載的是后綴形式。所以主函數(shù)中第1條輸出語句輸出11,此時a.x的值為11;第2條輸出語句,首先創(chuàng)建了一個Point對象old保存自身,然后通過語句++(*this);調(diào)用前綴++的重載函數(shù),因為返回值是改變前保存的old對象,故仍輸出11。18、若在表達式y(tǒng)/x中,’’/’’是作為成員函數(shù)重載的運算符,則該表達式還可以表示為()。A、x.operator/(y)B、operator/(x,y)C、y.operator/(x)D、operator/(y,x)標準答案:C知識點解析:運算符函數(shù)的函數(shù)名是由運算符前加關(guān)鍵字operator構(gòu)成的。所以當“/”作為運算符重載后,其格式為operator/。所以其作為成員函數(shù)調(diào)用時的格式為y.operator/(x)。19、下列關(guān)于模板的敘述中,錯誤的是()。A、調(diào)用模板函數(shù)時,有時可以省略模板實參B、函數(shù)模板的每個實例就是一個函數(shù)定義C、類模板的每個實例就是一個類定義D、類模板的實例是一個類對象標準答案:D知識點解析:在定義對象的過程中,編譯系統(tǒng)會自動地根據(jù)需要生成相應(yīng)的類定義,這種依據(jù)類模板生成類定義的過程稱為類模板的實例化。類模板實例化所生成的每一個類定義就是相應(yīng)類模板的一個實例。20、將前綴運算符’’--’’重載為非成員函數(shù),下列原型中,能正確用于類中說明的是()。A、Deer&operator--(int);B、Decroperator--(Decr&,int);C、friendDeer&operator--(Deer&);D、friendDeeroperator--(Deer&,int);標準答案:C知識點解析:因為要作為非成員函數(shù)重載,所以加friend,作為前綴操作,其返回的操作結(jié)果是對該變量的引用,所以類型為Deer&,操作數(shù)出現(xiàn)在參數(shù)表中,應(yīng)聲明為引用,即Deer&。21、要建立文件流并打開當前目錄下的文件file.dat用于輸入,下列語句中錯誤的是()。A、ifstreamfin=ifstream.open("file.dat");B、ifstream*fin;newifstream("file.dat");C、ifstreamfin;fin.open("file.dat");D、ifstream*fin=newifstream();fin一>open("file.dat");標準答案:A知識點解析:在選項A中,在賦值號的左側(cè)表示建立一個輸入流對象fin,而在賦值號的右側(cè)的表達式不正確,因為文件輸入流類ifstream不能直接調(diào)用其成員函數(shù)open。22、若為Fraction類重載前增1運算符++,應(yīng)在類體中將其聲明為()。A、Fraction&operator++();B、Fraction&operator++(int);C、friendFraction&operator++();D、friendFraction&operator++(int);標準答案:A知識點解析:在類Fraction中重載前增1運算符++時,其聲明形式為Fraction&operator++();在類Fraction中重載后增1運算符十+時,其聲明形式為Fraction&operatorH(int);。23、下列關(guān)于模板的敘述中,正確的是()。A、如果一個類中存在純虛函數(shù),這個類就是類模板B、函數(shù)模板不能有形式參數(shù)表C、類模板是一種參數(shù)化類型的類,是類的生成器D、類模板中不能包含構(gòu)造函數(shù)標準答案:C知識點解析:對于函數(shù)模板,數(shù)據(jù)類型本身成了它的參數(shù),是一種參數(shù)化類型的函數(shù)。對于類模板,數(shù)據(jù)類型本身成了它的參數(shù),因而是一種參數(shù)化類型的類,是類的生成器。國家二級C++機試(選擇題)模擬試卷第5套一、選擇題(本題共37題,每題1.0分,共37分。)1、以下程序的輸出結(jié)果是()。#include<iostream.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;fbr(i=0;i<3;i++)fbr(j=i;j<=i;j++)t=t+b[i][b[j][j]];cout<<t;}A、2B、3C、4D、5標準答案:C知識點解析:程序中通過for二重循環(huán)依次取二維數(shù)組中的數(shù)值進行與t的累加。取數(shù)組中的元素為i行和符合循環(huán)條件的b[j][j]列的數(shù)據(jù)。循環(huán)為0,1,2行,對應(yīng)0,1,2列。即0,1,2。所以1+0+1+2=4。2、下面c++標識符中正確的是()。A、abcB、3abC、intD、+ab標準答案:A知識點解析:C++標識符命名的規(guī)則:只能由’a’-’z’、’A’-’Z’、’0’-’9’、’’等字符組成,且數(shù)字不能開頭,不能與系統(tǒng)保留字沖突。3、有如下程序:運行時的輸出結(jié)果是()。A、3B、10C、12D、15標準答案:D知識點解析:由題干可以知道,外層循環(huán)會進行兩次,且第一次的結(jié)果我們可以不去理會和計算,讀者仔細觀察能發(fā)現(xiàn),在第一次的循環(huán)以后sum和i都會被重新賦值,所以外層第二次循環(huán)如下:此時i=3,sum=3內(nèi)層循環(huán)開始如下:j=3,j<6,sum=6;j=4,j<6,sum=10,j=5,j<6,sum=15,j=6退出內(nèi)層循環(huán)。得到sum=15。4、數(shù)據(jù)庫系統(tǒng)在其內(nèi)部具有3級模式,用來描述數(shù)據(jù)庫中全體數(shù)據(jù)的全局邏輯結(jié)構(gòu)和特性的是()。A、外模式B、概念模式C、內(nèi)模式D、存儲模式標準答案:B知識點解析:概念模式,也稱邏輯模式,是對數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶應(yīng)用公共數(shù)據(jù)視圖。它不涉及具體的硬件環(huán)境與平臺,與具體的軟件環(huán)境也無關(guān)。5、下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進行查找的是()。A、順序存儲的有序線性表B、線性鏈表C、二叉鏈表D、有序線性鏈表標準答案:A知識點解析:二分法查找只適應(yīng)于順序存儲的有序表。有序表是指線性表中的元素按值非遞減排序(即從小到大,但允許相鄰元素值相等)的表。6、有如下程序:#includeusingnamespacestd;classMyClass{public:MyClass(){cout<<‘A’;}MyClass(charc){cout<A、ABXB、ABXBC、AXBD、AXBB標準答案:D知識點解析:構(gòu)造函數(shù)和析構(gòu)函數(shù)的調(diào)用順序為先構(gòu)造的后析構(gòu),后構(gòu)造的先析構(gòu)。所以本題答案為D。7、下列敘述中正確的是()。A、程序執(zhí)行的效率與數(shù)據(jù)的存儲結(jié)構(gòu)密切相關(guān)B、程序執(zhí)行的效率只取決于程序的控制結(jié)構(gòu)C、程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量D、以上都不正確標準答案:A知識點解析:影響程序執(zhí)行效率的因素有很多,如數(shù)據(jù)的存儲結(jié)構(gòu)、程序處理的數(shù)據(jù)量、程序的算法等。順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)在數(shù)據(jù)插入和刪除操作上的效率就存在差別。其中,鏈式存儲結(jié)構(gòu)的效率要高一些。8、有如下程序:#includeusingnamespacestd;intmain(){voidfunction(doubleva1);doubleva1;function(va1);cout<A、編譯出錯,無法運行B、輸出:3C、輸出:3.0D、輸出一個不確定的數(shù)標準答案:D知識點解析:此題考查的是函數(shù)參數(shù)的傳遞。C++語言中,函數(shù)在傳遞參數(shù)時,總是將實參的值傳遞給被調(diào)用函數(shù)的形參,即傳值調(diào)用。因此,在函數(shù)中對形參所作的任何操作都不會改變實參的值。9、在下列原型所示的C++函數(shù)中,按“傳值”方式傳遞參數(shù)的是()。A、voidfl(intx);B、voidf2(int*x);C、voidf3(constint*x);D、voidf4(int&x);標準答案:A知識點解析:傳值方式是將實參復制到形參中,因此實參和形參是兩個不同的變量,有各自的存儲空間,可以把函數(shù)的形參看做是函數(shù)的局部變量。其中BC選項為按低值傳遞D選賢為桉引用傳遞。10、有如下程序:#includeusingnamespacestd;classA{public:staticima:voidinit(){a=1;}A(inta=2){init();a++;}}、;intA::a=0;Aobj;intmain(){cout<A、0B、1C、2D、3標準答案:B知識點解析:本題考查構(gòu)造函數(shù),本題中對類中的a數(shù)據(jù)成員先是賦值為0,當定義了對象obj時,執(zhí)行構(gòu)造函數(shù),將a的值變?yōu)榱?,所以輸出1。11、軟件需求規(guī)格說明書的作用不包括()。A、軟件驗收的依據(jù)B、用戶與開發(fā)人員對軟件要做什么的共同理解C、軟件設(shè)計的依據(jù)D、軟件可行性研究的依據(jù)標準答案:D知識點解析:軟件規(guī)格說明書主要有三個作用:①用戶和軟件開發(fā)人員之間的合同;②開發(fā)人員進行設(shè)計和編程的依據(jù):③軟件工程項目驗收的依據(jù)。12、下面不能作為結(jié)構(gòu)化方法軟件需求分析工具的是()。A、系統(tǒng)結(jié)構(gòu)圖B、數(shù)據(jù)字典(DD)C、數(shù)據(jù)流程圖(DFD圖)D、判定表標準答案:A知識點解析:按照DeMarco的定義,“結(jié)構(gòu)化分析就是使用數(shù)據(jù)流圖(DFD圖)、數(shù)據(jù)字典(DD)、結(jié)構(gòu)化英語、判定表和判定樹等工具,來建立一種新的、稱為結(jié)構(gòu)化規(guī)格說明的目標文檔。”系統(tǒng)結(jié)構(gòu)圖不能作為結(jié)構(gòu)化方法軟件需求分析工具。13、()使一個函數(shù)可以定義成對許多不同數(shù)據(jù)類型完成同一個任務(wù)。A、函數(shù)模板B、重載函數(shù)C、遞歸函數(shù)D、模板函數(shù)標準答案:A知識點解析:函數(shù)模板是一系列相關(guān)函數(shù)的模型或樣板,這些函數(shù)的源代碼形式相同,只是所針對的數(shù)據(jù)類型不同。因此,函數(shù)模板使一個函數(shù)可以定義成對許多不同數(shù)據(jù)類型完成同一個任務(wù)。14、數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是()。A、數(shù)據(jù)庫設(shè)計B、數(shù)據(jù)庫系統(tǒng)設(shè)計C、數(shù)據(jù)庫維護D、數(shù)據(jù)庫管理員培訓標準答案:A知識點解析:在數(shù)據(jù)庫應(yīng)用系統(tǒng)中的一個核心問題就是設(shè)計一個能滿足用戶要求,性能良好的數(shù)據(jù)庫,這就是數(shù)據(jù)庫設(shè)計。所以數(shù)據(jù)庫設(shè)計是數(shù)據(jù)庫應(yīng)用的核心。15、下列描述中錯誤的是()。A、在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致B、數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)的共享問題C、數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫D、數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持標準答案:A知識點解析:在數(shù)據(jù)庫系統(tǒng)中,物理獨立性是指數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)、存取方式等)的改變,如存儲設(shè)備的更換、物理存儲的更換、存取方式改變等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化。16、將以下程序?qū)懗扇窟\算表達式是()。if(x<y)min=x;elserain=y;A、min=(x>y)?x:yB、min=(x<y)?x:yC、min=(x<y)x:yD、min=(x<y)?x,y標準答案:B知識點解析:題目中給出的程序是求x,y中的小值。即如果x小于y,那么min=x,否則min=y。條件運算符為“?:”,(x<y)?x:y是當x小于y時取x,否則取y。17、下列關(guān)于C++函數(shù)的說明中,正確的是()。A、內(nèi)聯(lián)函數(shù)就是定義在另一個函數(shù)體內(nèi)部的函數(shù)B、函數(shù)體的最后一條語句必須是return語句C、標準C++要求在調(diào)用一個函數(shù)之前,必須先聲明其原型D、編譯器會根據(jù)函數(shù)的返回值類型和參數(shù)表來區(qū)分函數(shù)的不同重載形式標準答案:C知識點解析:此題考查的是有關(guān)函數(shù)的概念。內(nèi)聯(lián)函數(shù)是在函數(shù)定義之前加關(guān)鍵字inline來聲明的函數(shù),而不是定義在另一個函數(shù)體內(nèi)部的函數(shù),故選項A錯誤;無返回值的函數(shù)在執(zhí)行完最后一條語句后,會自動返回而不必加入retum語句,故選項B錯誤;如果函數(shù)只是返回值類型不同,而其它完全相同,則不能作為函數(shù)重載來使用,故選項D錯誤。18、下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中

溫馨提示

  • 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

提交評論