國(guó)家二級(jí)(C++)機(jī)試模擬試卷9(共130題)_第1頁(yè)
國(guó)家二級(jí)(C++)機(jī)試模擬試卷9(共130題)_第2頁(yè)
國(guó)家二級(jí)(C++)機(jī)試模擬試卷9(共130題)_第3頁(yè)
國(guó)家二級(jí)(C++)機(jī)試模擬試卷9(共130題)_第4頁(yè)
國(guó)家二級(jí)(C++)機(jī)試模擬試卷9(共130題)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)(C++)機(jī)試模擬試卷9(共6套)(共130題)國(guó)家二級(jí)(C++)機(jī)試模擬試卷第1套一、程序改錯(cuò)題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的工程test1_1,此工程包含一個(gè)源程序文件test1_1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正main函數(shù)中的錯(cuò)誤,使該程序的輸出結(jié)果如下:Constructorcalled.Defaultconstructorcalled.Areais6Areais0Areais6源程序文件test1_1,cpp清單如下:#include<iostream.h>classRectAngle{private:doubleledge,sedge;public:RectAngle(){cout<<"Defaultconstructorcalled.";}RectAngle(doublel,doubles){ledge=l;sedge=s;cout<<"Constructorcalled.";}voidSet(doublel,doubles){ledge=l;sedge=s;}voidArea(){cout<<"Areais"<<ledge*sedge<<endl;}};voidmain(){/*****************found*****************/RectAngleRect1(2,3);RectAngleRect2(1);/****************found*****************/RectAnglCRect3;Rectl.Area();/*****************found*****************/RecL2.lodge=0;Rect2.sedge=0;Reck2.Area();Rect3.Area();}標(biāo)準(zhǔn)答案:(1)錯(cuò)誤:Rect2(1)正確:Rect2(2)錯(cuò)誤:Rect3正確:Rect3(Rect1)(3)錯(cuò)誤:Rect2.1edge=0;Rect2.sedge=0;正確:Rect2.Set(0,0);知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)于重載構(gòu)造函數(shù)調(diào)用的理解,Rect2應(yīng)該調(diào)用缺省構(gòu)造函數(shù),這里重載的構(gòu)造函數(shù)是以參數(shù)個(gè)數(shù)不同區(qū)分的;一個(gè)是缺省的構(gòu)造函數(shù),即沒(méi)有參數(shù)的;另一個(gè)含有兩個(gè)參數(shù),為了能使“Defaultconstructorcalled.”輸出,應(yīng)該調(diào)用不含有參數(shù)的缺省構(gòu)造函數(shù);(2)主要考查考生是否會(huì)使用缺省的拷貝初始化構(gòu)造函數(shù),這是不出現(xiàn)構(gòu)造函數(shù)被調(diào)用語(yǔ)句的惟一方法,不管使用缺省的構(gòu)造函數(shù)還是含有兩個(gè)參數(shù)的構(gòu)造函數(shù)都會(huì)在屏幕上出現(xiàn)多余的文字,而這些文字只有使用在類(lèi)中沒(méi)有被定義的缺省拷貝初始化構(gòu)造函數(shù)來(lái)聲明一個(gè)新的對(duì)象才不會(huì)出現(xiàn),根據(jù)提示應(yīng)該使用Rect1這個(gè)已有的對(duì)象去初始化Rect3R個(gè)新的對(duì)象,這就是拷貝初始化構(gòu)造函數(shù)的作用,即使用已有的或者已存在的對(duì)象去初始化一個(gè)新的對(duì)象;(3)主要考查考生對(duì)于類(lèi)的對(duì)象訪問(wèn)權(quán)限的掌握,ledge和sedge為類(lèi)的私有成員,不能被類(lèi)的對(duì)象Rect2訪問(wèn),應(yīng)使用成員函數(shù)Set()。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)編寫(xiě)兩個(gè)函數(shù)voidsort(iht&x,&y)和voidsort(intx,inty,intz),實(shí)現(xiàn)對(duì)2個(gè)和3個(gè)元素的排序并在屏幕上輸出排序結(jié)果(數(shù)字之間使用跳格)。注意:部分源程序已存放在文件test2_2.cpp中。請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)的花括號(hào)中填寫(xiě)若干語(yǔ)句。輸出結(jié)果如下:34234文件rest2_2.cpp的內(nèi)容如下:#include<iostream.h>voidsort(int&x,int&y){/**1**/}voidsort(ihtx,inty,intz){/**2**/}voidmain(){inta=4,b=3,c=2;sort(a,b);sort(a,b,C);}標(biāo)準(zhǔn)答案:(1)voidsort(int&X,int&y){intt;if(x>y){t=X;x=y;y=t;}cout<<x<<’\t’<<y<<endl;}(2)voidsort(intx,inty,ihtz){intt;if(x>y){t=x;x=y;y=t;)if(x>z){t=x;x=Z;z=t;)if(y>z){t=y;y=z;z=t;)cout<<x<<’\t’<<y<<’\t’<<z<<endl;知識(shí)點(diǎn)解析:本題考查考生對(duì)函數(shù)重載與引用調(diào)用的掌握。這里的重載是使用不同的參數(shù)個(gè)數(shù),引用調(diào)用的形參使用&符號(hào),實(shí)參直接調(diào)用;if括號(hào)中的語(yǔ)句為真時(shí),執(zhí)行花括號(hào)中的語(yǔ)句,“<<”是流輸出操作,輸出到屏幕上。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的工程test42_3。此工程包含—個(gè)test42_3.cpp,其中定義了類(lèi)Cpolygon、COutput和CTriangle,其中CTriangle類(lèi)由Cpolygon和COutput類(lèi)public派生,但三個(gè)類(lèi)的定義并不完整。請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。(1)定義類(lèi)CPolygon的保護(hù)數(shù)據(jù)成員width和height,它們都是int型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類(lèi)CPolygon的成員函數(shù)set_values(inta,intb),使參數(shù)a和b分別賦值給保護(hù)數(shù)據(jù)成員width和height,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類(lèi)Coutput的成員函數(shù)output(int)的定義,將傳入的參數(shù)為血型的i輸出到屏幕并換行,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成派生類(lèi)CTriangle的聲明,它由Cpolygon和COutput類(lèi)public派生,請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z(yǔ)句。源程序文件test42_3.cpp清單如下:#include<iostream.h>classCPolygon{protected://**1**public:voidset_values(inta,intb){//**2**}};classCOutput{public:voidoutput(inti);};voidCOutput::output(inti){//**3**}//**4**{public:intarea(void){return(width*height/2);}}intmain(){CTriangletrgl;trgl.set_values(4,5);trgl.output(trgl.area());return0;}標(biāo)準(zhǔn)答案:(1)intwidth,height;(2)width=a;height=b;(3)cout<<i<<endl;(4)classCTriangle:publicCPolygon,publicCoutput知識(shí)點(diǎn)解析:主要考查考生對(duì)于類(lèi)的定義和派生類(lèi)聲明的掌握,其中(4)中對(duì)于多繼承的聲明按照如下的格式:關(guān)鍵字class派生類(lèi)名:繼承方式繼承類(lèi)名,繼承方式繼承類(lèi)名,在多繼承中,一定要注意防止程序的二義性,同時(shí)要善于利用基類(lèi)中已經(jīng)定義的方式,才能達(dá)到代碼復(fù)用的作用。國(guó)家二級(jí)(C++)機(jī)試模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列關(guān)于棧敘述正確的是()。A、棧頂元素最先能被刪除B、棧頂元素最后才能被刪除C、棧底元素永遠(yuǎn)不能被刪除D、以上三種說(shuō)法都不對(duì)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:棧是限定在一端進(jìn)行插入刪除的先入后出的線性表數(shù)據(jù)結(jié)構(gòu),棧頂元素最后被插入到棧中,但是最先被刪除;而棧底元素最先被插入,最后被刪除。2、下列敘述中正確的是()。A、有一個(gè)以上根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)B、只有一個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)C、循環(huán)鏈表是非線性結(jié)構(gòu)D、雙向鏈表是非線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:線性表的特點(diǎn)是在數(shù)據(jù)元素的非空有限集合中①存在唯一的一個(gè)被稱(chēng)為“第一個(gè)”的數(shù)據(jù)元素;②存在唯一一個(gè)被稱(chēng)為“最后一個(gè)”的數(shù)據(jù)元素;③除第一個(gè)以外,集合中的每個(gè)數(shù)據(jù)元素均只有一個(gè)后繼;④除最后一個(gè)以外,集合中的每個(gè)數(shù)據(jù)元素均只有一個(gè)后繼。因此,雙向表是非線性結(jié)構(gòu)。3、某二叉樹(shù)共有7個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有1個(gè),則該二叉樹(shù)的深度為(假設(shè)根結(jié)點(diǎn)在第1層)()。A、3B、4C、6D、7標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:對(duì)于任意一棵二叉樹(shù)T,如果葉子結(jié)點(diǎn)數(shù)為n0,度為2的結(jié)點(diǎn)數(shù)為n2,則二者之間的關(guān)系是n0=n2+1,該題中度為2的結(jié)點(diǎn)數(shù)為0,且只有一個(gè)葉子結(jié)點(diǎn),因此,樹(shù)中度為1的結(jié)點(diǎn)有6個(gè),很容易想到樹(shù)的高度為7。4、在軟件開(kāi)發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、軟件集成測(cè)試計(jì)劃B、軟件詳細(xì)設(shè)計(jì)說(shuō)明書(shū)C、用戶(hù)手冊(cè)D、軟件需求規(guī)格說(shuō)明書(shū)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:需求分析階段只能產(chǎn)生需求分析規(guī)格說(shuō)明書(shū)。A測(cè)試說(shuō)明書(shū)是軟件測(cè)試階段生成的;B軟件詳細(xì)設(shè)計(jì)說(shuō)明書(shū)是設(shè)計(jì)階段生產(chǎn);C用戶(hù)手冊(cè)是軟件發(fā)布時(shí)隨軟件一同交付給用戶(hù)的。5、結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括()。A、順序結(jié)構(gòu)B、GOTO跳轉(zhuǎn)C、選擇(分支)結(jié)構(gòu)D、重復(fù)(循環(huán))結(jié)構(gòu)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:結(jié)構(gòu)化程序設(shè)計(jì)的3種結(jié)構(gòu)是,順序、分支和循環(huán),不包括goto跳轉(zhuǎn),它只是分支結(jié)構(gòu)的一種,也是一個(gè)關(guān)鍵字。6、下面描述中錯(cuò)誤的是()。A、系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細(xì)設(shè)計(jì)B、軟件設(shè)計(jì)是將軟件需求轉(zhuǎn)換為軟件表示的過(guò)程C、數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫(kù)設(shè)計(jì)是軟件設(shè)計(jì)的任務(wù)之一D、PAD圖是軟件詳細(xì)設(shè)計(jì)的表示工具標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件系統(tǒng)的總體結(jié)構(gòu)圖是軟件架構(gòu)設(shè)計(jì)的依據(jù),它并不能支持軟件的詳細(xì)設(shè)計(jì)。7、負(fù)責(zé)數(shù)據(jù)庫(kù)中查詢(xún)操作的數(shù)據(jù)庫(kù)語(yǔ)言是()。A、數(shù)據(jù)定義語(yǔ)言B、數(shù)據(jù)管理語(yǔ)言C、數(shù)據(jù)操縱語(yǔ)言D、數(shù)據(jù)控制語(yǔ)言標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)操縱語(yǔ)言專(zhuān)門(mén)負(fù)責(zé)查詢(xún)、增加、刪除等數(shù)據(jù)操作。8、一個(gè)教師可講多門(mén)課程,一門(mén)課程可由多個(gè)教師講授,則實(shí)體教師和課程間的聯(lián)系是()。A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:一個(gè)教師可以上多門(mén)課程,一門(mén)課程也可以由多個(gè)教師教授,這是典型的多對(duì)多的E—R關(guān)系。9、有3個(gè)關(guān)系R、S和T如下表所示:則由關(guān)系R和S得到關(guān)系的操作是()。A、自然連接B、交C、除D、并標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:S中的關(guān)系全部出現(xiàn)在R中,只有做除法操作才會(huì)出現(xiàn)關(guān)系T。10、定義無(wú)符號(hào)整數(shù)為Uint,下面可以作為類(lèi)Uint實(shí)例化值的是()。A、-369B、369C、0.369D、整數(shù)集合{1,2,3,4,5}標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:A是有符號(hào)數(shù),C是浮點(diǎn)數(shù),D是結(jié)合并不是類(lèi)的實(shí)例化對(duì)象,只有B完全符合。11、軟件工程理論和技術(shù)性研究的內(nèi)容主要包括軟件開(kāi)發(fā)技術(shù)和()。A、消除軟件危機(jī)B、軟件工程管理C、程序設(shè)計(jì)自動(dòng)化D、實(shí)現(xiàn)軟件可重用標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:基于軟件工程的目標(biāo),軟件工程理論和技術(shù)性研究的內(nèi)容主要包括軟件開(kāi)發(fā)技術(shù)和軟件工程管理。12、在面向?qū)ο蠓椒ㄖ校粋€(gè)對(duì)象請(qǐng)求另一個(gè)對(duì)象為其服務(wù)的方式是通過(guò)發(fā)送()。A、調(diào)用語(yǔ)B、命令C、H令D、消息標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在面向?qū)ο蠓椒ㄖ?,?duì)象之間通過(guò)消息進(jìn)行通信。消息中只包含傳遞者的要求,但并不指示接收者應(yīng)該怎么完成這些處理。13、下列選項(xiàng)中,屬于軟件調(diào)試技術(shù)的是()。A、錯(cuò)誤推斷B、集成測(cè)試C、回溯法D、邊界值分析標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:軟件調(diào)試技術(shù)包括強(qiáng)行排錯(cuò)法、回溯法和原因排除法。邊界值分析、錯(cuò)誤推斷都是黑盒測(cè)試的方法。14、使用表設(shè)計(jì)器定義表中字段時(shí),不是必須設(shè)置的內(nèi)容是()。A、字段名B、數(shù)據(jù)類(lèi)型C、說(shuō)明D、以上都必須設(shè)置標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在使用表設(shè)計(jì)器定義表中的字段時(shí),必須指定字段名、數(shù)據(jù)類(lèi)型和字段屬性,而說(shuō)明可以不指定。15、下列不是創(chuàng)建表結(jié)構(gòu)的視圖形式的是()。A、數(shù)據(jù)庫(kù)視圖B、表向?qū)б晥DC、設(shè)計(jì)視圖D、數(shù)據(jù)表視圖標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:創(chuàng)建表結(jié)構(gòu)的方法有數(shù)據(jù)表視圖、設(shè)計(jì)視圖和表向?qū)б晥D3種;而數(shù)據(jù)庫(kù)視圖是用來(lái)創(chuàng)建數(shù)據(jù)庫(kù)的。16、為了提高函數(shù)調(diào)用的實(shí)際運(yùn)行速度,可以將較簡(jiǎn)單的函數(shù)定義為()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸函數(shù)D、函數(shù)模板標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:內(nèi)聯(lián)函數(shù)一般是程序代碼少于10行的函數(shù),在編譯過(guò)程中,直接在調(diào)用點(diǎn)處被展開(kāi),不會(huì)因函數(shù)調(diào)用帶來(lái)巨大的系統(tǒng)開(kāi)銷(xiāo),因此能提高實(shí)際運(yùn)行速度。17、若AA為一個(gè)類(lèi),a為該類(lèi)的非靜態(tài)數(shù)據(jù)成員,在該類(lèi)的一個(gè)成員函數(shù)定義中訪問(wèn)a時(shí),其書(shū)寫(xiě)格式為()。A、aB、A.A.aC、a{}D、AA::a{}標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:a是類(lèi)AA的非靜態(tài)數(shù)據(jù)成員,在類(lèi)AA的成員函數(shù)中可以直接訪問(wèn)。B是訪問(wèn)靜態(tài)數(shù)據(jù)成員的方式,C和D都是訪問(wèn)函數(shù)的方式。18、當(dāng)派生類(lèi)從一個(gè)基類(lèi)保護(hù)繼承時(shí),基類(lèi)中的一些成員在派生類(lèi)中成為保護(hù)成員,這些成員在基類(lèi)中原有的訪問(wèn)屬性是()。A、任何B、公有或保護(hù)C、保護(hù)或私有D、私有標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:保護(hù)繼承時(shí)基類(lèi)的public和protected是保護(hù)的,私有繼承時(shí)基類(lèi)的public和protected是私有的。19、若要對(duì)Date類(lèi)中重載的加法運(yùn)算符成員函數(shù)進(jìn)行聲明,則下列選項(xiàng)中正確的是()。A、Data+(Data);B、Dataoperator+(Data)C、Data+operator(Data);D、operator+(Data.Data)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:重載運(yùn)算符的函數(shù)一般格式如下:函數(shù)類(lèi)型operator運(yùn)算符名稱(chēng)(形參列表)因此選B。20、下列關(guān)于函數(shù)模板的描述中,正確的是()。A、函數(shù)模板是一個(gè)實(shí)例函數(shù)B、使用函數(shù)模板定義的函數(shù)沒(méi)有返回類(lèi)型C、函數(shù)模板的類(lèi)型參數(shù)與函數(shù)的參數(shù)相同D、通過(guò)使用不同的類(lèi)型參數(shù),可以從函數(shù)模板得到不同的實(shí)例函數(shù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:函數(shù)模板只是聲明了一個(gè)函數(shù)的描述即模板,不是一個(gè)可以直接執(zhí)行的函數(shù),只有根據(jù)實(shí)際情況用實(shí)參的數(shù)據(jù)類(lèi)型參數(shù)標(biāo)識(shí)符之后,才能產(chǎn)生真正的函數(shù)。21、C++系統(tǒng)預(yù)定義了3個(gè)用于標(biāo)準(zhǔn)數(shù)據(jù)流的對(duì)象,下列選項(xiàng)中不屬于此類(lèi)對(duì)象的是()。A、coutB、cinC、cerrD、cset標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C++的標(biāo)準(zhǔn)數(shù)據(jù)流對(duì)象有3個(gè):cout標(biāo)注輸出流,cin標(biāo)準(zhǔn)輸入流,cerr標(biāo)準(zhǔn)錯(cuò)誤流。22、Windows環(huán)境下,由C++源程序文件編譯而成的目標(biāo)文件的擴(kuò)展名是()。A、cppB、exeC、objD、lik標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:cpp是C++源文件的擴(kuò)展名;exe是可執(zhí)行文件的擴(kuò)展名;lik是連接文件的擴(kuò)展名。23、字符串“a+b=12\n\t”的長(zhǎng)度為()。A、12B、10C、8D、6標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:\n表示回車(chē),\t是制表符。24、有如下程序:#includeusingnamespacestd;intmain(){intf,f1=0,f2=1;for(inti=3;i<=6;i++){f=f1+f2:f1=f2;f2=f;}cout<A、2B、3C、5D、8標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:循環(huán)3次,分別每次計(jì)算出f1,f2和f的值,該題比較簡(jiǎn)單,只需要細(xì)心即可。25、有如下程序:#includeusingnamespacestd;intmain(){inta[6]={23,15,64,33,40,58);ints1,s2;s1=s2=a[0];for(int*p=a+1;p<a+6;p++){if(s1>*p)s1=*p;if(s2<*p)s2=*p;)cout<A、23B、58C、64D、79標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:根據(jù)程序的意思,找出數(shù)組a中最大值s1和最小值s2并計(jì)算二者的和。26、有如下程序:#includeusingnamespacestd;voidfl(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<A、10B、16C、26D、36標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:該題考查了函數(shù)參數(shù)傳遞的兩種方式:引用傳遞和值傳遞,引用傳遞時(shí)x和y會(huì)交換,而傳值時(shí)二者不交換,因此選10。27、有如下程序:#includeusingnamespacestd;classXA{inta;public:staticintb;XA(intaa):a(aa){b++;}~XA(){}intget(){returna;}};intXA::b=0intmain(){XAd1(1),d2(3);cout<A、5B、6C、7D、8標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:每調(diào)用一次get函數(shù)時(shí),對(duì)新的類(lèi)A對(duì)象進(jìn)行一次實(shí)例化,調(diào)用一次構(gòu)造函數(shù),類(lèi)A的靜態(tài)成員變量b便加1。28、有如下程序:#includeusingnamespacestd;classPoint{intx,y;public:Point(intx1=0,inty1=0):x(x1),y(y1){}intget(){returnx+y;}};classCircle{Pointcenter;intradius;public:Circle(intcx,intcy,intr):center(cx,cy),radius(r){}intget(){returncenter.get()+radius;}};intmain(){Circlec(3,4,5);cout<A、5B、7C、9D、12標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:簡(jiǎn)單類(lèi)之間繼承關(guān)系的調(diào)用,按照通常做法便可以得到答案。center.get()函數(shù)調(diào)用后,3和4的和被返回,接著再調(diào)用Circle類(lèi)的radius成員變量5相加后得到12。29、若是對(duì)類(lèi)BigNumber中重載的類(lèi)型轉(zhuǎn)換運(yùn)算符long進(jìn)行聲明,則下列選項(xiàng)中正確的是()。A、operatorlong()const;B、operatorlong(BigNumber);C、longperatorlong()const;D、longoperatorlong(BigNumber);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C++不僅可以對(duì)運(yùn)算符進(jìn)行重載,還可以重載類(lèi)型轉(zhuǎn)換符,函數(shù)聲明的形式為:operator類(lèi)型符()const。30、有如下函數(shù)模板定義:template<typenameT1,typenameT2>T1-FUN(T2n){returnn*5,0;}若要求以int型數(shù)據(jù)9作為函數(shù)實(shí)參調(diào)用該模板,并返回一個(gè)double型數(shù)據(jù),則該調(diào)用應(yīng)表示為()。A、FUN(9)B、FUN<9>C、FUN(9)D、FUN<9>(double)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)返回類(lèi)型是double型,則T1為double型,T2為int型才符合函數(shù)模板的定義。31、下列語(yǔ)句都是程序運(yùn)行時(shí)的第1條輸出語(yǔ)句,其中一條語(yǔ)句的輸出效果與其他3條語(yǔ)句不同,該語(yǔ)句是()。A、cout<B、cout<C、tout<D、cout<標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:setw(6)將輸出寬度設(shè)為6,如果位數(shù)不夠,則在最左邊補(bǔ)齊,因此該項(xiàng)輸出一定不會(huì)與其他3項(xiàng)一致。32、下列關(guān)于析構(gòu)函數(shù)的描述中,錯(cuò)誤的是()。A、析構(gòu)函數(shù)可以重載B、析構(gòu)函數(shù)由系統(tǒng)自動(dòng)調(diào)用C、每個(gè)對(duì)象的析構(gòu)函數(shù)只被調(diào)用一次D、每個(gè)類(lèi)都有析構(gòu)函數(shù)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:析構(gòu)函數(shù)不能被重載,因?yàn)樗暮瘮?shù)中不帶有任何參數(shù),也沒(méi)任何返回值,函數(shù)只有一個(gè)版本即“~類(lèi)名(){}”。33、下列關(guān)于構(gòu)造函數(shù)的描述中,錯(cuò)誤的是()。A、構(gòu)造函數(shù)名與類(lèi)名相同B、構(gòu)造函數(shù)可以有返回值C、構(gòu)造函數(shù)可以重載D、每個(gè)類(lèi)都有構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:構(gòu)造函數(shù)沒(méi)有返回值,雖然叫函數(shù),但是它沒(méi)有任何返回值,包括void型都不是,官方叫法應(yīng)該叫“構(gòu)造器”。34、若PAT是一個(gè)類(lèi),則程序運(yùn)行時(shí),語(yǔ)句PAT(*ad){3};”調(diào)用PAT的構(gòu)造函數(shù)的次數(shù)是()。A、0B、1C、2D、3標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:PAT(*ad){3}該表達(dá)式表示一個(gè)指向類(lèi)PAT的數(shù)組的指針,只是聲明了該指針,而并沒(méi)有進(jìn)行實(shí)例化對(duì)象,因此該語(yǔ)句運(yùn)行時(shí)并不會(huì)調(diào)用構(gòu)造函數(shù)。35、下列描述中,錯(cuò)誤的是()。A、公有繼承時(shí)基類(lèi)中的公有成員在派生類(lèi)中仍是公有成員B、公有繼承時(shí)基類(lèi)中的保護(hù)成員在派生類(lèi)中仍是保護(hù)成員C、保護(hù)繼承時(shí)基類(lèi)中的公有成員在派生類(lèi)中仍是公有成員D、保護(hù)繼承時(shí)基類(lèi)中的保護(hù)成員在派生類(lèi)中仍是保護(hù)成員標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:保護(hù)繼承時(shí),類(lèi)成員的訪問(wèn)級(jí)別只能是降低為保護(hù)模式,因此即使基類(lèi)的共有成員,也被縮小為保護(hù)模式。36、生成派生類(lèi)對(duì)象時(shí),派生類(lèi)構(gòu)造函數(shù)調(diào)用基類(lèi)構(gòu)造函數(shù)的條件是()。A、無(wú)需任何條件B、基類(lèi)中顯式定義了構(gòu)造函數(shù)C、派生類(lèi)中顯式定義了構(gòu)造函數(shù)D、派生類(lèi)構(gòu)造函數(shù)明確調(diào)用了基類(lèi)構(gòu)造函數(shù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:派生類(lèi)的構(gòu)造函數(shù)必須通過(guò)調(diào)用基類(lèi)的構(gòu)造函數(shù)來(lái)初始化基類(lèi)子對(duì)象。所以在定義派生類(lèi)的構(gòu)造函數(shù)時(shí),除了對(duì)自己的類(lèi)據(jù)成員進(jìn)行初始化外,還必須負(fù)責(zé)調(diào)用基類(lèi)構(gòu)造函數(shù),使基類(lèi)的數(shù)據(jù)成員得以初始化。37、下列關(guān)于派生類(lèi)和基類(lèi)的描述中,正確的是()。A、派生類(lèi)成員函數(shù)只能訪問(wèn)基類(lèi)的公有成員B、派生類(lèi)成員函數(shù)只能訪問(wèn)基類(lèi)的公有和保護(hù)成員C、派生類(lèi)成員函數(shù)可以訪問(wèn)基類(lèi)的所有成員D、派生類(lèi)對(duì)基類(lèi)的默認(rèn)繼承方式是公有繼承標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:派生類(lèi)成員函數(shù)不能訪問(wèn)基類(lèi)的private成員,只能由基類(lèi)的對(duì)象來(lái)訪問(wèn)。這才體現(xiàn)了C++的數(shù)據(jù)封裝特性。38、有如下類(lèi)模板定義:templateclassBigNumber{longn;public;BigNumber(Ti):n(i){}BigNumberoperator-}-(BigNumberb){returnBigNumber(n+b.n):}};已知b1、b2是BigNumber的兩個(gè)對(duì)象,則下列表達(dá)中錯(cuò)誤的是()。A、bt+b2B、b1+3C、3+b1D、3+3標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:該題考查了C++模板類(lèi)和+運(yùn)算符重載的知識(shí),3+b1時(shí),程序不能將b1轉(zhuǎn)化為整型,所以編譯會(huì)出錯(cuò)。39、下列關(guān)于文件流的描述中,正確的是()。A、文件流只能完成針對(duì)磁盤(pán)文件的輸入/輸出B、建立一個(gè)文件流對(duì)象時(shí),必須同時(shí)打開(kāi)一個(gè)文件C、若輸入流要打開(kāi)的文件不存在,將建立一個(gè)新文件D、若輸出流要打開(kāi)的文件不存在,將建立一個(gè)新文件標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:輸入流要打開(kāi)的文件不存在,則會(huì)自動(dòng)建立該文件,而輸出流要打開(kāi)的文件不存在,則會(huì)報(bào)錯(cuò),而不會(huì)新建一個(gè)文件。40、有如下程序:include<iostream>usingnamespacestd;classPair{intm,n;public;Pair(intj,intk):m(j),n(k){}intget(){returnm;}intget()const{returnm+n;}};intmain(){Paira(3,5);constPairb(3,5);cout<A、33B、38C、83D、88標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:const函數(shù)只能被const對(duì)象調(diào)用,a.get()函數(shù)調(diào)用返回值是3,而b.get()調(diào)用的返回值是8。二、基本操作題(本題共1題,每題1.0分,共1分。)41、使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò)誤,請(qǐng)改正其中的錯(cuò)誤,使得程序正確運(yùn)行。程序輸出:s1:n=20s2:n=10執(zhí)行s3.a(chǎn)dd(s1,s2)s3:n=30s4:n=30注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//********error********的下面。試題程序:#includeclassTC{intn;public:TC(){}TC(intm){n=m:}//********error********TCadd(TCs1.s2){this->n=s1.n+s2.n;//********error********return(this);}voiddisp(){cout<<"n="<標(biāo)準(zhǔn)答案:(1)應(yīng)改為“TCadd(TCs1,TCs2)”。(2)應(yīng)改為“return(*this);”。(3)應(yīng)改為“};”。知識(shí)點(diǎn)解析:本題中的變量“s2”沒(méi)有聲明類(lèi)型,所以補(bǔ)充“s2”的類(lèi)型,即“TCadd(TCs1,TCs2)”?!皌his-)n=s1.n+s2.n;”語(yǔ)句中的this變量為指針變量,所以第2處的“return(this);”返回語(yǔ)句中的this變量,應(yīng)該返回指針型,所以修改為“return(*this);”。C++中類(lèi)的定義格式應(yīng)為“class類(lèi)名{};”,以分號(hào)為結(jié)尾,所以在第3處的類(lèi)結(jié)尾處補(bǔ)充分號(hào)“;”,即修改為“};”。三、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)42、使用vc++6.0打開(kāi)考生文件夾下的源程序文件2.cpp。完成函數(shù)fun(char*s,inta[]),其功能是把字符串s中的數(shù)字提取出來(lái)存儲(chǔ)在a[]中,然后返回?cái)?shù)字的個(gè)數(shù)。例如s="1234abcdef567",則a[]中存儲(chǔ)著1234567,返回7。注意:不能修改程序的其他部分,只能修改fun函數(shù)。試題程序:#includeintfun(char*s,inta[]){}intmain(){inta[1024];intlen=fun("1234abcdef567",a);for(inti=0;i(len;i++){cout((a[i]<<’’;}cout<標(biāo)準(zhǔn)答案:intj=0;for(inti=0;s[i]!=0;i++)//字符串內(nèi)循環(huán)if(s[i])=’0’&&s[i]<=’9’)//判斷字符是否為0~9的字符{a[j++]=s[i]-’0’;//如果為0~9的字符,轉(zhuǎn)換為整型}}returnj;//返回?cái)?shù)字個(gè)數(shù)知識(shí)點(diǎn)解析:本題中變量j用來(lái)記錄轉(zhuǎn)換的個(gè)數(shù),首先初始化為0,然后利用for循環(huán)判斷每一個(gè)當(dāng)前字符是否為數(shù)字字符。如果為數(shù)字字符,就將其減去字符“0”,即實(shí)現(xiàn)字符和整型的轉(zhuǎn)換,并且將j的變量值加1。四、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)43、使用VC++6.0打開(kāi)源程序文件3.cpp。其中類(lèi)TC用于把文件輸出到屏幕,然后進(jìn)行文件的分割。分割的方法如下:第一個(gè)文件的大小是文件的前一半,另外一個(gè)文件的大小是剩余部分。此程序?qū)n.txt文件中的內(nèi)容輸出到屏幕,并且將文件按照以上方式分割,存于文件out1.txt和out2.txt中。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。(1)從輸入文件中獲得一個(gè)字符,并判斷是否到文件結(jié)尾,如果到文件結(jié)尾,則退出循環(huán)。請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(2)把獲得的輸入文件的內(nèi)容存儲(chǔ)到buf中,并且用ten記錄下文件的長(zhǎng)度。請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(3)將輸入文件的后一半內(nèi)容存儲(chǔ)在第二個(gè)文件中,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。(4)使用文件流對(duì)象打開(kāi)輸入文件in.txt,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號(hào)表示出來(lái)。請(qǐng)不要修改其他的程序代碼。試題程序:#include#include(fstream.h)#include(stdlib.h)classTC{public:TC(char*fileName){lend=0;fstreaminfile,infile.open(fileName,ios::in);charch;//********1********while(){cout<標(biāo)準(zhǔn)答案:(1)“while()”應(yīng)改為“while(infile.get(ch))”。(2)應(yīng)添加“buf[len++]=ch;buf[len]=ch;len++;”。(3)應(yīng)添加“outfile2<知識(shí)點(diǎn)解析:本題考查了文件流的使用。根據(jù)題意,第1處要獲得一個(gè)字符,并判斷是否到文件結(jié)尾,所以應(yīng)使用get函數(shù);第2處應(yīng)將ch存入buf數(shù)組,同時(shí)讓len增1;第3處將huf中的字節(jié)輸出給outfile2,注意同時(shí)讓i增1,否則while循環(huán)將進(jìn)入死循環(huán);第4處TC只有一個(gè)帶char*參數(shù)的構(gòu)造函數(shù),所以創(chuàng)建對(duì)象時(shí)必須使用構(gòu)造參數(shù),根據(jù)題意這個(gè)參數(shù)應(yīng)該是“"in.txt"”。國(guó)家二級(jí)(C++)機(jī)試模擬試卷第3套一、程序改錯(cuò)題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的工程test37_1,此工程包含一個(gè)源程序文件test37_1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正函數(shù)中的錯(cuò)誤,使該程序的輸出結(jié)果為:0149162536496481源程序文件test37_1.cpp清單如下:#include<iostream.h>template<classT,intN=100>classVector{Tvec[N];public:voidset(intpos,Tval);Tget(ihtpos);/*****************found*****************/}template<classT,intN>voidVector<T,N>::set(intpos,Tval){vec[pos]=val;}/*****************found*****************/template<classT,intN>Vector<T,N>::get(intpos){returnvec[pos];}intmain(){Vector<double,10>v;inti=0;doubled=0.0;for(i=0;i<10;i++)v.set(i,double(i*i));for(i=0;i<10;i++)cout<<v.get(i)<<"";cout<<end1;/*****************found*****************/}標(biāo)準(zhǔn)答案:(1)錯(cuò)誤:}正確:};(2)錯(cuò)誤:template<classT,intN>Vector<T,N>::get(intpos)正確:template<classT,intN>TVector<T,N>::get(intpos)(3)錯(cuò)誤:缺少返回值正確:加入return0;知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)于類(lèi)定義的理解,即使使用了類(lèi)模板,在類(lèi)定義的結(jié)尾仍然需要使用分號(hào),這是C++的規(guī)定;(2)主要考查考生是否會(huì)掌握了模板類(lèi)的定義,template是關(guān)鍵字,在0中間是類(lèi)型的定義,題目中Vector是一個(gè)類(lèi)的名稱(chēng),前面應(yīng)該有該模板的名稱(chēng),即T,這樣才是完整的定義;(3)主要考查考生對(duì)于函數(shù)返回值的掌握,任何返回值類(lèi)型不為int型的函數(shù)最后都必須使用returen語(yǔ)句返回對(duì)應(yīng)類(lèi)型的值,就算是main函數(shù)也不例外。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)編寫(xiě)函數(shù)fun(),其功能是計(jì)算并輸出當(dāng)x<0.97時(shí)下列多項(xiàng)式的值,直到|Sn-Sn-1|<0.000001為止。Sn=1+0.5x+0.5(0.5-1)x2/2!+0.5(0.5-1)(0.5-2)x3/3!+…0.5(0.5-1)(0.5-2)…(0.5-n+1)xn/n!例如:主函數(shù)從鍵盤(pán)給x輸入0.21后,則輸出為s=1.100000。注意:部分源程序以存在文件test38_2.cpp中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。文件test38_2.cpp的內(nèi)容如下:#include<stdio.h>#include<iostream.h>#include<math.h>doublefun(doublex){}voidmain(){doublex,s;cout<<"Inputx:"<<endl;cin>>x;s=fun(x);cout<<"s="<<s<<endl;}標(biāo)準(zhǔn)答案:doublefun(doublex){doubles1=1.0,p=1.0,sum=0.0,s0,t=1.0;intn=1;do{s0=s1;sum+=s0;t*=n;P*=(0.5-n+1)*x;s1=p/t;n++;}while(fabs(s1-s0)>=le-6);returnsum;}知識(shí)點(diǎn)解析:解答本題的關(guān)鍵是觀察所給的多項(xiàng)式,并從中找出變化規(guī)律。觀察得出,每一項(xiàng)分子的變化規(guī)律是每一項(xiàng)比前一項(xiàng)多乘一項(xiàng)“(0.5-n+1)*x”。分母的變化規(guī)律是每一項(xiàng)比前一項(xiàng)多乘一個(gè)n(即在不斷變化的各項(xiàng)的編號(hào))。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的工程test36_3。此工程包含一個(gè)test36_3.cpp,其中定義了類(lèi)CRectangle,但該類(lèi)的定義并不完整。請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。(1)定義類(lèi)CRectangle的數(shù)據(jù)成員width和height,它們都是int型的數(shù)據(jù)。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)添加類(lèi)CRectangle的友元函數(shù)duplicate()的聲明,其返回值類(lèi)型和參數(shù)類(lèi)型均為Crectangle的,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)完成類(lèi)Crectangle的成員函數(shù)set_values的定義,把傳入的參數(shù)a和b分別賦值為數(shù)據(jù)成員width和height,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。(4)完成派生類(lèi)Crectangle的友元函數(shù)duplicate的定義,把函數(shù)中的臨時(shí)對(duì)象rectres的值返回主函數(shù),請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z(yǔ)句。注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。源程序文件test36_3.cpp清單如下:#include<iostream.h>classCRectangle{//**1**public:voidset_values(int,int);intarea(void){return(width*height);}//**2**};voidCRectangle::set_values(inta,intb){//**3**}CRectangleduplicate(CRectanglerectparam){CRectanglerectres;rectres.width=rectparam.width*2;rectres.height=rectparam.height*2;//**4**}voidmain(){CRectanglerect,rectb;rect.set_values(2,3);rectb-duplicate(rect);cout<<rectb.area()<<end1;}標(biāo)準(zhǔn)答案:(1)intwidth,height;(2)friendCRectangleduplicate(CRectangle);(3)width=a;height=b;(4)return(rectres);知識(shí)點(diǎn)解析:主要考查考生對(duì)于類(lèi)的定義和友元函數(shù)的掌握,其中(2)中friend是定義友元的關(guān)鍵字,注意聲明之后的分號(hào)不能缺少(4)中從子函數(shù)中返回應(yīng)該使用關(guān)鍵字return,只要符合返回類(lèi)型的要求就可以直接使用return返回。國(guó)家二級(jí)(C++)機(jī)試模擬試卷第4套一、程序改錯(cuò)題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的工程test25_1,此工程包含一個(gè)源程序文件test25_1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正程序中的錯(cuò)誤,使程序的輸出結(jié)果如下:privatelfromderived1:30privatelfromderived2:30源程序文件test25_1.cpp清單如下:/***************found******************/include<iostream.h>classbase{protected:intprivatel;public:base(intp){privatel=p;}};/****************found*******************/classderived1:publicbase{public:derivedl(intp1):base(p1){};intget_private(){returnprivate1;}}classderived2:virtua1publicbase{public:derived2(intp2):base(p2){};intget_private(){returnprivate1;}};classderived12:publicderived1,publicderived2{public:/****************found*******************/derived12(intp1,intp2,intpb):derived1(p1),base(pb),derived2(p2){};};voidmain(){derived12d(10,20,30);cout<<"privatelfromderived1:"<<d.derived1::get_private();cout<<"\nprivatelfromderived2:"<<d.derived2::get_private();cout<<endl;標(biāo)準(zhǔn)答案:(1)錯(cuò)誤:include<iostream.h>正確:#include<iostream.h>(2)錯(cuò)誤:classderivedl:publicbase正確:classderivedl:virtualpublicbase(3)錯(cuò)誤:derived12(intp1,intp2,intpb):derivedl(p1),base(pb),derived2(p2){};正確:derived12(intp1,intP2,intPb):derivedl(P1),derived2(p2),base(Pb){};知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)于include關(guān)鍵字的掌握,它的正確使用是#include;(2)主要考查考生對(duì)于虛基類(lèi)的使用,為了正確的顯示結(jié)果,這里應(yīng)該使用虛基類(lèi)的定義,這樣在調(diào)用函數(shù)的時(shí)候就可以不產(chǎn)生二義性;(3)主要考查考生對(duì)于初始化參數(shù)表中賦值順序的掌握,它是按照從右至左依次賦值的二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)編寫(xiě)函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是則函數(shù)返回1,主函數(shù)中輸出YES:否則返回0,主函數(shù)中輸出NO?;匚氖侵疙樧x和倒讀都一樣的字符串。例如:字符串LEVEL是回文,而字符串123312就不是回文。注意;部分源程序已存在文件test26_.cpp中。請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填寫(xiě)若干語(yǔ)句。文件test26_2.cpp的內(nèi)容如下:#include<iostream.h>#include<stdio.h>#defineN80intfun(char*str){}voidmain(){chars[N];cout<<"Enterastring:"<<endl;gets{s);cout<<"\n\n";puts(s);if(fun(s))cout<<"YES\n";elsecout<<"NO\n";}標(biāo)準(zhǔn)答案:intfun(char*str){inti,n=O,fg=1;char*p=str;while(*p){n++;p++;}for(i=0;i<n/2;i++)if(str[i]==str[n-1-i]);else{fg=O;break;}returnfg;}知識(shí)點(diǎn)解析:解答本題的主要思路是:首先要利用循環(huán)中指針的移動(dòng)來(lái)求得字符串的長(zhǎng)度n,然后用一個(gè)for循環(huán)依次取得數(shù)組中的前半部分元素,用取得的前半部分內(nèi)的元素逐個(gè)與后半部分內(nèi)的對(duì)應(yīng)位置的元素進(jìn)行比較,如果相同,不做任何工作,接著取下一個(gè)元素,繼續(xù)比較:如果不相同,可以判斷該字符串肯定不是回文,就給標(biāo)志變量fg賦值0(fg的初始值為1)。最終把fg作為函數(shù)的返回值返回(fg值為1表明是回文,fg值為0表明不是回文)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的工程test24_3,此工程包含一個(gè)源程序文件test24_3.cpp,其中定義了抽象類(lèi)point和它的派生類(lèi)line,但它們的定義并不完整。請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。(1)定義類(lèi)point的構(gòu)造函數(shù),函數(shù)含參數(shù)i和j它們都是int型數(shù)據(jù),默認(rèn)值都是0,用i和j分別將point的數(shù)據(jù)成員x0和y0初始化。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。(2)完成類(lèi)point的成員函數(shù)純虛函數(shù)voidset()和voiddraw()的定義,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。(3)添加類(lèi)line的構(gòu)造函數(shù),函數(shù)含參數(shù)i,j,m和n,它們都是int型數(shù)據(jù),默認(rèn)值都是0,用i和j分別將point的數(shù)據(jù)成員x0和y0初始化。請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。輸出結(jié)果如下:line::set()called.注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。源程序文件test24_3.cpp清單如下:#include<iostream.h>classpoint{public://**1**//**2**protected:intxO,yO;}classline:publicpoint{public://**3**{x1=m;y1=n;}voidset(){cout<<"line::set()called.\n";}voiddraw(){cout<<"line::draw()called.\n";}protected:intx1,y1;};voidmain(){line*lineobj=newline;1ineobj->set();}標(biāo)準(zhǔn)答案:(1)point(inti=O,intj=0){x0=i;y0=j;}(2)virtualvoidset()=0;virtualvoiddraw()=0;(3)line(inti=O,intj=0,intm=0,intn=0):point(i,j)知識(shí)點(diǎn)解析:本題主要考查考生對(duì)于純虛函數(shù)和抽象類(lèi)以及派生類(lèi)構(gòu)造函數(shù)的使用,注意(2)中純虛函數(shù)的定義格式。純虛函數(shù)是一種特殊的函數(shù),不是在基類(lèi)中實(shí)現(xiàn),而是在派牛類(lèi)中實(shí)現(xiàn),說(shuō)明格式是在函數(shù)聲明中加入關(guān)鍵字“virtual”和“=0”。如:virtualvoidset()=0;。而帶有純虛函數(shù)的類(lèi)就是抽象類(lèi),它是不能定義對(duì)象的,只是一個(gè)公共的類(lèi)。國(guó)家二級(jí)(C++)機(jī)試模擬試卷第5套一、選擇題(本題共35題,每題1.0分,共35分。)1、下列敘述中正確的是()。A、棧是“先進(jìn)先出”的線性表B、隊(duì)列是“先進(jìn)后出”的線性表C、循環(huán)隊(duì)列是非線性結(jié)構(gòu)D、有序線性表既可以采用順序存儲(chǔ)結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查了棧、隊(duì)列、循環(huán)隊(duì)列的基本概念。棧的特點(diǎn)是先進(jìn)后出;隊(duì)列的特點(diǎn)是先進(jìn)先出。根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間的復(fù)雜程度,將數(shù)據(jù)結(jié)構(gòu)分線性結(jié)構(gòu)與非線性結(jié)構(gòu)兩類(lèi)。有序線性表即可采用順序存儲(chǔ)結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。2、支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。A、棧B、樹(shù)C、隊(duì)列D、二叉樹(shù)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:根據(jù)棧的定義,棧是一種限定在一端進(jìn)行插入與刪除的線性表。在主函數(shù)調(diào)用子函數(shù)時(shí),主函數(shù)會(huì)保持當(dāng)前狀態(tài),然后轉(zhuǎn)去執(zhí)行子函數(shù),把子函數(shù)的運(yùn)行結(jié)果返回到主函數(shù),主函數(shù)繼續(xù)向下執(zhí)行,這種過(guò)程符合棧的特點(diǎn)。所以一般采用棧式存儲(chǔ)方式。3、某二又樹(shù)有5個(gè)度為2的結(jié)點(diǎn),則該二叉樹(shù)中的葉子結(jié)點(diǎn)數(shù)是()。A、10B、8C、6D、4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:根據(jù)二叉樹(shù)的性質(zhì)判定,在任意二叉樹(shù)中,度為。的葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)多一個(gè)。4、軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下列屬于應(yīng)用軟件的是()。A、編譯程序B、操作系統(tǒng)C、教務(wù)管理系統(tǒng)D、匯編程序標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:編譯程序和匯編程序?qū)儆陂_(kāi)發(fā)工具;操作系統(tǒng)屬于系統(tǒng)軟件;而教務(wù)管理系統(tǒng)屬于應(yīng)用軟件。5、下列敘述中錯(cuò)誤的是()。A、軟件測(cè)試的目的是發(fā)現(xiàn)錯(cuò)誤并改正錯(cuò)誤B、對(duì)被調(diào)試的程序進(jìn)行“錯(cuò)誤定位”是程序調(diào)試的必要步驟C、程序調(diào)試通常也稱(chēng)為DebugD、軟件測(cè)試應(yīng)嚴(yán)格執(zhí)行測(cè)試計(jì)劃,排除測(cè)試的隨意性標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件測(cè)試的目的是為了發(fā)現(xiàn)錯(cuò)誤及漏洞而執(zhí)行程序的過(guò)程;軟件測(cè)試要嚴(yán)格執(zhí)行測(cè)試計(jì)劃;程序調(diào)試通常也稱(chēng)Debug,對(duì)被調(diào)試的程序進(jìn)行“錯(cuò)誤”定位是程序調(diào)試的必要步驟。6、耦合性和內(nèi)聚性是對(duì)模塊獨(dú)立性度量的兩個(gè)標(biāo)準(zhǔn)。下列敘述中正確的是()。A、提高耦合性降低內(nèi)聚性有利于提高模塊的獨(dú)立性B、降低耦合性提高內(nèi)聚性有利于提高模塊的獨(dú)立性C、耦合性是指一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合的緊密程度D、內(nèi)聚性是指模塊間互相連接的緊密程度標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:耦合是指模塊間相互連接的緊密程度,內(nèi)聚性是指在一個(gè)模塊內(nèi)部各個(gè)元素彼此之間接合的緊密程序。高內(nèi)聚、低耦合有利于模塊的獨(dú)立性。7、數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中的核心問(wèn)題是()。A、數(shù)據(jù)庫(kù)設(shè)計(jì)B、數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)C、數(shù)據(jù)庫(kù)維護(hù)D、數(shù)據(jù)庫(kù)管理員培訓(xùn)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)設(shè)計(jì)的目的是設(shè)計(jì)一個(gè)能滿(mǎn)足用戶(hù)要求、性能良好的數(shù)據(jù)庫(kù)。所以數(shù)據(jù)庫(kù)設(shè)計(jì)的核心是數(shù)據(jù)庫(kù)應(yīng)用。8、有兩個(gè)關(guān)系R、S如下所示:由關(guān)系R通過(guò)運(yùn)算得到關(guān)系S,則所使用的運(yùn)算為()。A、選擇B、投影C、插入D、連接標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查關(guān)系的運(yùn)算,一個(gè)關(guān)系R通過(guò)投影運(yùn)算后仍為一個(gè)關(guān)系R’,R’是由R中投影運(yùn)算所指出的引起域的列所組成的關(guān)系。選擇運(yùn)算主要是對(duì)關(guān)系R中選擇由滿(mǎn)足邏輯條件的元組所組成的一個(gè)新關(guān)系,所以題中關(guān)系S是由R投影所得。9、將E-R圖轉(zhuǎn)換為關(guān)系模式時(shí),實(shí)體和聯(lián)系都可以表示為()。A、屬性B、鍵C、關(guān)系D、域標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C語(yǔ)言中,將E—R圖轉(zhuǎn)換為關(guān)系模式時(shí),實(shí)體和聯(lián)系都可以表示為關(guān)系。10、下列選項(xiàng)合法的標(biāo)識(shí)符是()。A、1_1B、1_1C、_11D、1__標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C語(yǔ)言中標(biāo)識(shí)符命中的規(guī)則是:標(biāo)識(shí)符只能由字母、數(shù)字和下畫(huà)線組成,第一個(gè)字符必須為字母或下畫(huà)線。所以選項(xiàng)C正確。11、若函數(shù)中有定義語(yǔ)句“intk;”,則()。A、系統(tǒng)將自動(dòng)給k賦初值0B、這時(shí)k中的值無(wú)定義C、系統(tǒng)將自動(dòng)給k賦初值-1D、這時(shí)k中無(wú)任何值標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:根據(jù)題目,若以這種方式定義變量k時(shí),編譯程序僅為k開(kāi)辟存儲(chǔ)單元,并未在存儲(chǔ)單元中存放任何初始值,所以變量中的值無(wú)意義,稱(chēng)變量值“無(wú)定義”。所以正確答案為選項(xiàng)B。12、下列選項(xiàng)中,能用作數(shù)據(jù)常量的是()。A、0115B、118C、1.5e1.5D、115L標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:選項(xiàng)A的第一個(gè)字母是0而不是數(shù)字0,所以不構(gòu)成數(shù)值常量;選項(xiàng)B中,8不是八進(jìn)制數(shù)字,八進(jìn)制數(shù)為。到7;選項(xiàng)C中字母“e”后面的指數(shù)是小數(shù)而非整數(shù),不合法,不是一個(gè)合法的指數(shù)形式的數(shù)值常量;在選項(xiàng)D中,可以在整型常量的后面加一個(gè)字母L,表示這個(gè)常量在內(nèi)存中占4字節(jié)。13、設(shè)有定義“intx=2;”,下列表達(dá)式中,值不為6的是()。A、x*=x+1B、x++,2*xC、x*=(1+x)D、2*x,x+=2標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查了復(fù)合運(yùn)算符“*=”和逗號(hào)表達(dá)式如何正確求值。逗號(hào)表達(dá)式的作用是用逗號(hào)將表達(dá)式連起來(lái),其有效值為最后一個(gè)表達(dá)的值,其運(yùn)算的結(jié)合性從左到右進(jìn)行運(yùn)算。選項(xiàng)D是一個(gè)逗號(hào)表達(dá)式,其值為4。14、程序段“intx=12;doubley=3.141593;printf("d%8.6’f",x,y);”的輸出結(jié)果是()。A、123.141593B、123.141593C、12,3.141593D、123.142標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:根據(jù)輸出函數(shù)printf中對(duì)輸出數(shù)值格式的要求,第一個(gè)數(shù)和第二數(shù)之間沒(méi)有空格或分隔號(hào),因而此題答案為選項(xiàng)A。15、若有定義語(yǔ)句“doublex,y,*px,*Py;執(zhí)行了px=&x;py=&y;”后,正確的輸入語(yǔ)句是()。A、seanf("%f%f",x,y);B、scanf("%f%f"&f"&x,&y);C、scanf("%lf%le",px,py);D、scanf("%lf%If"x,y);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:此題主要考查輸入函數(shù)的字符格式,lf和le表示以帶小數(shù)點(diǎn)的數(shù)學(xué)形式或指數(shù)形式輸入浮點(diǎn)數(shù)。16、下列是if語(yǔ)句的基本形式:if(表達(dá)式)語(yǔ)句其中“表達(dá)式”()。A、必須是邏輯表達(dá)式B、必須是關(guān)系表達(dá)式C、必須是邏輯表達(dá)式或關(guān)系表達(dá)式D、可以是任意合法的表達(dá)式標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在C語(yǔ)言中if關(guān)鍵字后的一對(duì)圓括號(hào)中的表達(dá)式可以是C語(yǔ)言中任意合法的表達(dá)式。17、有下列程序:#includevoidmain(){intx;Scanf("%d",&x);if(x<=3);elseif(x!=10)printf("%d\n",x);}程序運(yùn)行時(shí),輸入的值在哪個(gè)范圍才會(huì)有輸出結(jié)果()。A、不等于10的整數(shù)B、大于3且不等10的整數(shù)C、大于3或等于10的整數(shù)D、小于3的整數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在本題的程序中輸入的數(shù)值小于等于3時(shí),不進(jìn)行任何處理。如果輸入的數(shù)值大于3并且其值不等于10時(shí),則打印輸入的數(shù)值。所以本題的正確答案為選項(xiàng)B。18、有下列程序:#includevoidmain(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2‖c--!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序運(yùn)行后的輸出結(jié)果是()。A、1,2,3B、1,3,2C、1,3,3D、3,2,1標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在程序中,當(dāng)執(zhí)行第一條if語(yǔ)句時(shí),進(jìn)行邏輯語(yǔ)句的判斷,因?yàn)樽兞縝的初值為2,所以其值加1后為3與2不相等,所以if語(yǔ)句中的邏輯表達(dá)式的值為假,則程序執(zhí)行最后一條elseprintf語(yǔ)句,輸出變量為a,b,c,當(dāng)前數(shù)值為1,3,3。所以正確答案為選項(xiàng)C。19、下列程序段中的變量已正確定義:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");程序段的輸出結(jié)果是()。A、********B、****C、**D、*標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題中第二個(gè)for循環(huán)語(yǔ)句的后面有一個(gè)分號(hào),所以?xún)蓚€(gè)for循環(huán)語(yǔ)句的執(zhí)行語(yǔ)句為空。當(dāng)兩個(gè)for循環(huán)語(yǔ)句執(zhí)行完后,再執(zhí)行printf語(yǔ)句輸出一個(gè)星號(hào)。所以正確答案為選項(xiàng)D。20、設(shè)變量已正確定義,下列不能統(tǒng)計(jì)出一行中輸入字符個(gè)數(shù)(不包含回加符)的程序段是()。A、n=0;while((ch=getchar())!=’\n’)n++;B、n=0;while(getchar()!=’\n’)n++;C、for(n=0;getchar()!=’\n’;n++);D、n=0;for(ch=getchar();ch!=’n’;n++);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題中,第一條語(yǔ)句對(duì)變量13.賦初值時(shí)為0,在for循環(huán)中,從getchar函數(shù)得到一個(gè)輸入的字符,然后判斷這個(gè)字符是否為回車(chē)換行符,如果不是則變量n加1,而在程序運(yùn)行時(shí),每次輸入時(shí)是一個(gè)字符串,而不是一個(gè)字符,因而for循環(huán)語(yǔ)句得不到正確的執(zhí)行,所以不能夠統(tǒng)計(jì)出一行中字符的個(gè)數(shù)。所以正確答案為選項(xiàng)D。21、有下列程序:#includevoidmain(){inta1,a2charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("%d%c%d%c",a1,c1,a2,c2);}若想通過(guò)鍵盤(pán)輸入,使得a1的值為12,a2的值為34,c1的值為字符a,c2的值為字符b,程序輸出結(jié)果是12,a,34,b,則正確輸入格式是(以下[*]代表空格,代表回車(chē))()。A、12a36bB、C、12,a,34,bD、標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:從程序的輸入格式控制方法判斷,輸入時(shí)各變量之間沒(méi)有分隔符,當(dāng)輸入相應(yīng)的變量對(duì)應(yīng)的值時(shí),相應(yīng)的變量能夠得到對(duì)應(yīng)的值,可以輸出要求的結(jié)果。22、有下列程序:#includeintf(intx,inty){return((y-x)*x);}voidmain(){inta=3,b=4,C=5,d;d=f(f(a,b),f(a,c));printf("%d\n",d);}程序運(yùn)行后的輸出結(jié)果是()。A、10B、9C、8D、7標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在C語(yǔ)言中,子函數(shù)f(intx,int)的功能是計(jì)算y減去x的差與X之積。所以在主函數(shù)中,調(diào)用f(a,b)的值等于3,調(diào)用f(a,c)的值等于6,然后再調(diào)用f(3,6)的值等于9,所以正確答案為選項(xiàng)B。23、有下列程序:#includevoidfun(char*s){while(*s){if(*s%2==0)printf("%c",*s);s++;}}voidmain(){chara[]={"good"};fun(a);printf("\n");}注意:字母a的ASCII碼值為97,程序運(yùn)行后的輸出結(jié)果是()。A、dB、goC、godD、good標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在本題中,子函數(shù)fun(char*s)的功能是如果*S的ASCII值是偶數(shù),則輸出*S,主函數(shù)中當(dāng)實(shí)參的值為good時(shí),g的ASCII值是103,字母o的ASCII值是111,字母d的ASCII值是100,只有字母d的ASCII值是偶數(shù),所以輸出字母d。24、有下列程序:#includevoidfun(int*a.int*b){int*c;c=a;a=b;b=c;}voidmain(){intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*p,*q)}程序運(yùn)行后的輸出結(jié)果是()。A、3,5,5,3B、3,5,3,5C、5,3,3,5D、5,3,5,3標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題子函數(shù)fun(int*a,*b)的功能是交換形參a,b的值。主函數(shù)中調(diào)用子函數(shù)fun(p,q)和fun(&x,&y)后,實(shí)參p,q和&x,&y的值之間并沒(méi)有發(fā)生交換,所以程序輸出的結(jié)果為3,5,3,5。25、有下列程序:#includevoidf(int*P,int*q);voidmain(){intm=1,n=2,*r=&m;f(r,&n);printf("%d,%d",m,n);}voidf(int*p,int*q){p=p+1;*q=*q+1;}程序運(yùn)行后的輸出結(jié)果是()。A、1,3B、2,3C、1,4D、1,2標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題中子函數(shù)f(int*p,*q)的功能是對(duì)指針P的值加1,*q的值加1。主函數(shù)中調(diào)用子函數(shù)f(r,&n)時(shí),子函數(shù)的執(zhí)行結(jié)果是r值加1,n.的值加1。而m的值并沒(méi)有發(fā)生變化,最后程序輸出的結(jié)果為1,3。所以正確答案為選項(xiàng)A。26、下列函數(shù)按每行8個(gè)輸出數(shù)組中的數(shù)據(jù)。voidfun(int*w,intn){inti;for(i=0;i<n;i++){______printf("%d",w[i]);}printf("\n")}下畫(huà)線處應(yīng)填入的語(yǔ)句是()。A、if(i/8==0)printf("n");B、if(i/8=0)continue;C、if(i%8==0)printf("n");D、if(i%8==0)continue標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在程序中,fun函數(shù)的功能是每行輸出8個(gè)數(shù)組中的數(shù)據(jù),在for循環(huán)中,每次循環(huán)時(shí),都對(duì)數(shù)組下標(biāo)值8求模得到余數(shù)。如果余數(shù)等于0,則退出for循環(huán),進(jìn)行下一次循環(huán):如果余數(shù)不等于0,則輸出數(shù)組的元素w[i]。27、若有下列定義intx[10],*pt=x;則對(duì)x數(shù)組元素的正確引用是()。A、*&x[10]B、*(x+3)C、*(pt+10)D、pt+3標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在C語(yǔ)言中,數(shù)組名是一個(gè)存放地址值的指針變量名,其地址值是數(shù)組第一個(gè)元素的地址,也是數(shù)組所占一串連續(xù)存儲(chǔ)單元的起始地址。因?yàn)閿?shù)組的下標(biāo)是從0開(kāi)始的,所以選項(xiàng)B中,x+3表示數(shù)組x[10]中的第四個(gè)元素的地址,在其前面加上星號(hào),表示是數(shù)組x[10]中的第四個(gè)元素中的值。所以正確答案為選項(xiàng)B。選項(xiàng)A、C的地址范圍超出級(jí)數(shù)x[10]中元素的地址范圍,選項(xiàng)D表示的是地址值。28、設(shè)有定義“chars[8];inti=0;”,下列不能將一行(不超過(guò)80個(gè)字符)帶有空格的字符串正確讀入的語(yǔ)句或語(yǔ)句組是()。A、gets(s);B、while((s[i++]=getchar())!=’\n’);sfi]=’\0’;C、scanf("%s",s);D、do{scanf("%c",&s[i]);)while(sfi++]!’\n’);s[i]=’\0’標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在scanf輸入函數(shù)中,格式字符S的作用是輸入一個(gè)字符串,直到遇到空格結(jié)束。所以選項(xiàng)C不能輸入包含空格的字符串。正確答案應(yīng)該為選項(xiàng)C。29、有下列程序:#includevoidmain(){char*a[]={"abcd","ef","gh","ijk");inti;for(i=0;i<4;i++)printf("c",*a[i]);}程序運(yùn)行后的輸出結(jié)果是()。A、aegiB、dfhkC、abedD、abcdefghijk標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:*a[]表示一個(gè)字符串?dāng)?shù)組,for循環(huán)的作用是輸出字符串?dāng)?shù)組中每一次字符串的第一個(gè)字符。所以正確答案為選項(xiàng)A。30、下列選項(xiàng)中正確的語(yǔ)句是()。A、chars[];s="BOOK!";B、char*s;s={"BOOK!"};C、charsi[10];s="BOOK";D、char*s;s="BOOK!";標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在選項(xiàng)D中,字符指針S指向字符串常量BOOK!。故選項(xiàng)D正確。31、設(shè)函數(shù)中有整型變量n,為保證其在未賦初值的情況下初值為0,應(yīng)選擇存儲(chǔ)類(lèi)別是()。A、autoB、registerC、staticD、auto或register標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C語(yǔ)言中,未賦初值的靜態(tài)局部變量,編譯程序自給它賦初值0。所以選擇C。32、有下列程序:#includeintb=2:intfun(int*k){b=*k+b;return(b);}voidmain(){inta[10]={1,2,3,4,5,6,7,8},i;for(i=2;i<4;i++)(b=fun(&a[i])+b;printf("%d",b);}printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A、1012B、810C、1028D、1016標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在程序中子函數(shù)fun(int*k)的作用是給靜態(tài)全局變量加上形參*k的值。在主函數(shù)中進(jìn)行第一次for循環(huán)執(zhí)行時(shí),fun(&a[2])的返回值為5,所以5+5=10,因而輸出結(jié)果為10,第二次for循環(huán)執(zhí)行時(shí),fun(&a[3])的返回值為14,所以14+14=28。33、有下列程序:#includestructord{intx,y;}dt[2]={1,2,3,4);voidmain(){structord*p=dt;printf("%d,",++p->x);printf("%d,",++p->y);}程序的運(yùn)行結(jié)果是()。A、1,2B、2,3C、3,4D、4,1標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在本題中結(jié)構(gòu)體成員訪問(wèn)運(yùn)算符->的優(yōu)先級(jí)高于++算術(shù)運(yùn)算符,所以表達(dá)式++p>x的計(jì)算過(guò)程是首先取出結(jié)構(gòu)體dt[0]的成員變量x的值1,然后再對(duì)其值加1,得到2輸出。表達(dá)式++p->y的計(jì)算過(guò)程是首先取出結(jié)構(gòu)體dt[0]的成員變量y的值2,然后再對(duì)其值加1,得到3輸出。34、設(shè)有宏定義“#defineIsDIV(k,n)((k%n==1?1:0)”且變量m已正確定義并賦值,則宏調(diào)用“IsDIV(m,5)&&IsDIV(m,7)”為真時(shí)所要表達(dá)的是()。A、判斷m是否能被5或者7整除B、判斷m是否能被5和7整除C、判斷m被5或者7整除是否余1D、判斷m被5和7整除是否都余1標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查宏定義,宏定義IsDIV(k,n)的意思是如果k對(duì)n求模的余數(shù)為1,其值等于1,否則其值等于0。本題中宏調(diào)用表達(dá)式是兩個(gè)宏調(diào)用之間的邏輯與運(yùn)算,所以選項(xiàng)D正確。35、有下列程序:#includevoidmain(){FILE*f;f=fopen("filea.txt","w");fprintf(f,"abc");fclose(f);}若文本文件filea.txt中原有內(nèi)容hello,則運(yùn)行以上程序后,文件filea.txt中的內(nèi)容為()。A、helloabcB、abcloC、abcD、abchello標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:把字符串a(chǎn)bc以只寫(xiě)的方式寫(xiě)入到文件filea.txt中,覆蓋掉原有的字符串hello。二、基本操作題(本題共1題,每題1.0分,共1分。)36、使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.epp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,即使程序在屏幕上輸出以下類(lèi)似內(nèi)容:0012FF6810012FF3C50012FF6C20012FF4440012FF7030012FF4C30023FF7440012FF5420012FF7850012FF5C1006AFDCC,~006AFDEF可能因?yàn)闄C(jī)器的不同,程序輸出的內(nèi)容會(huì)有差異,只要是相差為4的連續(xù)地址即可。注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。試題程序:#include(iostream)usingnamespacestd;intmain(){int*P,aE5]={1,2,3,4,5};double*q,b[5]={5.0,4.0,3.0,2.0,1.0);intx;p=a;q=b;//******error******for(x=0;x<=5;x+

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論