版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級(C++)機試模擬試卷9(共6套)(共130題)國家二級(C++)機試模擬試卷第1套一、程序改錯題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的工程test1_1,此工程包含一個源程序文件test1_1.cpp,但該程序運行有問題,請改正main函數(shù)中的錯誤,使該程序的輸出結(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();}標準答案:(1)錯誤:Rect2(1)正確:Rect2(2)錯誤:Rect3正確:Rect3(Rect1)(3)錯誤:Rect2.1edge=0;Rect2.sedge=0;正確:Rect2.Set(0,0);知識點解析:(1)主要考查考生對于重載構(gòu)造函數(shù)調(diào)用的理解,Rect2應該調(diào)用缺省構(gòu)造函數(shù),這里重載的構(gòu)造函數(shù)是以參數(shù)個數(shù)不同區(qū)分的;一個是缺省的構(gòu)造函數(shù),即沒有參數(shù)的;另一個含有兩個參數(shù),為了能使“Defaultconstructorcalled.”輸出,應該調(diào)用不含有參數(shù)的缺省構(gòu)造函數(shù);(2)主要考查考生是否會使用缺省的拷貝初始化構(gòu)造函數(shù),這是不出現(xiàn)構(gòu)造函數(shù)被調(diào)用語句的惟一方法,不管使用缺省的構(gòu)造函數(shù)還是含有兩個參數(shù)的構(gòu)造函數(shù)都會在屏幕上出現(xiàn)多余的文字,而這些文字只有使用在類中沒有被定義的缺省拷貝初始化構(gòu)造函數(shù)來聲明一個新的對象才不會出現(xiàn),根據(jù)提示應該使用Rect1這個已有的對象去初始化Rect3R個新的對象,這就是拷貝初始化構(gòu)造函數(shù)的作用,即使用已有的或者已存在的對象去初始化一個新的對象;(3)主要考查考生對于類的對象訪問權(quán)限的掌握,ledge和sedge為類的私有成員,不能被類的對象Rect2訪問,應使用成員函數(shù)Set()。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、請編寫兩個函數(shù)voidsort(iht&x,&y)和voidsort(intx,inty,intz),實現(xiàn)對2個和3個元素的排序并在屏幕上輸出排序結(jié)果(數(shù)字之間使用跳格)。注意:部分源程序已存放在文件test2_2.cpp中。請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)的花括號中填寫若干語句。輸出結(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);}標準答案:(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ào)用的掌握。這里的重載是使用不同的參數(shù)個數(shù),引用調(diào)用的形參使用&符號,實參直接調(diào)用;if括號中的語句為真時,執(zhí)行花括號中的語句,“<<”是流輸出操作,輸出到屏幕上。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的工程test42_3。此工程包含—個test42_3.cpp,其中定義了類Cpolygon、COutput和CTriangle,其中CTriangle類由Cpolygon和COutput類public派生,但三個類的定義并不完整。請按要求完成下列操作,將程序補充完整。(1)定義類CPolygon的保護數(shù)據(jù)成員width和height,它們都是int型的數(shù)據(jù)。請在注釋“//**1**”之后添加適當?shù)恼Z句。(2)完成類CPolygon的成員函數(shù)set_values(inta,intb),使參數(shù)a和b分別賦值給保護數(shù)據(jù)成員width和height,請在注釋“//**2**”之后添加適當?shù)恼Z句。(3)完成類Coutput的成員函數(shù)output(int)的定義,將傳入的參數(shù)為血型的i輸出到屏幕并換行,請在注釋“//**3**”之后添加適當?shù)恼Z句。(4)完成派生類CTriangle的聲明,它由Cpolygon和COutput類public派生,請在注釋“//**4**”之后添加適當?shù)恼Z句。源程序文件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;}標準答案:(1)intwidth,height;(2)width=a;height=b;(3)cout<<i<<endl;(4)classCTriangle:publicCPolygon,publicCoutput知識點解析:主要考查考生對于類的定義和派生類聲明的掌握,其中(4)中對于多繼承的聲明按照如下的格式:關(guān)鍵字class派生類名:繼承方式繼承類名,繼承方式繼承類名,在多繼承中,一定要注意防止程序的二義性,同時要善于利用基類中已經(jīng)定義的方式,才能達到代碼復用的作用。國家二級(C++)機試模擬試卷第2套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列關(guān)于棧敘述正確的是()。A、棧頂元素最先能被刪除B、棧頂元素最后才能被刪除C、棧底元素永遠不能被刪除D、以上三種說法都不對標準答案:A知識點解析:棧是限定在一端進行插入刪除的先入后出的線性表數(shù)據(jù)結(jié)構(gòu),棧頂元素最后被插入到棧中,但是最先被刪除;而棧底元素最先被插入,最后被刪除。2、下列敘述中正確的是()。A、有一個以上根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)B、只有一個根結(jié)點的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)C、循環(huán)鏈表是非線性結(jié)構(gòu)D、雙向鏈表是非線性結(jié)構(gòu)標準答案:D知識點解析:線性表的特點是在數(shù)據(jù)元素的非空有限集合中①存在唯一的一個被稱為“第一個”的數(shù)據(jù)元素;②存在唯一一個被稱為“最后一個”的數(shù)據(jù)元素;③除第一個以外,集合中的每個數(shù)據(jù)元素均只有一個后繼;④除最后一個以外,集合中的每個數(shù)據(jù)元素均只有一個后繼。因此,雙向表是非線性結(jié)構(gòu)。3、某二叉樹共有7個結(jié)點,其中葉子結(jié)點只有1個,則該二叉樹的深度為(假設(shè)根結(jié)點在第1層)()。A、3B、4C、6D、7標準答案:D知識點解析:對于任意一棵二叉樹T,如果葉子結(jié)點數(shù)為n0,度為2的結(jié)點數(shù)為n2,則二者之間的關(guān)系是n0=n2+1,該題中度為2的結(jié)點數(shù)為0,且只有一個葉子結(jié)點,因此,樹中度為1的結(jié)點有6個,很容易想到樹的高度為7。4、在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、軟件集成測試計劃B、軟件詳細設(shè)計說明書C、用戶手冊D、軟件需求規(guī)格說明書標準答案:D知識點解析:需求分析階段只能產(chǎn)生需求分析規(guī)格說明書。A測試說明書是軟件測試階段生成的;B軟件詳細設(shè)計說明書是設(shè)計階段生產(chǎn);C用戶手冊是軟件發(fā)布時隨軟件一同交付給用戶的。5、結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括()。A、順序結(jié)構(gòu)B、GOTO跳轉(zhuǎn)C、選擇(分支)結(jié)構(gòu)D、重復(循環(huán))結(jié)構(gòu)標準答案:B知識點解析:結(jié)構(gòu)化程序設(shè)計的3種結(jié)構(gòu)是,順序、分支和循環(huán),不包括goto跳轉(zhuǎn),它只是分支結(jié)構(gòu)的一種,也是一個關(guān)鍵字。6、下面描述中錯誤的是()。A、系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細設(shè)計B、軟件設(shè)計是將軟件需求轉(zhuǎn)換為軟件表示的過程C、數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫設(shè)計是軟件設(shè)計的任務之一D、PAD圖是軟件詳細設(shè)計的表示工具標準答案:A知識點解析:軟件系統(tǒng)的總體結(jié)構(gòu)圖是軟件架構(gòu)設(shè)計的依據(jù),它并不能支持軟件的詳細設(shè)計。7、負責數(shù)據(jù)庫中查詢操作的數(shù)據(jù)庫語言是()。A、數(shù)據(jù)定義語言B、數(shù)據(jù)管理語言C、數(shù)據(jù)操縱語言D、數(shù)據(jù)控制語言標準答案:C知識點解析:數(shù)據(jù)庫操縱語言專門負責查詢、增加、刪除等數(shù)據(jù)操作。8、一個教師可講多門課程,一門課程可由多個教師講授,則實體教師和課程間的聯(lián)系是()。A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系標準答案:D知識點解析:一個教師可以上多門課程,一門課程也可以由多個教師教授,這是典型的多對多的E—R關(guān)系。9、有3個關(guān)系R、S和T如下表所示:則由關(guān)系R和S得到關(guān)系的操作是()。A、自然連接B、交C、除D、并標準答案:C知識點解析:S中的關(guān)系全部出現(xiàn)在R中,只有做除法操作才會出現(xiàn)關(guān)系T。10、定義無符號整數(shù)為Uint,下面可以作為類Uint實例化值的是()。A、-369B、369C、0.369D、整數(shù)集合{1,2,3,4,5}標準答案:B知識點解析:A是有符號數(shù),C是浮點數(shù),D是結(jié)合并不是類的實例化對象,只有B完全符合。11、軟件工程理論和技術(shù)性研究的內(nèi)容主要包括軟件開發(fā)技術(shù)和()。A、消除軟件危機B、軟件工程管理C、程序設(shè)計自動化D、實現(xiàn)軟件可重用標準答案:B知識點解析:基于軟件工程的目標,軟件工程理論和技術(shù)性研究的內(nèi)容主要包括軟件開發(fā)技術(shù)和軟件工程管理。12、在面向?qū)ο蠓椒ㄖ?,一個對象請求另一個對象為其服務的方式是通過發(fā)送()。A、調(diào)用語B、命令C、H令D、消息標準答案:D知識點解析:在面向?qū)ο蠓椒ㄖ?,對象之間通過消息進行通信。消息中只包含傳遞者的要求,但并不指示接收者應該怎么完成這些處理。13、下列選項中,屬于軟件調(diào)試技術(shù)的是()。A、錯誤推斷B、集成測試C、回溯法D、邊界值分析標準答案:C知識點解析:軟件調(diào)試技術(shù)包括強行排錯法、回溯法和原因排除法。邊界值分析、錯誤推斷都是黑盒測試的方法。14、使用表設(shè)計器定義表中字段時,不是必須設(shè)置的內(nèi)容是()。A、字段名B、數(shù)據(jù)類型C、說明D、以上都必須設(shè)置標準答案:C知識點解析:在使用表設(shè)計器定義表中的字段時,必須指定字段名、數(shù)據(jù)類型和字段屬性,而說明可以不指定。15、下列不是創(chuàng)建表結(jié)構(gòu)的視圖形式的是()。A、數(shù)據(jù)庫視圖B、表向?qū)б晥DC、設(shè)計視圖D、數(shù)據(jù)表視圖標準答案:A知識點解析:創(chuàng)建表結(jié)構(gòu)的方法有數(shù)據(jù)表視圖、設(shè)計視圖和表向?qū)б晥D3種;而數(shù)據(jù)庫視圖是用來創(chuàng)建數(shù)據(jù)庫的。16、為了提高函數(shù)調(diào)用的實際運行速度,可以將較簡單的函數(shù)定義為()。A、內(nèi)聯(lián)函數(shù)B、重載函數(shù)C、遞歸函數(shù)D、函數(shù)模板標準答案:A知識點解析:內(nèi)聯(lián)函數(shù)一般是程序代碼少于10行的函數(shù),在編譯過程中,直接在調(diào)用點處被展開,不會因函數(shù)調(diào)用帶來巨大的系統(tǒng)開銷,因此能提高實際運行速度。17、若AA為一個類,a為該類的非靜態(tài)數(shù)據(jù)成員,在該類的一個成員函數(shù)定義中訪問a時,其書寫格式為()。A、aB、A.A.aC、a{}D、AA::a{}標準答案:A知識點解析:a是類AA的非靜態(tài)數(shù)據(jù)成員,在類AA的成員函數(shù)中可以直接訪問。B是訪問靜態(tài)數(shù)據(jù)成員的方式,C和D都是訪問函數(shù)的方式。18、當派生類從一個基類保護繼承時,基類中的一些成員在派生類中成為保護成員,這些成員在基類中原有的訪問屬性是()。A、任何B、公有或保護C、保護或私有D、私有標準答案:B知識點解析:保護繼承時基類的public和protected是保護的,私有繼承時基類的public和protected是私有的。19、若要對Date類中重載的加法運算符成員函數(shù)進行聲明,則下列選項中正確的是()。A、Data+(Data);B、Dataoperator+(Data)C、Data+operator(Data);D、operator+(Data.Data)標準答案:B知識點解析:重載運算符的函數(shù)一般格式如下:函數(shù)類型operator運算符名稱(形參列表)因此選B。20、下列關(guān)于函數(shù)模板的描述中,正確的是()。A、函數(shù)模板是一個實例函數(shù)B、使用函數(shù)模板定義的函數(shù)沒有返回類型C、函數(shù)模板的類型參數(shù)與函數(shù)的參數(shù)相同D、通過使用不同的類型參數(shù),可以從函數(shù)模板得到不同的實例函數(shù)標準答案:D知識點解析:函數(shù)模板只是聲明了一個函數(shù)的描述即模板,不是一個可以直接執(zhí)行的函數(shù),只有根據(jù)實際情況用實參的數(shù)據(jù)類型參數(shù)標識符之后,才能產(chǎn)生真正的函數(shù)。21、C++系統(tǒng)預定義了3個用于標準數(shù)據(jù)流的對象,下列選項中不屬于此類對象的是()。A、coutB、cinC、cerrD、cset標準答案:D知識點解析:C++的標準數(shù)據(jù)流對象有3個:cout標注輸出流,cin標準輸入流,cerr標準錯誤流。22、Windows環(huán)境下,由C++源程序文件編譯而成的目標文件的擴展名是()。A、cppB、exeC、objD、lik標準答案:C知識點解析:cpp是C++源文件的擴展名;exe是可執(zhí)行文件的擴展名;lik是連接文件的擴展名。23、字符串“a+b=12\n\t”的長度為()。A、12B、10C、8D、6標準答案:C知識點解析:\n表示回車,\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標準答案:C知識點解析:循環(huán)3次,分別每次計算出f1,f2和f的值,該題比較簡單,只需要細心即可。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標準答案:D知識點解析:根據(jù)程序的意思,找出數(shù)組a中最大值s1和最小值s2并計算二者的和。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標準答案:A知識點解析:該題考查了函數(shù)參數(shù)傳遞的兩種方式:引用傳遞和值傳遞,引用傳遞時x和y會交換,而傳值時二者不交換,因此選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標準答案:C知識點解析:每調(diào)用一次get函數(shù)時,對新的類A對象進行一次實例化,調(diào)用一次構(gòu)造函數(shù),類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標準答案:D知識點解析:簡單類之間繼承關(guān)系的調(diào)用,按照通常做法便可以得到答案。center.get()函數(shù)調(diào)用后,3和4的和被返回,接著再調(diào)用Circle類的radius成員變量5相加后得到12。29、若是對類BigNumber中重載的類型轉(zhuǎn)換運算符long進行聲明,則下列選項中正確的是()。A、operatorlong()const;B、operatorlong(BigNumber);C、longperatorlong()const;D、longoperatorlong(BigNumber);標準答案:A知識點解析:C++不僅可以對運算符進行重載,還可以重載類型轉(zhuǎn)換符,函數(shù)聲明的形式為:operator類型符()const。30、有如下函數(shù)模板定義:template<typenameT1,typenameT2>T1-FUN(T2n){returnn*5,0;}若要求以int型數(shù)據(jù)9作為函數(shù)實參調(diào)用該模板,并返回一個double型數(shù)據(jù),則該調(diào)用應表示為()。A、FUN(9)B、FUN<9>C、FUN(9)D、FUN<9>(double)標準答案:C知識點解析:函數(shù)返回類型是double型,則T1為double型,T2為int型才符合函數(shù)模板的定義。31、下列語句都是程序運行時的第1條輸出語句,其中一條語句的輸出效果與其他3條語句不同,該語句是()。A、cout<B、cout<C、tout<D、cout<標準答案:D知識點解析:setw(6)將輸出寬度設(shè)為6,如果位數(shù)不夠,則在最左邊補齊,因此該項輸出一定不會與其他3項一致。32、下列關(guān)于析構(gòu)函數(shù)的描述中,錯誤的是()。A、析構(gòu)函數(shù)可以重載B、析構(gòu)函數(shù)由系統(tǒng)自動調(diào)用C、每個對象的析構(gòu)函數(shù)只被調(diào)用一次D、每個類都有析構(gòu)函數(shù)標準答案:A知識點解析:析構(gòu)函數(shù)不能被重載,因為它的函數(shù)中不帶有任何參數(shù),也沒任何返回值,函數(shù)只有一個版本即“~類名(){}”。33、下列關(guān)于構(gòu)造函數(shù)的描述中,錯誤的是()。A、構(gòu)造函數(shù)名與類名相同B、構(gòu)造函數(shù)可以有返回值C、構(gòu)造函數(shù)可以重載D、每個類都有構(gòu)造函數(shù)標準答案:B知識點解析:構(gòu)造函數(shù)沒有返回值,雖然叫函數(shù),但是它沒有任何返回值,包括void型都不是,官方叫法應該叫“構(gòu)造器”。34、若PAT是一個類,則程序運行時,語句PAT(*ad){3};”調(diào)用PAT的構(gòu)造函數(shù)的次數(shù)是()。A、0B、1C、2D、3標準答案:A知識點解析:PAT(*ad){3}該表達式表示一個指向類PAT的數(shù)組的指針,只是聲明了該指針,而并沒有進行實例化對象,因此該語句運行時并不會調(diào)用構(gòu)造函數(shù)。35、下列描述中,錯誤的是()。A、公有繼承時基類中的公有成員在派生類中仍是公有成員B、公有繼承時基類中的保護成員在派生類中仍是保護成員C、保護繼承時基類中的公有成員在派生類中仍是公有成員D、保護繼承時基類中的保護成員在派生類中仍是保護成員標準答案:C知識點解析:保護繼承時,類成員的訪問級別只能是降低為保護模式,因此即使基類的共有成員,也被縮小為保護模式。36、生成派生類對象時,派生類構(gòu)造函數(shù)調(diào)用基類構(gòu)造函數(shù)的條件是()。A、無需任何條件B、基類中顯式定義了構(gòu)造函數(shù)C、派生類中顯式定義了構(gòu)造函數(shù)D、派生類構(gòu)造函數(shù)明確調(diào)用了基類構(gòu)造函數(shù)標準答案:D知識點解析:派生類的構(gòu)造函數(shù)必須通過調(diào)用基類的構(gòu)造函數(shù)來初始化基類子對象。所以在定義派生類的構(gòu)造函數(shù)時,除了對自己的類據(jù)成員進行初始化外,還必須負責調(diào)用基類構(gòu)造函數(shù),使基類的數(shù)據(jù)成員得以初始化。37、下列關(guān)于派生類和基類的描述中,正確的是()。A、派生類成員函數(shù)只能訪問基類的公有成員B、派生類成員函數(shù)只能訪問基類的公有和保護成員C、派生類成員函數(shù)可以訪問基類的所有成員D、派生類對基類的默認繼承方式是公有繼承標準答案:B知識點解析:派生類成員函數(shù)不能訪問基類的private成員,只能由基類的對象來訪問。這才體現(xiàn)了C++的數(shù)據(jù)封裝特性。38、有如下類模板定義:templateclassBigNumber{longn;public;BigNumber(Ti):n(i){}BigNumberoperator-}-(BigNumberb){returnBigNumber(n+b.n):}};已知b1、b2是BigNumber的兩個對象,則下列表達中錯誤的是()。A、bt+b2B、b1+3C、3+b1D、3+3標準答案:C知識點解析:該題考查了C++模板類和+運算符重載的知識,3+b1時,程序不能將b1轉(zhuǎn)化為整型,所以編譯會出錯。39、下列關(guān)于文件流的描述中,正確的是()。A、文件流只能完成針對磁盤文件的輸入/輸出B、建立一個文件流對象時,必須同時打開一個文件C、若輸入流要打開的文件不存在,將建立一個新文件D、若輸出流要打開的文件不存在,將建立一個新文件標準答案:C知識點解析:輸入流要打開的文件不存在,則會自動建立該文件,而輸出流要打開的文件不存在,則會報錯,而不會新建一個文件。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標準答案:B知識點解析:const函數(shù)只能被const對象調(diào)用,a.get()函數(shù)調(diào)用返回值是3,而b.get()調(diào)用的返回值是8。二、基本操作題(本題共1題,每題1.0分,共1分。)41、使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正其中的錯誤,使得程序正確運行。程序輸出:s1:n=20s2:n=10執(zhí)行s3.a(chǎn)dd(s1,s2)s3:n=30s4:n=30注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//********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="<標準答案:(1)應改為“TCadd(TCs1,TCs2)”。(2)應改為“return(*this);”。(3)應改為“};”。知識點解析:本題中的變量“s2”沒有聲明類型,所以補充“s2”的類型,即“TCadd(TCs1,TCs2)”?!皌his-)n=s1.n+s2.n;”語句中的this變量為指針變量,所以第2處的“return(this);”返回語句中的this變量,應該返回指針型,所以修改為“return(*this);”。C++中類的定義格式應為“class類名{};”,以分號為結(jié)尾,所以在第3處的類結(jié)尾處補充分號“;”,即修改為“};”。三、簡單應用題(本題共1題,每題1.0分,共1分。)42、使用vc++6.0打開考生文件夾下的源程序文件2.cpp。完成函數(shù)fun(char*s,inta[]),其功能是把字符串s中的數(shù)字提取出來存儲在a[]中,然后返回數(shù)字的個數(shù)。例如s="1234abcdef567",則a[]中存儲著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<標準答案: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;//返回數(shù)字個數(shù)知識點解析:本題中變量j用來記錄轉(zhuǎn)換的個數(shù),首先初始化為0,然后利用for循環(huán)判斷每一個當前字符是否為數(shù)字字符。如果為數(shù)字字符,就將其減去字符“0”,即實現(xiàn)字符和整型的轉(zhuǎn)換,并且將j的變量值加1。四、綜合應用題(本題共1題,每題1.0分,共1分。)43、使用VC++6.0打開源程序文件3.cpp。其中類TC用于把文件輸出到屏幕,然后進行文件的分割。分割的方法如下:第一個文件的大小是文件的前一半,另外一個文件的大小是剩余部分。此程序?qū)n.txt文件中的內(nèi)容輸出到屏幕,并且將文件按照以上方式分割,存于文件out1.txt和out2.txt中。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。(1)從輸入文件中獲得一個字符,并判斷是否到文件結(jié)尾,如果到文件結(jié)尾,則退出循環(huán)。請在注釋1后添加適當?shù)恼Z句。(2)把獲得的輸入文件的內(nèi)容存儲到buf中,并且用ten記錄下文件的長度。請在注釋2后添加適當?shù)恼Z句。(3)將輸入文件的后一半內(nèi)容存儲在第二個文件中,請在注釋3后添加適當?shù)恼Z句。(4)使用文件流對象打開輸入文件in.txt,請在注釋4后添加適當?shù)恼Z句。注意:增加代碼,或者修改代碼的位置已經(jī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<標準答案:(1)“while()”應改為“while(infile.get(ch))”。(2)應添加“buf[len++]=ch;buf[len]=ch;len++;”。(3)應添加“outfile2<知識點解析:本題考查了文件流的使用。根據(jù)題意,第1處要獲得一個字符,并判斷是否到文件結(jié)尾,所以應使用get函數(shù);第2處應將ch存入buf數(shù)組,同時讓len增1;第3處將huf中的字節(jié)輸出給outfile2,注意同時讓i增1,否則while循環(huán)將進入死循環(huán);第4處TC只有一個帶char*參數(shù)的構(gòu)造函數(shù),所以創(chuàng)建對象時必須使用構(gòu)造參數(shù),根據(jù)題意這個參數(shù)應該是“"in.txt"”。國家二級(C++)機試模擬試卷第3套一、程序改錯題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的工程test37_1,此工程包含一個源程序文件test37_1.cpp,但該程序運行有問題,請改正函數(shù)中的錯誤,使該程序的輸出結(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*****************/}標準答案:(1)錯誤:}正確:};(2)錯誤:template<classT,intN>Vector<T,N>::get(intpos)正確:template<classT,intN>TVector<T,N>::get(intpos)(3)錯誤:缺少返回值正確:加入return0;知識點解析:(1)主要考查考生對于類定義的理解,即使使用了類模板,在類定義的結(jié)尾仍然需要使用分號,這是C++的規(guī)定;(2)主要考查考生是否會掌握了模板類的定義,template是關(guān)鍵字,在0中間是類型的定義,題目中Vector是一個類的名稱,前面應該有該模板的名稱,即T,這樣才是完整的定義;(3)主要考查考生對于函數(shù)返回值的掌握,任何返回值類型不為int型的函數(shù)最后都必須使用returen語句返回對應類型的值,就算是main函數(shù)也不例外。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、請編寫函數(shù)fun(),其功能是計算并輸出當x<0.97時下列多項式的值,直到|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ù)從鍵盤給x輸入0.21后,則輸出為s=1.100000。注意:部分源程序以存在文件test38_2.cpp中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。文件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;}標準答案: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;}知識點解析:解答本題的關(guān)鍵是觀察所給的多項式,并從中找出變化規(guī)律。觀察得出,每一項分子的變化規(guī)律是每一項比前一項多乘一項“(0.5-n+1)*x”。分母的變化規(guī)律是每一項比前一項多乘一個n(即在不斷變化的各項的編號)。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的工程test36_3。此工程包含一個test36_3.cpp,其中定義了類CRectangle,但該類的定義并不完整。請按要求完成下列操作,將程序補充完整。(1)定義類CRectangle的數(shù)據(jù)成員width和height,它們都是int型的數(shù)據(jù)。請在注釋“//**1**”之后添加適當?shù)恼Z句。(2)添加類CRectangle的友元函數(shù)duplicate()的聲明,其返回值類型和參數(shù)類型均為Crectangle的,請在注釋“//**2**”之后添加適當?shù)恼Z句。(3)完成類Crectangle的成員函數(shù)set_values的定義,把傳入的參數(shù)a和b分別賦值為數(shù)據(jù)成員width和height,請在注釋“//**3**”之后添加適當?shù)恼Z句。(4)完成派生類Crectangle的友元函數(shù)duplicate的定義,把函數(shù)中的臨時對象rectres的值返回主函數(shù),請在注釋“//**4**”之后添加適當?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(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;}標準答案:(1)intwidth,height;(2)friendCRectangleduplicate(CRectangle);(3)width=a;height=b;(4)return(rectres);知識點解析:主要考查考生對于類的定義和友元函數(shù)的掌握,其中(2)中friend是定義友元的關(guān)鍵字,注意聲明之后的分號不能缺少(4)中從子函數(shù)中返回應該使用關(guān)鍵字return,只要符合返回類型的要求就可以直接使用return返回。國家二級(C++)機試模擬試卷第4套一、程序改錯題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的工程test25_1,此工程包含一個源程序文件test25_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使程序的輸出結(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;標準答案:(1)錯誤:include<iostream.h>正確:#include<iostream.h>(2)錯誤:classderivedl:publicbase正確:classderivedl:virtualpublicbase(3)錯誤:derived12(intp1,intp2,intpb):derivedl(p1),base(pb),derived2(p2){};正確:derived12(intp1,intP2,intPb):derivedl(P1),derived2(p2),base(Pb){};知識點解析:(1)主要考查考生對于include關(guān)鍵字的掌握,它的正確使用是#include;(2)主要考查考生對于虛基類的使用,為了正確的顯示結(jié)果,這里應該使用虛基類的定義,這樣在調(diào)用函數(shù)的時候就可以不產(chǎn)生二義性;(3)主要考查考生對于初始化參數(shù)表中賦值順序的掌握,它是按照從右至左依次賦值的二、簡單應用題(本題共1題,每題1.0分,共1分。)2、請編寫函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是則函數(shù)返回1,主函數(shù)中輸出YES:否則返回0,主函數(shù)中輸出NO?;匚氖侵疙樧x和倒讀都一樣的字符串。例如:字符串LEVEL是回文,而字符串123312就不是回文。注意;部分源程序已存在文件test26_.cpp中。請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填寫若干語句。文件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";}標準答案: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;}知識點解析:解答本題的主要思路是:首先要利用循環(huán)中指針的移動來求得字符串的長度n,然后用一個for循環(huán)依次取得數(shù)組中的前半部分元素,用取得的前半部分內(nèi)的元素逐個與后半部分內(nèi)的對應位置的元素進行比較,如果相同,不做任何工作,接著取下一個元素,繼續(xù)比較:如果不相同,可以判斷該字符串肯定不是回文,就給標志變量fg賦值0(fg的初始值為1)。最終把fg作為函數(shù)的返回值返回(fg值為1表明是回文,fg值為0表明不是回文)。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的工程test24_3,此工程包含一個源程序文件test24_3.cpp,其中定義了抽象類point和它的派生類line,但它們的定義并不完整。請按要求完成下列操作,將程序補充完整。(1)定義類point的構(gòu)造函數(shù),函數(shù)含參數(shù)i和j它們都是int型數(shù)據(jù),默認值都是0,用i和j分別將point的數(shù)據(jù)成員x0和y0初始化。請在注釋“//**1**”之后添加適當?shù)恼Z句。(2)完成類point的成員函數(shù)純虛函數(shù)voidset()和voiddraw()的定義,請在注釋“//**2**”之后添加適當?shù)恼Z句。(3)添加類line的構(gòu)造函數(shù),函數(shù)含參數(shù)i,j,m和n,它們都是int型數(shù)據(jù),默認值都是0,用i和j分別將point的數(shù)據(jù)成員x0和y0初始化。請在注釋“//**3**”之后添加適當?shù)恼Z句。輸出結(jié)果如下:line::set()called.注意:除在指定位置添加語句之外,請不要改動程序中的其他內(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();}標準答案:(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ù)和抽象類以及派生類構(gòu)造函數(shù)的使用,注意(2)中純虛函數(shù)的定義格式。純虛函數(shù)是一種特殊的函數(shù),不是在基類中實現(xiàn),而是在派牛類中實現(xiàn),說明格式是在函數(shù)聲明中加入關(guān)鍵字“virtual”和“=0”。如:virtualvoidset()=0;。而帶有純虛函數(shù)的類就是抽象類,它是不能定義對象的,只是一個公共的類。國家二級(C++)機試模擬試卷第5套一、選擇題(本題共35題,每題1.0分,共35分。)1、下列敘述中正確的是()。A、棧是“先進先出”的線性表B、隊列是“先進后出”的線性表C、循環(huán)隊列是非線性結(jié)構(gòu)D、有序線性表既可以采用順序存儲結(jié)構(gòu),也可以采用鏈式存儲結(jié)構(gòu)標準答案:D知識點解析:本題考查了棧、隊列、循環(huán)隊列的基本概念。棧的特點是先進后出;隊列的特點是先進先出。根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間的復雜程度,將數(shù)據(jù)結(jié)構(gòu)分線性結(jié)構(gòu)與非線性結(jié)構(gòu)兩類。有序線性表即可采用順序存儲結(jié)構(gòu),也可以采用鏈式存儲結(jié)構(gòu)。2、支持子程序調(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í)行,這種過程符合棧的特點。所以一般采用棧式存儲方式。3、某二又樹有5個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)是()。A、10B、8C、6D、4標準答案:C知識點解析:根據(jù)二叉樹的性質(zhì)判定,在任意二叉樹中,度為。的葉子結(jié)點總是比度為2的結(jié)點多一個。4、軟件按功能可以分為應用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下列屬于應用軟件的是()。A、編譯程序B、操作系統(tǒng)C、教務管理系統(tǒng)D、匯編程序標準答案:C知識點解析:編譯程序和匯編程序?qū)儆陂_發(fā)工具;操作系統(tǒng)屬于系統(tǒng)軟件;而教務管理系統(tǒng)屬于應用軟件。5、下列敘述中錯誤的是()。A、軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤B、對被調(diào)試的程序進行“錯誤定位”是程序調(diào)試的必要步驟C、程序調(diào)試通常也稱為DebugD、軟件測試應嚴格執(zhí)行測試計劃,排除測試的隨意性標準答案:A知識點解析:軟件測試的目的是為了發(fā)現(xiàn)錯誤及漏洞而執(zhí)行程序的過程;軟件測試要嚴格執(zhí)行測試計劃;程序調(diào)試通常也稱Debug,對被調(diào)試的程序進行“錯誤”定位是程序調(diào)試的必要步驟。6、耦合性和內(nèi)聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是()。A、提高耦合性降低內(nèi)聚性有利于提高模塊的獨立性B、降低耦合性提高內(nèi)聚性有利于提高模塊的獨立性C、耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度D、內(nèi)聚性是指模塊間互相連接的緊密程度標準答案:B知識點解析:耦合是指模塊間相互連接的緊密程度,內(nèi)聚性是指在一個模塊內(nèi)部各個元素彼此之間接合的緊密程序。高內(nèi)聚、低耦合有利于模塊的獨立性。7、數(shù)據(jù)庫應用系統(tǒng)中的核心問題是()。A、數(shù)據(jù)庫設(shè)計B、數(shù)據(jù)庫系統(tǒng)設(shè)計C、數(shù)據(jù)庫維護D、數(shù)據(jù)庫管理員培訓標準答案:A知識點解析:數(shù)據(jù)庫設(shè)計的目的是設(shè)計一個能滿足用戶要求、性能良好的數(shù)據(jù)庫。所以數(shù)據(jù)庫設(shè)計的核心是數(shù)據(jù)庫應用。8、有兩個關(guān)系R、S如下所示:由關(guān)系R通過運算得到關(guān)系S,則所使用的運算為()。A、選擇B、投影C、插入D、連接標準答案:B知識點解析:本題考查關(guān)系的運算,一個關(guān)系R通過投影運算后仍為一個關(guān)系R’,R’是由R中投影運算所指出的引起域的列所組成的關(guān)系。選擇運算主要是對關(guān)系R中選擇由滿足邏輯條件的元組所組成的一個新關(guān)系,所以題中關(guān)系S是由R投影所得。9、將E-R圖轉(zhuǎn)換為關(guān)系模式時,實體和聯(lián)系都可以表示為()。A、屬性B、鍵C、關(guān)系D、域標準答案:C知識點解析:在C語言中,將E—R圖轉(zhuǎn)換為關(guān)系模式時,實體和聯(lián)系都可以表示為關(guān)系。10、下列選項合法的標識符是()。A、1_1B、1_1C、_11D、1__標準答案:C知識點解析:C語言中標識符命中的規(guī)則是:標識符只能由字母、數(shù)字和下畫線組成,第一個字符必須為字母或下畫線。所以選項C正確。11、若函數(shù)中有定義語句“intk;”,則()。A、系統(tǒng)將自動給k賦初值0B、這時k中的值無定義C、系統(tǒng)將自動給k賦初值-1D、這時k中無任何值標準答案:B知識點解析:根據(jù)題目,若以這種方式定義變量k時,編譯程序僅為k開辟存儲單元,并未在存儲單元中存放任何初始值,所以變量中的值無意義,稱變量值“無定義”。所以正確答案為選項B。12、下列選項中,能用作數(shù)據(jù)常量的是()。A、0115B、118C、1.5e1.5D、115L標準答案:D知識點解析:選項A的第一個字母是0而不是數(shù)字0,所以不構(gòu)成數(shù)值常量;選項B中,8不是八進制數(shù)字,八進制數(shù)為。到7;選項C中字母“e”后面的指數(shù)是小數(shù)而非整數(shù),不合法,不是一個合法的指數(shù)形式的數(shù)值常量;在選項D中,可以在整型常量的后面加一個字母L,表示這個常量在內(nèi)存中占4字節(jié)。13、設(shè)有定義“intx=2;”,下列表達式中,值不為6的是()。A、x*=x+1B、x++,2*xC、x*=(1+x)D、2*x,x+=2標準答案:D知識點解析:本題考查了復合運算符“*=”和逗號表達式如何正確求值。逗號表達式的作用是用逗號將表達式連起來,其有效值為最后一個表達的值,其運算的結(jié)合性從左到右進行運算。選項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標準答案:A知識點解析:根據(jù)輸出函數(shù)printf中對輸出數(shù)值格式的要求,第一個數(shù)和第二數(shù)之間沒有空格或分隔號,因而此題答案為選項A。15、若有定義語句“doublex,y,*px,*Py;執(zhí)行了px=&x;py=&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);標準答案:C知識點解析:此題主要考查輸入函數(shù)的字符格式,lf和le表示以帶小數(shù)點的數(shù)學形式或指數(shù)形式輸入浮點數(shù)。16、下列是if語句的基本形式:if(表達式)語句其中“表達式”()。A、必須是邏輯表達式B、必須是關(guān)系表達式C、必須是邏輯表達式或關(guān)系表達式D、可以是任意合法的表達式標準答案:D知識點解析:在C語言中if關(guān)鍵字后的一對圓括號中的表達式可以是C語言中任意合法的表達式。17、有下列程序:#includevoidmain(){intx;Scanf("%d",&x);if(x<=3);elseif(x!=10)printf("%d\n",x);}程序運行時,輸入的值在哪個范圍才會有輸出結(jié)果()。A、不等于10的整數(shù)B、大于3且不等10的整數(shù)C、大于3或等于10的整數(shù)D、小于3的整數(shù)標準答案:B知識點解析:在本題的程序中輸入的數(shù)值小于等于3時,不進行任何處理。如果輸入的數(shù)值大于3并且其值不等于10時,則打印輸入的數(shù)值。所以本題的正確答案為選項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);}程序運行后的輸出結(jié)果是()。A、1,2,3B、1,3,2C、1,3,3D、3,2,1標準答案:C知識點解析:在程序中,當執(zhí)行第一條if語句時,進行邏輯語句的判斷,因為變量b的初值為2,所以其值加1后為3與2不相等,所以if語句中的邏輯表達式的值為假,則程序執(zhí)行最后一條elseprintf語句,輸出變量為a,b,c,當前數(shù)值為1,3,3。所以正確答案為選項C。19、下列程序段中的變量已正確定義:for(i=0;i<4;i++,i++)for(k=1;k<3;k++);printf("*");程序段的輸出結(jié)果是()。A、********B、****C、**D、*標準答案:D知識點解析:本題中第二個for循環(huán)語句的后面有一個分號,所以兩個for循環(huán)語句的執(zhí)行語句為空。當兩個for循環(huán)語句執(zhí)行完后,再執(zhí)行printf語句輸出一個星號。所以正確答案為選項D。20、設(shè)變量已正確定義,下列不能統(tǒng)計出一行中輸入字符個數(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++);標準答案:D知識點解析:本題中,第一條語句對變量13.賦初值時為0,在for循環(huán)中,從getchar函數(shù)得到一個輸入的字符,然后判斷這個字符是否為回車換行符,如果不是則變量n加1,而在程序運行時,每次輸入時是一個字符串,而不是一個字符,因而for循環(huán)語句得不到正確的執(zhí)行,所以不能夠統(tǒng)計出一行中字符的個數(shù)。所以正確答案為選項D。21、有下列程序:#includevoidmain(){inta1,a2charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("%d%c%d%c",a1,c1,a2,c2);}若想通過鍵盤輸入,使得a1的值為12,a2的值為34,c1的值為字符a,c2的值為字符b,程序輸出結(jié)果是12,a,34,b,則正確輸入格式是(以下[*]代表空格,代表回車)()。A、12a36bB、C、12,a,34,bD、標準答案:A知識點解析:從程序的輸入格式控制方法判斷,輸入時各變量之間沒有分隔符,當輸入相應的變量對應的值時,相應的變量能夠得到對應的值,可以輸出要求的結(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);}程序運行后的輸出結(jié)果是()。A、10B、9C、8D、7標準答案:B知識點解析:在C語言中,子函數(shù)f(intx,int)的功能是計算y減去x的差與X之積。所以在主函數(shù)中,調(diào)用f(a,b)的值等于3,調(diào)用f(a,c)的值等于6,然后再調(diào)用f(3,6)的值等于9,所以正確答案為選項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,程序運行后的輸出結(jié)果是()。A、dB、goC、godD、good標準答案:A知識點解析:在本題中,子函數(shù)fun(char*s)的功能是如果*S的ASCII值是偶數(shù),則輸出*S,主函數(shù)中當實參的值為good時,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)}程序運行后的輸出結(jié)果是()。A、3,5,5,3B、3,5,3,5C、5,3,3,5D、5,3,5,3標準答案:B知識點解析:本題子函數(shù)fun(int*a,*b)的功能是交換形參a,b的值。主函數(shù)中調(diào)用子函數(shù)fun(p,q)和fun(&x,&y)后,實參p,q和&x,&y的值之間并沒有發(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;}程序運行后的輸出結(jié)果是()。A、1,3B、2,3C、1,4D、1,2標準答案:A知識點解析:本題中子函數(shù)f(int*p,*q)的功能是對指針P的值加1,*q的值加1。主函數(shù)中調(diào)用子函數(shù)f(r,&n)時,子函數(shù)的執(zhí)行結(jié)果是r值加1,n.的值加1。而m的值并沒有發(fā)生變化,最后程序輸出的結(jié)果為1,3。所以正確答案為選項A。26、下列函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù)。voidfun(int*w,intn){inti;for(i=0;i<n;i++){______printf("%d",w[i]);}printf("\n")}下畫線處應填入的語句是()。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標準答案:D知識點解析:在程序中,fun函數(shù)的功能是每行輸出8個數(shù)組中的數(shù)據(jù),在for循環(huán)中,每次循環(huán)時,都對數(shù)組下標值8求模得到余數(shù)。如果余數(shù)等于0,則退出for循環(huán),進行下一次循環(huán):如果余數(shù)不等于0,則輸出數(shù)組的元素w[i]。27、若有下列定義intx[10],*pt=x;則對x數(shù)組元素的正確引用是()。A、*&x[10]B、*(x+3)C、*(pt+10)D、pt+3標準答案:B知識點解析:在C語言中,數(shù)組名是一個存放地址值的指針變量名,其地址值是數(shù)組第一個元素的地址,也是數(shù)組所占一串連續(xù)存儲單元的起始地址。因為數(shù)組的下標是從0開始的,所以選項B中,x+3表示數(shù)組x[10]中的第四個元素的地址,在其前面加上星號,表示是數(shù)組x[10]中的第四個元素中的值。所以正確答案為選項B。選項A、C的地址范圍超出級數(shù)x[10]中元素的地址范圍,選項D表示的是地址值。28、設(shè)有定義“chars[8];inti=0;”,下列不能將一行(不超過80個字符)帶有空格的字符串正確讀入的語句或語句組是()。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’標準答案:C知識點解析:在scanf輸入函數(shù)中,格式字符S的作用是輸入一個字符串,直到遇到空格結(jié)束。所以選項C不能輸入包含空格的字符串。正確答案應該為選項C。29、有下列程序:#includevoidmain(){char*a[]={"abcd","ef","gh","ijk");inti;for(i=0;i<4;i++)printf("c",*a[i]);}程序運行后的輸出結(jié)果是()。A、aegiB、dfhkC、abedD、abcdefghijk標準答案:A知識點解析:*a[]表示一個字符串數(shù)組,for循環(huán)的作用是輸出字符串數(shù)組中每一次字符串的第一個字符。所以正確答案為選項A。30、下列選項中正確的語句是()。A、chars[];s="BOOK!";B、char*s;s={"BOOK!"};C、charsi[10];s="BOOK";D、char*s;s="BOOK!";標準答案:D知識點解析:在選項D中,字符指針S指向字符串常量BOOK!。故選項D正確。31、設(shè)函數(shù)中有整型變量n,為保證其在未賦初值的情況下初值為0,應選擇存儲類別是()。A、autoB、registerC、staticD、auto或register標準答案:C知識點解析:在C語言中,未賦初值的靜態(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");}程序運行后的輸出結(jié)果是()。A、1012B、810C、1028D、1016標準答案:C知識點解析:在程序中子函數(shù)fun(int*k)的作用是給靜態(tài)全局變量加上形參*k的值。在主函數(shù)中進行第一次for循環(huán)執(zhí)行時,fun(&a[2])的返回值為5,所以5+5=10,因而輸出結(jié)果為10,第二次for循環(huán)執(zhí)行時,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);}程序的運行結(jié)果是()。A、1,2B、2,3C、3,4D、4,1標準答案:B知識點解析:在本題中結(jié)構(gòu)體成員訪問運算符->的優(yōu)先級高于++算術(shù)運算符,所以表達式++p>x的計算過程是首先取出結(jié)構(gòu)體dt[0]的成員變量x的值1,然后再對其值加1,得到2輸出。表達式++p->y的計算過程是首先取出結(jié)構(gòu)體dt[0]的成員變量y的值2,然后再對其值加1,得到3輸出。34、設(shè)有宏定義“#defineIsDIV(k,n)((k%n==1?1:0)”且變量m已正確定義并賦值,則宏調(diào)用“IsDIV(m,5)&&IsDIV(m,7)”為真時所要表達的是()。A、判斷m是否能被5或者7整除B、判斷m是否能被5和7整除C、判斷m被5或者7整除是否余1D、判斷m被5和7整除是否都余1標準答案:D知識點解析:本題考查宏定義,宏定義IsDIV(k,n)的意思是如果k對n求模的余數(shù)為1,其值等于1,否則其值等于0。本題中宏調(diào)用表達式是兩個宏調(diào)用之間的邏輯與運算,所以選項D正確。35、有下列程序:#includevoidmain(){FILE*f;f=fopen("filea.txt","w");fprintf(f,"abc");fclose(f);}若文本文件filea.txt中原有內(nèi)容hello,則運行以上程序后,文件filea.txt中的內(nèi)容為()。A、helloabcB、abcloC、abcD、abchello標準答案:C知識點解析:把字符串a(chǎn)bc以只寫的方式寫入到文件filea.txt中,覆蓋掉原有的字符串hello。二、基本操作題(本題共1題,每題1.0分,共1分。)36、使用VC++6.0打開考生文件夾下的源程序文件1.epp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,即使程序在屏幕上輸出以下類似內(nèi)容:0012FF6810012FF3C50012FF6C20012FF4440012FF7030012FF4C30023FF7440012FF5420012FF7850012FF5C1006AFDCC,~006AFDEF可能因為機器的不同,程序輸出的內(nèi)容會有差異,只要是相差為4的連續(xù)地址即可。注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025企業(yè)管理資料合同期滿解除勞動合同文檔范本
- 2025涵洞砌體施工合同
- 辯論技巧與學生思維表達的融合
- 血液病定期檢查的重要性與早期發(fā)現(xiàn)策略
- 2024年免疫分析儀器及試劑項目項目投資申請報告代可行性研究報告
- 個人食堂承包合同2025年度版:食品安全與營養(yǎng)健康服務協(xié)議3篇
- 2025年統(tǒng)編版2024高一語文上冊階段測試試卷含答案
- 2025年新世紀版必修二歷史上冊階段測試試卷
- 2025年冀少新版八年級歷史下冊月考試卷含答案
- 2025年滬教版九年級歷史上冊月考試卷
- 吉林省吉林市普通中學2024-2025學年高三上學期二模試題 生物 含答案
- 《電影之創(chuàng)戰(zhàn)紀》課件
- 社區(qū)醫(yī)療抗菌藥物分級管理方案
- 開題報告-鑄牢中華民族共同體意識的學校教育研究
- 《醫(yī)院標識牌規(guī)劃設(shè)計方案》
- 公司2025年會暨員工團隊頒獎盛典攜手同行共創(chuàng)未來模板
- 新滬科版八年級物理第三章光的世界各個章節(jié)測試試題(含答案)
- 夜市運營投標方案(技術(shù)方案)
- 電接點 水位計工作原理及故障處理
- 國家職業(yè)大典
- 2024版房產(chǎn)代持協(xié)議書樣本
評論
0/150
提交評論