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

下載本文檔

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

文檔簡介

國家二級(C++)機試模擬試卷19(共9套)(共369題)國家二級(C++)機試模擬試卷第1套一、選擇題(本題共37題,每題1.0分,共37分。)1、在數(shù)據(jù)庫設(shè)計中,將E-R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程屬于()。A、需求分析階段B、概念設(shè)計階段C、邏輯設(shè)計階段D、物理設(shè)計階段標準答案:C知識點解析:邏輯結(jié)構(gòu)設(shè)計的任務:概念結(jié)構(gòu)是各種數(shù)據(jù)模型的共同基礎(chǔ),為了能夠用某一DBMS實現(xiàn)用戶需求,還必須將概念結(jié)構(gòu)進一步轉(zhuǎn)化為相應的數(shù)據(jù)模型,這正是數(shù)據(jù)庫邏輯結(jié)構(gòu)沒計所要完成的任務。它包括從E-R圖向關(guān)系模式轉(zhuǎn)換和邏輯模式規(guī)范化及調(diào)整、實現(xiàn)。2、下列程序的輸出結(jié)果是()。#includetemplateTmax(Tx[],intn){inti;Tmaxv=x[0];for(i=1;iA、9,7.3B、7,7.3C、9,3.4D、7,3.4標準答案:D知識點解析:函數(shù)的功能是求出數(shù)組中指定范圍的元素中的最大值。所以在a數(shù)組中前4個數(shù)據(jù)中最大值為7,數(shù)組b中前3個元素中最大值為3.4。3、下列有關(guān)繼承和派生的敘述中,正確的是()。A、如果一個派生類私有繼承其基類,則該派生類對象不能訪問基類的保護成員B、派生類的成員函數(shù)可以訪問基類的所有成員C、基類對象可以賦值給派生類對象D、如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類標準答案:D知識點解析:如果派生類私有繼承基類,不能訪問基類中的私有成員,所以A)、B)是錯誤的。派生類是對基類的具體化,所以C)錯誤的。如果派生類沒有實現(xiàn)基類的一個純虛函數(shù),則該派生類是一個抽象類,即選擇D)。4、下列關(guān)于C++流的描述中,錯誤的是()。A、cout>>’A’表達式可輸出字符AB、eof()函數(shù)可以檢測是否到達文件尾C、對磁盤文件進行流操作時,必須包含頭文件fstreamD、以ios_base::out模式打開的文件不存在時,將自動建立一個新文件標準答案:A知識點解析:本題考查C++流,想要輸出字符“A”,則應該是cout<<“A”,所以本題答案為A。5、支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。A、棧B、樹C、隊列D、二叉樹標準答案:A知識點解析:棧支持子程序調(diào)用。棧是一種只能在一端進行插入或刪除的線性表,在主程序調(diào)用子函數(shù)時要首先保存主程序當前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子程序,最終把子程序的執(zhí)行結(jié)果返回到主程序中調(diào)用子程序的位置,繼續(xù)向下執(zhí)行,這種調(diào)用符合棧的特點,因此本題的答案為A。6、下列運算符中,不能被重載的是()。A、&&B、!=C、.D、++標準答案:C知識點解析:C++不能重載的運算符只有5個,即“.”、“.*”、“::”、“?:”、“sizeof”,故本題答案為C。7、有如下函數(shù)定義:voidfunc(inta,int&b){a++;b++;}若執(zhí)行代碼段:intx=0,y=1;func(x,y);則變量x和y的值分別是()。A、0和1B、1和1C、0和2D、1和2標準答案:C知識點解析:函數(shù)參數(shù)的3種傳遞方式:①將變量名作為形參和實參,即傳值方式;②傳遞變量指針;③引用形參。本題中實參x為傳值方式,所以x的值不會改變;y為引用形參,所以會改變。故本題答案為C。8、以下關(guān)鍵字不能用來聲明類的訪問權(quán)限的是()。A、publicB、staticC、protectedD、private標準答案:B知識點解析:類的成員訪問權(quán)限有3種:public(公用)、protected(保護)、private(私有)。9、有如下程序:#includeusingnamespacestd;classBook{public:Book(char*t=""){strcpy(title,t);}private:chartitle[40];};classNovel:publicBook{public:Novel(char*t=""):Book(t){}char*Category()const{return"文學";}};intmain(){Book*pb;pb=newNovel();cout<Category();deletepb;return0;}若程序運行時輸出結(jié)果是"文學",則橫線處缺失的語句是()。A、char*Category();B、char*Category()const;C、virtualchar*Category()const;D、virtualchar*Category()const=0;標準答案:D知識點解析:本題考查純虛函數(shù)和抽象類,純虛函數(shù)是在聲明虛函數(shù)時被"初始化"為0的函數(shù),包含純虛函數(shù)的類為抽象類,抽象類是不能被實例化的,但是可以定義指向抽象類數(shù)據(jù)的指針變量,當派生類成為具體類后,就可以用這種指針指向派生類的對象,然后通過該指針調(diào)用虛函數(shù),實現(xiàn)多態(tài)性的操作。所以本題答案為D。10、對于int*pa[5];的描述,正確的是()。A、pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個int型元素B、pa是一個指向某個數(shù)組中第5個元素的指針,該元素是int型變量C、pa[5]表示某個數(shù)組的第5個元素的值D、pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針標準答案:A知識點解析:語句“int木p[5]”表示一個數(shù)組p,它的大小是5,里面存放的數(shù)據(jù)類型是int木,也就是整型指針。稱之為指針數(shù)組(從右向左解析這個表示)。11、下列關(guān)于運算符重載的敘述中,錯誤的是()。A、有的運算符可以作為非成員函數(shù)重載B、所有的運算符都可以通過重載而被賦予新的含義C、不得為重載的運算符函數(shù)的參數(shù)設(shè)置默認值D、有的運算符只能作為成員函數(shù)重載標準答案:B知識點解析:重載運算符的規(guī)則如下:④C++不允許用戶自己定義新的運算符,只能對已有的C++運算符進行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數(shù)全部是C++的標準類型。所以答案為B。12、下列關(guān)于類模板的模板參數(shù)的敘述中,錯誤的是()。A、模板參數(shù)可以作為數(shù)據(jù)成員的類型B、模板參數(shù)可以作為成員函數(shù)的返回類型C、模板參數(shù)可以作為成員函數(shù)的參數(shù)類型D、模板參數(shù)不能作為成員函數(shù)的局部變量的類型標準答案:D知識點解析:本題考查類模板的概念和定義,模板參數(shù)可以作為成員函數(shù)的局部變量的類型。13、有如下定義: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ù)組的指針,本題中指針變量p指向數(shù)組a,直接使用數(shù)組下標即可取值,數(shù)組下標是從0開始標號的,所以a[2]能取到5,而a[3]取不到5,c選項中使用指針后移方法能夠取到5,D選項中*p為1,所以*p+4為5。14、下列語句都是程序運行時的第1條輸出語句,其中一條語句的輸出效果與其他三條語句不同,該語句是()。A、cout<<interna1<<12345;B、tout<<left<<12345;C、cout<<right<<12345;D、cout<<setw(6)<<12345;標準答案:D知識點解析:本題考查控制輸出格式,A、B、C選項都會輸出“1234.5”,只有D選項輸出“12345”,所以本題答案為D。15、)下列程序中橫線處正確的語句是()。#includeusingnamespacestd;classTestClass{public:voidfun0{cout<<”TestClass::fun”<A、fun();B、TestClass.fun0;C、TestClass::fun0;D、TestClass->fun();標準答案:C知識點解析:程序中的TestClassl為TestClass的派生類,TestClassl公有繼承TestClass,所以可以調(diào)用其中的公有成員fun函數(shù),如果要顯示調(diào)用它,那么使用域符號“::”,這樣就實現(xiàn)了對函數(shù)的顯示調(diào)用,即選擇C)。16、若count為類Toy中的靜態(tài)數(shù)據(jù)成員,0bj為類Toy的一個對象,則在該類的成員函數(shù)中訪問count時,錯誤的是()。A、countB、obj.countC、Toy.countD、Toy::count標準答案:C知識點解析:靜態(tài)數(shù)據(jù)成員也屬于類的成員,所以該類的成員函數(shù)可以直接訪問,選項A正確;使用類對象訪問類成員時,使用成員運算符”.”,選項B正確;由于count為Toy類的靜態(tài)數(shù)據(jù)成員,所以可以使用類名來訪問,需要加上count的命名空間,Toy::count,選項D正確。故本題答案為C選項。17、有如下程序:#include<iostream>usingnamespacestd;intfun(charx,chary){if(x>y)returnx:returny;}intmain(){inta(9),b(8),c(7);cout<<fun(fun(a,b),fun(b,c));return0;}運行后的輸出結(jié)果是()。A、8B、9C、7D、函數(shù)調(diào)用出錯標準答案:B知識點解析:程序中,fun()函數(shù)的作用是將形參x、y中的較大值作為函數(shù)值返回;main()函數(shù)首先使用直接初始化方式,初始化a的值為9,b的值為8,c的值為7,然后調(diào)用函數(shù):fun(fun(a,b),fun(b,c));并將返回值輸出,由于a>b,b>c,所以fun(fun(a,b),fun(b,c))等價于:fun(a,b),也就等價于a。本題答案為B選項。18、有如下類定義:classB{private:voidfunl(){}protected:voidfun2(){}public:voidfun3(){}};classD:publicB{protected:voidfun4(){}};若obj是類D的對象,則下列語句中正確的是()。A、obj.fun1();B、obj.fun2();C、obj.fun4();D、obj.fun3();標準答案:D知識點解析:派生類對基類成員的訪問權(quán)限由基類成員的訪問標識和類派生列表中的訪問標識共同決定的,類D公有繼承類B,所以類B中成員函數(shù)funl對類D不可見;成員函數(shù)fun2為類D的protected成員;成員函數(shù)fun3為類D的public成員;綜上所述funl,fun2,fun4對類D對象obj均不可見,fun3對obj可見,答案為D。19、支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。A、棧B、樹C、隊列D、二叉樹標準答案:A知識點解析:根據(jù)棧的定義,棧是一種限定在一端進行插入與刪除的線性表。在主函數(shù)調(diào)用子函數(shù)時,主函數(shù)會保持當前狀態(tài),然后轉(zhuǎn)去執(zhí)行子函數(shù),把子函數(shù)的運行結(jié)果返回到主函數(shù),主函數(shù)繼續(xù)向下執(zhí)行,這種過程符合棧的特點。所以一般采用棧式存儲方式。20、對建立良好的程序設(shè)計風格,下面描述正確的是()。A、程序應簡單、清晰、可讀性好B、符號名的命名只要符合語法C、充分考慮程序的執(zhí)行效率D、程序的注釋可有可無標準答案:A知識點解析:程序設(shè)計應該簡單易懂,語句結(jié)構(gòu)應該簡單直接,不應該為提高效率而把語句復雜化。21、下列字符串中可以用做C++語言標識符的是()。A、1234B、foo~barC、virtualD、34var標準答案:A知識點解析:C++語言標識符只能由數(shù)字、字母和下畫線組成,并且只能以字母和下畫線為開頭。22、下列定義中p指向的地址可更改,但*p不能夠更改的是()。A、constint*p;B、int*constp;C、constint*constp;D、int*p;標準答案:A知識點解析:“constint*p;”是只能改變指針地址,“int*constp;”是只能改變*p的內(nèi)容,“constint*constp;”是指針的地址和*p的內(nèi)容都不能改變.“int*p;”是兩者都能改變。23、在C++流的輸入輸出格式控制中,使用操作符setw,可以控制A、輸出精度B、輸出寬度C、對齊方式D、填充字符標準答案:B知識點解析:setw(n)用來設(shè)置輸入輸出數(shù)據(jù)字段的寬度為n位,答案為B。24、對于循環(huán)隊列,下列敘述中正確的是()。A、隊頭指針是固定不變的B、隊頭指針一定大于隊尾指針C、隊頭指針一定小于隊尾指針D、隊頭指針可以大于隊尾指針,也可以小于隊尾指針標準答案:D知識點解析:循環(huán)隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環(huán)利用的隊列結(jié)構(gòu)所以對頭指針有時可能大于隊尾指針有時也可能小于隊尾指針。25、有如下類聲明和函數(shù)聲明classBase{intm;public:intn;protected:intp;};classDerived:publicBase{intk;friendvoidf(Derivedd);};則在函數(shù)f中通過d可訪問類數(shù)據(jù)成員的個數(shù)是A、1B、2C、3D、4標準答案:C知識點解析:公有繼承中,派生類不改變基類的成員訪問權(quán)限(private成員除外),即基類的public成員在派生類中是public成員,基類的protected成員在派生類中是protected成員;另外友元函數(shù)可以訪問類的private成員、protected成員和public成員,所以f函數(shù)中d可以訪問的數(shù)據(jù)成員有:n、p、k;m對派生類不可見;答案為C。26、程序調(diào)試的任務是()。A、設(shè)計測試用例B、驗證程序的正確性C、發(fā)現(xiàn)程序中的錯誤D、診斷和改正程序中的錯誤標準答案:D知識點解析:程序調(diào)試的任務是診斷和改正程序中的錯誤。27、有如下程序段:inti=1;while(1){i++;if(i==30)break;if(i%3==0)cout<<’*’;}執(zhí)行這個程序段輸出字符*的個數(shù)是A、30B、8C、9D、10標準答案:C知識點解析:本題中while循環(huán)中當i為3的倍數(shù)時輸出*,而i為30時跳出循環(huán),所以輸出9個*,答案為C。28、有如下程序:#include#includeusingnamespacestd;classAnimal{public:virtualstringGetType()const{return"Animal";}virtualstringGetVoice()const{return"Voice";}};classDog:publicAnimal{public:stringGetType()const{return"Dog";}stringGetVoice()const{return"Woof";}};classCat:publicAnimal{public:stringGetType()const{return"Cat";}stringGetVoice()const{return"Miaow";}};voidType(Animala){cout<A、DogspeakVoice-CatspeakVoiceB、DogspeakWoof-CatspeakMiaowC、AnimalspeakVoice-AnimalspeakVoiceD、AnimalspeakWoof-AnimalspeakMiaow標準答案:C知識點解析:本題考查虛函數(shù)的運用,本題中定義Dogd;Type(d)時,執(zhí)行基類的Type函數(shù),輸出Animal,然后輸出speak,然后執(zhí)行基類的Speak函數(shù)輸出Voice,最后輸出-,同理cat輸出類似,所以結(jié)果為C選項正確。29、有如下函數(shù)模板:templateTsquare(Tx){returnx*x;}其中的T是A、函數(shù)形參B、函數(shù)實參C、模板形參D、模板實參標準答案:C知識點解析:本題考查模板的相關(guān)知識,屬于基礎(chǔ)知識,可知T為模板形參,所以C選項正確。30、在下列枚舉符號中,用來定位文件開始位置的方式是A、ios_base::curB、ios_base::begC、ios_base::outD、ios_base::end標準答案:B知識點解析:ios_base::cur是指文件的當前位置;ios_base::end指向文件尾部;ios_base::beg指向文件開始;ios_base::out文件操作的文件模式;答案為B。31、下列關(guān)于基類和派生類關(guān)系的敘述中,正確的是A、派生類中的成員可以訪問基類中的任何成員B、每個類最多只能有一個直接基類C、對基類構(gòu)造函數(shù)的調(diào)用不能出現(xiàn)在派生類構(gòu)造函數(shù)的初始化列表中D、派生類除了繼承基類的成員,還可以定義新的成員標準答案:D知識點解析:派生類對基類成員的訪問權(quán)限由基類成員的訪問標識和類派生列表中的訪問標識共同決定的,選項A錯誤;多重繼承的派生類可以有多個直接基類,選項B錯誤;派生類構(gòu)造函數(shù)可以隱式調(diào)用基類的默認構(gòu)造函數(shù)初始化對象的基類部分,也可以在派生類構(gòu)造函數(shù)初始化列表中顯示調(diào)用基類構(gòu)造函數(shù),選項C錯誤;答案為D。32、在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)模型包括概念模型、邏輯模型和A、物理模型B、空間模型C、時間模型D、數(shù)據(jù)模型標準答案:A知識點解析:數(shù)據(jù)模型按照不同的應用層次分為3種類型:概念數(shù)據(jù)模型、邏輯數(shù)據(jù)模型、物理數(shù)據(jù)模型,故A選項正確。33、下列關(guān)于運算符重載的敘述中正確的是A、跟普通函數(shù)一樣,可以為重載的運算符函數(shù)的參數(shù)設(shè)置默認值B、通過重載,可以改變一個運算符原有的優(yōu)先級和操作數(shù)個數(shù)C、只能重載C++中已經(jīng)有的運算符,不能定義新運算符D、C++中已有的運算符都可以重載標準答案:C知識點解析:本題考查運算符重載,重載不能改變運算符運算對象的個數(shù);不能改變運算符的優(yōu)先級別;不能改變運算符的結(jié)合性;重載運算符的函數(shù)不能有默認值,否則就改變了運算符參數(shù)的個數(shù);不能定義新的運算符,某些運算符不能重載。所以答案為C。34、下列關(guān)于模板的表述中,錯誤的是A、模板形參表的兩邊使用尖括號括起來B、模板以關(guān)鍵字template開始C、模板聲明中的關(guān)鍵字class都可以用關(guān)鍵字typename替代D、模板的形參表中可以有多個參數(shù)標準答案:C知識點解析:模板定義以關(guān)鍵字template開始,后接模板形參表,模板形參表是用尖括號括住的一個或多個模板形參的列表,形參之間用逗號分隔,選項A、B、D正確;至于選項C,一般關(guān)鍵字class和typename在模板形參表中,是沒有區(qū)別的,但是關(guān)于類模板,類定義的關(guān)鍵字也是class,這里class是不可用typename替代的,答案為C。35、下列敘述中正確的是A、所有數(shù)據(jù)結(jié)構(gòu)必須有根結(jié)點B、所有數(shù)據(jù)結(jié)構(gòu)必須有終端結(jié)點(即葉子結(jié)點)C、只有一個根結(jié)點,且只有一個葉子結(jié)點的數(shù)據(jù)結(jié)構(gòu)一定是線性結(jié)構(gòu)D、沒有根結(jié)點或沒有葉子結(jié)點的數(shù)據(jù)結(jié)構(gòu)一定是非線性結(jié)構(gòu)標準答案:D知識點解析:一個非空的數(shù)據(jù)結(jié)構(gòu)如果滿足以下兩個條件:有且只有一個根結(jié)點;每一個結(jié)點最多有一個前件,也最多有一個后件,稱為線性結(jié)構(gòu),在數(shù)據(jù)結(jié)構(gòu)中習慣稱為線性表,D選項正確。圖是可能不包含根結(jié)點或葉子結(jié)點的數(shù)據(jù)結(jié)構(gòu),AB選項錯誤。數(shù)據(jù)結(jié)構(gòu)中若有中間結(jié)點不滿足只有一個前件或者后件條件,則不屬于線性結(jié)構(gòu),C選項錯誤。36、有如下程序:#includeusingnamespacestd;classAA{public:AA(intn){cout<A、321B、231C、213D、123標準答案:D知識點解析:構(gòu)造函數(shù)初始化列表僅指定用于初始化成員的值,并不指定這些初始化執(zhí)行的次序;初始化執(zhí)行的次序是根據(jù)類定義中成員的聲明順序完成的,初始化列表結(jié)束后,再執(zhí)行函數(shù)體;程序創(chuàng)建CC對象c,調(diào)用CC的構(gòu)造函數(shù),由于在類CC中,AA類對象a首先聲明,所以先調(diào)用AA類的構(gòu)造函數(shù),完成成員a的初始化,輸出"1",再調(diào)用BB類的構(gòu)造函數(shù),完成成員b的初始化,輸出"2",最后執(zhí)行CC構(gòu)造函數(shù)的函數(shù)體,輸出"3";答案為D。37、軟件按功能可以分為應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是()。A、學生成績管理系統(tǒng)B、C語言編譯程序C、UNIX操作系統(tǒng)D、數(shù)據(jù)庫管理系統(tǒng)標準答案:A知識點解析:軟件按功能可以分為:應用軟件、系統(tǒng)軟件、支撐軟件。操作系統(tǒng)、編譯程序、匯編程序、網(wǎng)絡軟件、數(shù)據(jù)庫管理系統(tǒng)都屬于系統(tǒng)軟件。所以B、C、D都是系統(tǒng)軟件,只有A是應用軟件。二、基本操作題(本題共1題,每題1.0分,共1分。)38、請使用VC6或使用【答題】菜單打開考生文件夾proj1下的工程proj1,此工程包含一個源程序文件proj1.cpp。文件中將表示數(shù)組元素個數(shù)的常量Size定義為4,并用int類型對類模板進行了實例化。文件中位于每個注釋“//ERROR****found****”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結(jié)果為:1234注意:模板參數(shù)名用T。只修改注釋“//ERROR*******found*******”的下一行語句,不要改動程序中的其他內(nèi)容。//proj1.cpp#includeusingnamespacestd;//將數(shù)組元素個數(shù)Size定義為4//ERROR*******found*******constintSize;templateclassMyClass{public:MyClass(T*P){for(inti=0;i//ERROR*******found*******voidMyClass::Print(){for(inti=0;iobj(intArray);obj.Print();cout<標準答案:(1)constintSize=4;(2)voidMyClass::Print()(3)MyClassobj(intArray);知識點解析:(1)主要考查考生對const變量的掌握,因為const變量不能修改,所以在定義的同時必須初始化。(2)主要考查考生對模板類的成員函數(shù)定義的掌握,因為MyClass類是模板類,所以在定義該函數(shù)時要加上模板標識符“”,即語句voidMyClass::Print()。(3)主要考查考生對模板類構(gòu)造函數(shù)的調(diào)用的理解,從上一條語句intintArray[Size]={1,2,3,4};中可以知道intArray為int型,因此定義obj時要使用,即MyClassobj(intArray);。三、簡單應用題(本題共1題,每題1.0分,共1分。)39、請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2。該工程中包含一個程序文件main.cpp,其中有“書”類Book及其派生出的“教材”類TeachingMaterial的定義,還有主函數(shù)main的定義。請在程序中“//*******found*******”下的橫線處填寫適當?shù)拇a,然后刪除橫線,以實現(xiàn)上述類定義和函數(shù)定義。此程序的正確輸出結(jié)果應為:教材名:C++語言程序設(shè)計頁數(shù):299作者:張三相關(guān)課程:面向?qū)ο蟮某绦蛟O(shè)計注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。#includeusingnamespacestd;classBook{//“書”類char*title;//書名intnum_pages;//頁數(shù)char*writer;//作者筆名public:Book(constchar*the_title,intpages,constchar*the_writer):numpages(pages){title=newchar[strlen(thetitle)+1];strcpy(title,the_title);//***********found***********strcpy(writer,the_writer);}//***********found***********~Book(){________}intnumOfPages()const{returnnum_pages;}//返回書的頁數(shù)constchar*theTitle()const{returntitle;)//返回書名constchar*theWriter()const{returnwriter;}//返回作者名};classTeachingMaterial:publicBook{//“教材”類char*course;public:TeachingMaterial(constchar*thetitle,intpages,constchar*the_writer,constchar*the_course)//***********found***********:_________{:course=newchar[strlen(thecourse)+1];strcpy(course,the_course);}~TeachingMaterial(){delete[]course;)constchar*theCourse()const{returncourse;}//返回相關(guān)課程的名稱};intmain(){TeachingMateriala_book("C++語言程序設(shè)計”,299,"張三",“面向?qū)ο蟮某绦蛟O(shè)計”);cout<<"教材名:"<四、綜合應用題(本題共1題,每題1.0分,共1分。)40、請使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件proj3,其中定義了用于表示特定數(shù)制的數(shù)的模板類Number和表示一天中的時間的類TimeOfDay;程序應當顯示:01:02:03.00406:04:06.021但程序中有缺失部分,請按照以下的提示,把缺失部分補充完整:(1)在“//**1*******found****”的下方是一個定義數(shù)據(jù)成員seconds的語句,seconds用來表示“秒”。(2)在“//**2******found****”的下方是函數(shù)advanceSeconds中的一個語句,它使時間前進k秒。(3)在“//**3******found****”的下方是函數(shù)advance中的一個語句,它確定增加k后n的當前值和進位,并返回進位。例如,若n的當前值是表示時間的55分,增加10分鐘后當前值即變?yōu)?分,進位為1(即1小時)。注意:只在指定位置編寫適當代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“****found****”。填寫的內(nèi)容必須在一行中完成,否則評分將產(chǎn)生錯誤。//proj3.cpp#include#includeusingnamespacestd;template//數(shù)制為base的數(shù)classNumber{intn;//存放數(shù)的當前值public:Number(inti)-n(i){}//i必須小于baseintadvance(intk);//當前值增加k個單位intvalue()const{returnn;}//返回數(shù)的當前值};classTimeOfDay{public:Number<24>hours;//小時(0~23)Number<60>minutes;//分(0~59)//**1*********found*******________;//秒(0~59)Number<1000>milliseconds;//毫秒(0~999)TimeOfDay(inth=0,intm=0,ints=0,intmilli=0):hours(h),minutes(m),seconds(s),milliseconds(milli){}voidadvanceMillis(intk){advanceSeconds(milliseconds.a(chǎn)dvance(k));}//前進k毫秒voidadvanceSeconds(intk)//前進k秒{//**2*********found*******__________;}voidadvanceMinutes(intk){advanceHour(minutes.a(chǎn)dvance(k));}//前進k分鐘voidadvanceHour(intk){hours.a(chǎn)dvance(k);}//前進k小時voidshow()const{//按“小時:分:秒.毫秒”的格式顯示時間intc=cout.fill(’0’);//將填充字符設(shè)置為’0’cout<intNumber::advance(intk){n+=k;//增加k個單位ints=0;//s用來累計進位//**3*********found*******while(n>=base)________//n到達或超過base即進位returns;//返回進位}intmain(){TimeOfDaytime(1,2,3,4);//初始時間:1小時2分3秒4毫秒time.show();//顯示時間time.a(chǎn)dvanceHour(5);//前進5小時time.a(chǎn)dvanceSeconds(122);//前進122秒(2分零2秒)time.a(chǎn)dvanceMilliS(1017);//前進1017毫秒(1秒零17毫秒)cout<國家二級(C++)機試模擬試卷第2套一、選擇題(本題共36題,每題1.0分,共36分。)1、下列運算符不能重載為友元函數(shù)的是()。A、=()()->B、+-++--C、><>=<=D、+=-=*=/=標準答案:A知識點解析:關(guān)于運算符重載為友元函數(shù)有如下規(guī)定:①一般情況下,單目運算符最好重載為類的成員函數(shù),雙目運算符則最好重載為類的友元函數(shù);②雙目運算符“=、()、[]、->”不能重載為類的友元函數(shù)。所以本題答案為A。2、下列二叉樹描述中,正確的是()。A、任何一棵二叉樹必須有一個度為2的結(jié)點B、二叉樹的度可以小于2C、非空二叉樹有0個或1個根結(jié)點D、至少有2個根結(jié)點標準答案:B知識點解析:二叉樹是由n≥0個結(jié)點的有限集合構(gòu)成,此集合或者為空集,或者由一個根結(jié)點及兩棵互不相交的左右子樹組成,并且左右子樹都是二叉樹。二叉樹可以是空集合,根可以有空的左子樹或空的右子樹。二叉樹不是樹的特殊情況,它們是兩個概念。二叉樹具有如下兩個特點:①非空二叉樹只有一個根結(jié)點;②每一個結(jié)點最多有兩棵子樹,且分別稱為該結(jié)點的左子樹與右子樹。3、下面敘述錯誤的是()。A、派生類可以使用private派生B、對基類成員的訪問必須是無二義性的C、基類成員的訪問能力在派生類中維持不變D、賦值兼容規(guī)則也適用于多繼承的組合標準答案:C知識點解析:在建立派生類的時候,并不是簡單地把基類的私有成員直接作為派生類的私有成員,把基類的公用成員直接作為派生類的公用成員。涉及如何確定基類的成員在派生類中的訪問屬性問題,不僅要考慮對基類成員所聲明的訪問屬性,還要考慮派生類所聲明的對基類的繼承方式,根據(jù)這兩個因素共同決定基類成員在派生類中的訪問屬性。所以本題選擇C)。4、有如下程序:#includeusingnamespacestd;classA{public:virtualvoidfunc1(){cout<<"A1";}voidfunc2(){cout<<"A2";}};classB:publicA{public:voidfunc1(){cout<<"B1";}voidfunc2(){cout<<"132";}};intmain(){A*p=newB;p->func1();p->func2();deletep;return0;}執(zhí)行這個程序的輸出結(jié)果是()。A、B1B2B、A1A2C、B1A2D、A1B2標準答案:C知識點解析:本題考查虛函數(shù)。虛函數(shù)指在基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數(shù)。題中定義了一個派生類對象B,并使用類A的對象指針指向B,由于基類A中的func1為虛函數(shù),所以會執(zhí)行派生類的func1,輸出B1,而基類中的func2不是虛函數(shù),所以p->func2()會執(zhí)行基類的func2,輸出A2。故答案為C。5、以下數(shù)據(jù)結(jié)構(gòu)中,屬于非線性數(shù)據(jù)結(jié)構(gòu)的是()。A、棧B、線性表C、隊列D、二叉樹標準答案:D知識點解析:二叉樹屬于非線性結(jié)構(gòu)。棧是一種特殊的線性表,這種線性表只能在固定的一端進行插入和刪除操作;隊列可看作是插入在一端進行,刪除在另一端進行的線性表。6、將E-R圖轉(zhuǎn)換為關(guān)系模式時,實體和聯(lián)系都可以表示為()。A、屬性B、鍵C、關(guān)系D、域標準答案:C知識點解析:從E-R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實體與聯(lián)系都可以表示成關(guān)系,E-R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性。7、下列關(guān)于構(gòu)造函數(shù)的描述中,錯誤的是()。A、構(gòu)造函數(shù)可以設(shè)置默認的參數(shù)B、構(gòu)造函數(shù)在定義類對象時自動執(zhí)行C、構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù)D、構(gòu)造函數(shù)不可以重載標準答案:D知識點解析:在一個類中可以定義多個構(gòu)造函數(shù),以便對類對象提供不同的初始化的方法,供用戶選用。這些構(gòu)造函數(shù)具有相同的名字,而參數(shù)的個數(shù)或參數(shù)的類型不相同。8、以下程序的輸出的結(jié)果是()。#includevoidmain(){inta,b,C,d(5);c=2,c+=10;a=b=10:a*=2:b/=2:c%=2:cout<A、20,5,0B、20,7,0C、20,5,1D、5,20,0標準答案:A知識點解析:c+=10使得c=12;a=b=10,a*=2使得a=20;b/=2,b=10/2,使得b=5;c=12%2=0,所以輸出值20,5,0。9、設(shè)有如下關(guān)系表:則下列操作正確的是()。A、T=R/SB、T=R×SC、T=R∩SD、T=R∪S標準答案:C知識點解析:T就是關(guān)系R中有的,同時S中也有的有序組(4、5、6),即交運算(n)。10、有如下兩個類定義:classXX{private:doublex1;protected:doublex2;public:doublex3;};classYY:protectedXX{private:doubley1;protected:doubley2;public:doubley3;};在類YY中保護成員變量的個數(shù)是()。A、1B、2C、3D、4標準答案:C知識點解析:本題考杏保護繼承中派生類對基類的訪問屬性,在受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,所以基類的成員x2、x3變成了保護成員,派生類中的y2也是保護成員,所以共有3個保護成員。本題答案為C。11、下列選項中屬于面向?qū)ο笤O(shè)計方法主要特征的是()。A、繼承B、自頂向下C、模塊化D、逐步求精標準答案:A知識點解析:面向?qū)ο蠡痉椒ǖ幕靖拍钣袑ο?、類和實例、消息、繼承與多態(tài)性,所以選擇A。12、下列選項中不屬于字符常量的是()。A、’C’B、CC、’\xCC’D、’\072’標準答案:B知識點解析:字符常量是用一對單弓I號括起來的,而字符串常量是用雙引號括起來的字符序列,所以選項B不正確;選項C中’\xCC’是十六進制表示的轉(zhuǎn)義字符;選項D中’\072’是八進制表示的轉(zhuǎn)義字符。13、下列關(guān)于常成員的敘述中,正確的是()。A、常成員函數(shù)只能由常對象調(diào)用B、常成員函數(shù)不能更新對象的狀態(tài)C、常數(shù)據(jù)成員可以被類對象共享D、常數(shù)據(jù)成員可以在構(gòu)造函數(shù)體中初始化標準答案:B知識點解析:常對象只能調(diào)用常成員函數(shù),普通對象可以調(diào)用全部成員函數(shù),包括常成員函數(shù),選項A錯誤;常成員函數(shù)不能改變所操作對象的數(shù)據(jù)成員,即常成員函數(shù)不能更新對象的狀態(tài),選項B正確;常數(shù)據(jù)成員是指在類定義中不能修改其值的數(shù)據(jù)成員,它和普通類成員一樣,不能被所有類對象共享,選項C錯誤;類中的常數(shù)據(jù)成員只能通過構(gòu)造函數(shù)的參數(shù)初始化列表進行初始化,選項D錯誤。故本題答案為B選項。14、大學中每個年級有多個班,每個班有多名學生,則實體班級和實體學生之間的聯(lián)系是()。A、一對多B、一對一C、多對一D、多對多標準答案:A知識點解析:實體集之間通過聯(lián)系來建立聯(lián)接關(guān)系分為三類:一對一聯(lián)系(1:1)、一對多聯(lián)系(1:m)、多對多聯(lián)系(m:n)。每個班有多名學生,但每個學生只能在一個班級里,故實體班級和實體學生之間的聯(lián)系是一對多,故A選項正確。15、派生類的構(gòu)造函數(shù)的成員初始化列表中,不能包含()。A、基類的構(gòu)造函數(shù)B、派生類中子對象的初始化C、基類中子對象的初始化D、派生類中一般數(shù)據(jù)成員的初始化標準答案:C知識點解析:在定義派生類的構(gòu)造函數(shù)時,除了對自己的數(shù)據(jù)成員進行初始化外,還必須負責調(diào)用基類的構(gòu)造函數(shù)使基類的數(shù)據(jù)成員得以初始化。如果派生類中還有子對象,還應包含對子對象初始化的構(gòu)造函數(shù)。16、在類中說明的成員可以使用關(guān)鍵字的是()。A、publicB、externC、cpuD、register標準答案:A知識點解析:extern用于聲明外部變量的,register聲明寄存器類型變量,無cpu類型。它們都不能聲明類成員。public聲明為公有訪問權(quán)限。17、有如下頭文件:intf1();staticintf2();classMA{public:intf3();staticintf4();friendintf1();friendstaticintf2();};在所描述的函數(shù)中,具有隱含的this指針的是A、f1B、f2C、f3D、f4標準答案:C知識點解析:類的非靜態(tài)成員函數(shù)都隱含this指針,靜態(tài)成員是類的組成部分,不是任何對象的組成部分,因此靜態(tài)成員函數(shù)沒有this指針,選項D錯誤;友元函數(shù)不屬于成員函數(shù),沒有this指針,選項A、B錯誤;答案為C。18、派生類的成員函數(shù)不能訪問基類的()。A、公有成員和保護成員B、公有成員C、私有成員D、保護成員標準答案:C知識點解析:本題考查3種繼承方式,其中,基類的私有成員始終為基類私有。所以派生類無法訪問基類的私有成員。本題答案為C。19、程序調(diào)試的任務是()。A、設(shè)計測試用例B、驗證程序的正確性C、發(fā)現(xiàn)程序中的錯誤D、診斷和改正程序中的錯誤標準答案:D知識點解析:程序調(diào)試的任務是診斷和改正程序中的錯誤。20、一個教師可講授多門課程,一門課程可由多個教師講授。則實體教師和課程間的聯(lián)系是()。A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系標準答案:D知識點解析:因為一個教師可講授多門課程,而一門課程又能由多個老師講授所以他們之間是多對多的關(guān)系,可以表示為m:n。21、軟件測試的目的是()。A、評估軟件可靠性B、發(fā)現(xiàn)并改正程序中的錯誤C、改正程序中的錯誤D、發(fā)現(xiàn)程序中的錯誤標準答案:D知識點解析:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程,測試要以查找錯誤為中心,而不是為了演示軟件的正確功能。不是為了評估軟件或改正錯誤。22、下列C++流的操作符中,能夠設(shè)置浮點數(shù)精度的是A、setprecisionB、setwC、setfillD、showpoint標準答案:A知識點解析:本題考查浮點型數(shù)據(jù)輸出精度,setprecision用來設(shè)置浮點精度,A選項正確。23、要利用C++流進行文件操作,必須在程序中包含的頭文件是A、iomanipB、fstreamC、strstreamD、cstdlib標準答案:B知識點解析:iomanip是I/O流控制頭文件;strstream是輸入輸出字符串流頭文件;cstdlib是常用函數(shù)庫,提供一些函數(shù)和符號常量;選項A、C、D錯誤;fstream是輸入輸出文件流頭文件,答案為B。24、若實體A和B是一對多的聯(lián)系,實體B和C是一對一的聯(lián)系,則實體A和C的聯(lián)系是A、一對一B、一對多C、多對一D、多對多標準答案:B知識點解析:A和B為一對多的聯(lián)系,則對于A中的每一個實體,B中有多個實體與之聯(lián)系,而B與C為一對一聯(lián)系,則對于B中的每一個實體,C中之多有一個實體與之聯(lián)系,則可推出對于A中的每一個實體,C中有多個實體與聯(lián)系,所以為一對多聯(lián)系。25、下列有關(guān)類成員的敘述中,錯誤的是A、友元函數(shù)不是類的成員函數(shù)B、類成員的默認訪問權(quán)限是私有的C、類成員函數(shù)必須聲明為公有的D、類的靜態(tài)數(shù)據(jù)成員可以是常成員標準答案:C知識點解析:友元函數(shù)不是類的成員函數(shù),選項A正確;類成員的默認訪問權(quán)限是私有的,選項B正確;類的靜態(tài)數(shù)據(jù)成員可以使常成員,選項D正確;類的成員函數(shù)可以聲明為:public、protected和private,選項C錯誤;答案為C。26、下列關(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知識點解析:一般函數(shù)進行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時,是將調(diào)用表達式用內(nèi)聯(lián)函數(shù)體來替換,而不是在定義在另一個函數(shù)體內(nèi),所以A選項錯誤。函數(shù)可以沒有返回值,所以就不需要return了,如果被調(diào)函數(shù)在調(diào)用函數(shù)之前已經(jīng)定義,那么就不需要聲明,所以C選項錯誤,正確選項為D。27、若要為類MyClass重載+、=、<<、==和[]運算符,必須作為MyClass類成員函數(shù)重載的運算符是A、+和=B、=和<<C、==和<<D、=和[]標準答案:D知識點解析:C++規(guī)定,賦值運算符"="、下標運算符"[]"、調(diào)用運算符"()"和成員訪問箭頭運算符"->"必須作為成員函數(shù),將這些運算符重載為非成員函數(shù)將在編譯時標記為錯誤;選項A中,運算符"+"可以作為友元函數(shù)重載;選項B、C中的流運算符"<<"必須作為非成員函數(shù)重載;答案為D。28、當派生類從一個基類保護繼承時,基類中的一些成員在派生類中成為保護成員,這些成員在基類中原有的訪問屬性是A、任何B、私有C、保護或私有D、公有或保護標準答案:D知識點解析:派生類保護繼承基類,那么基類的公用成員和保護成員在派生類中成為保護成員,私有成員不可訪問,所以D選項正確。29、有如下程序:#includeusingnamespacestd;classAA{public:AA(){cout<<"A";}~AA(){cout<<"~A";}};classBB{public:BB(){cout<<"B";}~BB(){cout<<"~B";}};intmain(){AA*pa=newAA;BBb;deletepa;return0;}運行這個程序的輸出是A、AB~A~BB、BA~A~BC、AB~B~AD、BA~B~A標準答案:A知識點解析:main()函數(shù)中首先動態(tài)創(chuàng)建AA類對象,調(diào)用AA類構(gòu)造函數(shù),輸出"A",創(chuàng)建BB類對象,調(diào)用BB類構(gòu)造函數(shù),輸出"B",使用delete顯式銷毀AA類對象,調(diào)用AA類析構(gòu)函數(shù),輸出"~A",程序結(jié)束時,銷毀BB類對象,編譯器自動調(diào)用BB類析構(gòu)函數(shù),輸出"~B",整個程序輸出結(jié)果為:"AB~A~B",答案為A。30、設(shè)變量x和y為整型變量,若有函數(shù)調(diào)用為"fun(&x,&y)",則下列選項中,能夠作為函數(shù)fun原型聲明的是A、voidfun(int&a,int&b);B、voidfun(int&a,int*b);C、voidfun(int*a,int&b);D、voidfun(int*a,int*b)標準答案:D知識點解析:fun(&x,&y),函數(shù)調(diào)用參數(shù)列表中傳遞的是變量x,y的地址,所以函數(shù)原型聲明的形參列表中參數(shù)應該是兩個整型變量地址,A、B、C選項中都包含引用傳遞,不正確;答案為D。31、有如下說明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;則數(shù)值為9的表達式是()。A、*p+9B、*(p+8)C、*p+=9D、p+8標準答案:B知識點解析:本題考查指向數(shù)組的指針,本題中指針變量p指向數(shù)組a,那么*p的值就是1,即表示數(shù)組的第一個元素,那么數(shù)值為9的表達式就是將指針向后移動8個地址,即p+8指向的是數(shù)組元素值為9,所以數(shù)值為9的表達式是*(p+8)。32、有如下程序:#includeusingnamespacestd;intmain(){voidfunction(doubleval);doubleval;function(val);cout<A、編譯出錯,無法運行B、輸出:3C、輸出:3.0D、輸出一個不確定的數(shù)標準答案:D知識點解析:本題考查函數(shù)調(diào)用及傳值方式傳遞參數(shù),執(zhí)行函數(shù)function時,并沒有將3的值傳回來,而val又沒有初始化,所以會輸出一個不確定的值,D選項正確。33、關(guān)于運算符重載,下列表述中正確的是()。A、C++已有的任何運算符都可以重載B、運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C、在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D、可以通過運算符重載來創(chuàng)建C++中原來沒有的運算符標準答案:C知識點解析:重載運算符的規(guī)則如下:①C++不允許用戶自己定義新的運算符,只能對已有的C++運算符進行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數(shù)全部是C++的標準類型。故本題答案為C。34、有如下語句序列:charstr[10];cin>>str;當從鍵盤輸入"Ilovethisgame"時,str中的字符串是()。A、IlovethisgameB、IlovethiC、IloveD、I標準答案:D知識點解析:cin是C++預定義的標準輸入流對象,cin用來接收字符串時,遇"空格"、"TAB"、"回車"時都會結(jié)束。所以本題答案為D。35、下列有關(guān)類成員的敘述中,錯誤的是A、友元函數(shù)不是類的成員函數(shù)B、類成員的默認訪問權(quán)限是私有的C、類成員函數(shù)必須聲明為公有的D、類的靜態(tài)數(shù)據(jù)成員可以是常成員標準答案:C知識點解析:友元函數(shù)不是類的成員函數(shù),選項A正確;類成員的默認訪問權(quán)限是私有的,選項B正確;類的靜態(tài)數(shù)據(jù)成員可以使常成員,選項D正確;類的成員函數(shù)可以聲明為:public、protected和private,選項C錯誤;答案為C。36、下列有關(guān)類繼承的表述中,錯誤的是A、派生類可以繼承多個基類B、派生類構(gòu)造函數(shù)要負責調(diào)用基類的構(gòu)造函數(shù)C、虛基類可以解決由多繼承產(chǎn)生的二義性問題D、虛基類可以解決由多繼承產(chǎn)生的二義性問題標準答案:D知識點解析:多繼承機制中,派生類可以繼承多個基類,選項A正確;派生類構(gòu)造函數(shù)通常在初始化列表中調(diào)用基類構(gòu)造函數(shù),選項B正確;虛基類就是為了解決多繼承產(chǎn)生的二義性問題而設(shè)計的,選項C正確;派生類繼承基類的所有成員,選項D錯誤;答案為D。二、基本操作題(本題共1題,每題1.0分,共1分。)37、請打開考生文件夾下的解決方案文件proj1,程序中位于每個“//ERROR****found****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應為:value=63number=1注意:只修改每個“//ERROR****found****”下的那一行,不要改動程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classMyClass{int*p;constintN;public://ERROR*******found*******MyClass(intval):N=1{P=newint;*P=val;}//ERROR*******found*******~MyClass(){delete*p;}friendvoidprint(MyClasS&obj);};//ERROR*******found*******voidMyClass::print(MyClass&obj){cout<<"value="<<*(obj.p)<<endl;cout<<"number="<<obj.N<<endl;}intmain(){MyClassobj(63);print(obj);return0;}標準答案:(1)MyClass(intval):N(1)(2)~MyClass(){delete[]p;}(3)voidprint(MyClass&obj)知識點解析:(1)主要考查考生對構(gòu)造函數(shù)的掌握,在這里不能使用賦值語句。(2)主要考查考生對析構(gòu)函數(shù)的掌握,析構(gòu)函數(shù)的delete語句要使用標識符“[]”,即delete[]p;。(3)主要考查考生對友元函數(shù)的掌握,友元函數(shù)并不屬于類,因此定義時前面不用加類名和作用域符號。三、簡單應用題(本題共1題,每題1.0分,共1分。)38、請打開考生文件夾下的解決方案文件proi2,該工程中包含一個程序文件main.cpp,其中有日期類Date、人員類Person及排序函數(shù)sortByName和主函數(shù)main的定義。請在程序中的橫線處填寫適當?shù)拇a并刪除橫線,以實現(xiàn)上述類定義和函數(shù)定義。此程序的正確輸出結(jié)果應為:按姓名排序排序前張三男出生日期:1978年4月20日王五女出生日期:1965年8月3日楊六女出生日期:1965年9月5日李四男出生日期:1973年5月30日排序后:李四男出生日期:1973年5月30日王五女出生日期:1965年8月3日楊六女出生日期:1965年9月5日張三男出生日期:1978年4月20日注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。#include<lostream>usingnamespacestd;classDate{//日期類intyearfmonthfday;//年、月、日public:Date(intyear,intmonth,intday):year(year),month(month),day(day){}intgetYear()const{returnyear;}intgetMonth()const{returnmonth;}intgetDay()const{returnday;}};classPerson{//人員類charname[14];//姓名boolis_male;//性別,為true時表示男性Datebirth_date;//出生日期public:Person(char*name,boolis_male,Datebirthdate)//**********found**********:_____________{strcpy(this一>name,name);}constchar*getName()const{returnname;}boolisMale()const{returnismale;}DategetBirthdate()const{returnbirthdate;}//利用strcmp()函數(shù)比較姓名,返回一個正數(shù)、0或負數(shù),分別表示大于、等于、小于intcompareName(constPerson&p)const{//**********found**********_______]}voidshow(){cout<<endl;cout<<name<<"<<(ismale?"男":"女")<<"<<"出生日期:"<<birthdate.getYear()<<"年"//顯示出生年//**********found**********___________//顯示出生月<<birth_date.getDay()<<"日";//顯示出生日}};voidsortByName(Personps[],intsize){//將人員數(shù)組按姓名排列為升序for(inti=0;i<size一1;i++){//采用選擇排序算法intm=i;for(intj=i+1;j<size;j++)if(ps[j].compareName(ps[m])<0)m=j;if(m>i){Personp=ps[m];Ps[m]=ps[i];Ps[i]=p;}}}intmain(){Personstaff[]={Person("張三",true,Date(1978,4,20)),Person("王五",false,Date(1965,8,3)),Person("楊六",false,Date(1965,9,5)),Person("李四",true,Date(1973,5,30))};constintsize=sizeof(staff)/sizeof(staff[0]);inti;cout<<endl<<"按姓名排序";cout<<endl<<"排序前";for(i=0;i<size;i++)staff[i].show();sortByName(staff,size);cout<<endl<<endl<<"排序后:";for(i=0;i<size;i++)staff[i].show();cout<<endl;return0;}標準答案:(1)is_male(is_male),binh_date(binh_date)(2)returnstrcmp(name,p.getName());(3)<<binh_date.getMonth()<<"月"知識點解析:(1)主要考查考生對構(gòu)造函數(shù)的掌握,由函數(shù)體內(nèi)strcpy(this一>name,name);可知,要使用成員列表初始化的成員為is_male和birth_date。(2)主要考查考生對strcmp()函數(shù)的掌握,先看程序?qū)υ摵瘮?shù)的功能要求:利用strcmp()函數(shù)比較姓名,返回一個正數(shù)、0或負數(shù),分別表示大于、等于、小于。因為strcmp()函數(shù)的功能是比較字符串大小,因此可以直接被return語句調(diào)用:returnstrcmp(name,p.getName());。(3)主要考查考生對成員函數(shù)的掌握,程序的注釋為:顯示出生月,由此可以知道這里要輸出出生月份,直接調(diào)用函數(shù)getMonth()即可。四、綜合應用題(本題共1題,每題1.0分,共1分。)39、請打開考生文件夾下的解決方案文件proj3,其中定義的Matrix是一個用于表示矩陣的類。成員函數(shù)max_value的功能是求出所有矩陣元素中的最大值。例如,若有3×3矩陣則調(diào)用max_value函數(shù),返回值為3。請編寫成員函數(shù)max_value。要求:補充編制的內(nèi)容寫在“//********333********”與“//********666********”之間,不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件,并且在本程序中調(diào)用。//Matrix.h#include<iostream>{}include<iomanip>usingnamespacestd;constintM=18;constintN=18;classMatrix{intarray[M][N];public:Matrix(){}intgetElement(inti,intj)const{returnarray[i][j];}voidsetElement(inti,intj,intvalue){array[i][j]=value;}intmax_value()const;voidshow(constchar*s)const{cout<<endl<<s;for(inti=0;i<M;i++){cout<<endl;for(intj=0;j<N;j++)cout<<setw(4)<<array[i][j];}}};voidreadFromFile(constchar*,Matrix&);voidwriteToFile(char*,constMatrix&);//main.cpp#include"Matrix.h"#include<fstream>voidreadFromFile(constchar*f,Matrix&m){ifstreaminfile(f);if(infile.fail()){cerr<<"打開輸入文件失敗!";return;}intk;for(inti=0;i<M;i++)for(intj=0;j<N;j++){infile>>k;m.setElement(i,j,k);}}intMatrix::maxvalue()const{//********333********//********666********}intmain(){Matrixm;readFromFile("",m);m.show("Matrix:");cout<<endl<<"最大元素:"<<m.maxvalue()<<endl;writeToFile("",m);return0;}標準答案:1Inttemp=0;//定義整數(shù)變量temp,并賦值為零2for(inti=0;i<M;i++)//遍歷矩陣的行3for(intj=0;j<N;j++)//遍歷短陣的列4if(temp<array[i][j])//如果temp小于array[i][j]5temp=array[i][j];//把array[i][j]賦值給temp6returntemp;//返回temp知識點解析:主要考查考生對二維數(shù)組的掌握,題目要求成員函數(shù)max_value的功能是求出所有矩陣元素中的最大值。因此只要逐個元素比較即可,下標i和j作為矩陣行和列的標記,使用雙層for循環(huán)來遍歷數(shù)組中的所有元素。國家二級(C++)機試模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列運算符不能重載為友元函數(shù)的是()。A、=()()->B、+-++--C、><>=<=D、+=-=*=/=標準答案:A知識點解析:關(guān)于運算符重載為友元函數(shù)有如下規(guī)定:①一般情況下,單目運算符最好重載為類的成員函數(shù),雙目運算符則最好重載為類的友元函數(shù);②雙目運算符“=、()、[]、->”不能重載為類的友元函數(shù)。所以本題答案為A。2、C++語言程序是從()函數(shù)開始執(zhí)行的。A、iosB、mainC、listD、temp標準答案:B知識點解析:所有的C++語言程序都是從main函數(shù)開始執(zhí)行,而普通函數(shù)的存在是為了簡化main函數(shù)的復雜程度。3、有如下類定義:classPoint{intxx,yy;public:Point():xx(0),YY(0){}Point(intx,inty=0):xx(x),yy(y){}};若執(zhí)行語句Pointa(2),b[3],*c[4];則Point類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是()。A、2次B、3次C、4次D、5次標準答案:C知識點解析:本題考查默認構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù),題目中定義一個對象a(2)以及對象數(shù)組b[3],共執(zhí)行4次構(gòu)造函數(shù),對象指針不調(diào)用構(gòu)造函數(shù)。所以本題答案為C。4、有如下程序段:inti=0,j=1;int&r=i;//①r=j;//②int*p=&i;//③*p=&r;//④其中會產(chǎn)生編譯錯誤的語句是()。A、④B、③C、⑦D、①標準答案:A知識點解析:本題考查指針和引用。①為引用,使用正確;④中&r表示一個地址,而*p已經(jīng)是一個值了,不能將一個指針賦值給一個值,所以編譯錯誤。5、下列運算符函數(shù)中肯定不屬于類FunNumber。的成員函數(shù)的是()。A、intoperator-(FunNumber);B、FunNumberoperator-();C、FunNumberoperator-(int);D、intoperator-(FunNumber,F(xiàn)unNumber);標準答案:D知識點解析:本題考查運算符重載的一些規(guī)則:①一般情況下,單目運算符最好重載為類的成員函數(shù),雙目運算符則最好重載為類的友元函數(shù);②雙目運算符=、()、[]、->不能重載為類的友元函數(shù);③類型轉(zhuǎn)換函數(shù)只能定義為一個類的成員函數(shù),而不能定義為類的友元函數(shù);④若一個運算符的操作需要修改對象的狀態(tài),選擇重載為成員函數(shù)較好;⑤若運算符所需的操作數(shù)(尤其是第一個操作數(shù))希望有隱式類型轉(zhuǎn)換,則只能選用友元函數(shù);⑥當運算符函數(shù)是一個成員函數(shù)時,最左邊的操作數(shù)(或者只有最左邊的操作數(shù))必須是運算符類的一個類對象(或者是對該類對象的引用);如果左邊的操作數(shù)必須是一個不同類的對象,或者是一個內(nèi)部類型的對象,該運算符函數(shù)必須作為一個友元函數(shù)來實現(xiàn)。所以答案為D。6、軟件的組成不包括()。A、代碼B、數(shù)據(jù)C、程序D、文檔標準答案:A知識點解析:參考軟件的定義。7、在E-R圖中,用來表示實體聯(lián)系的圖形是()。A、橢圓形B、矩形C、菱形D、三角形標準答案:C知識點解析:在E-R圖中實體集用矩形,屬性用橢圓,聯(lián)系用菱形。8、下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是()。A、循環(huán)隊列B、帶鏈隊列C、二叉樹D、帶鏈棧標準答案:C知識點解析:樹是簡單的非線性結(jié)構(gòu),所以二叉樹作為樹的一種也是一種非線性結(jié)構(gòu)。9、下列變量名中,合法的()。A、CHINAB、byte-sizeC、doubleD、A+a標準答案:A知識點解析:變量的定義要符合標識符的定義規(guī)則。選項B)byte-size中含有不合法的字符“.”;選項C)中的變量名是C++中的保留字;選項D)變量名中同樣含有非法的字符“+”;只有選項A)符合要求。10、對C++編譯器區(qū)分重載函數(shù)無任何意義的信息是()。A、參數(shù)類型B、參數(shù)個數(shù)C、返回值類型D、常成員函數(shù)關(guān)鍵字const標準答案:C知識點解析:所謂函數(shù)重載是指同一個函數(shù)名可以對應多個函數(shù)的實現(xiàn)。每種實現(xiàn)對應一個函數(shù)體,這些函數(shù)的名字相同,其參數(shù)類型或個數(shù)不同,但不能出現(xiàn)函數(shù)返回值類型不同而參數(shù)類型和個數(shù)完全相同的重載。所以本題答案為C。11、下列符號中能夠作為C++標識符的是()。A、constB、2aC、_shapeD、_count標準答案:C知識點解析:本題考查C++標識符的命名規(guī)則,其規(guī)則有如下幾點:①所有標識符必須由字母、數(shù)字或下畫線組成,且必須由字母或下畫線開頭;②所有標識符不能使用C++已有的關(guān)鍵字;③大、小寫字母表示不同意義,即代表不同的標識符。選項A是關(guān)鍵字,選項B不能以數(shù)字開頭,選項D包含了字符"-",且不能以此字符開頭。故答案為C。12、若要對Data類中重載的加法運算符成員函數(shù)進行聲明,下列選項中正確的是()。A、Data+(Data);B、Dataoperator+(Data);C、Data+operator(Data);D、operator+(Data,Data.);標準答案:B知識點解析:根據(jù)重載加法運算符的格式,只有B選項正確。13、有三個關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、自然連接B、交C、投影D、并標準答案:A知識點解析:自然連接是一種特殊

溫馨提示

  • 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

提交評論