




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2023年江蘇省蘇州市全國計算機等級考試
C++語言程序設計測試卷(含答案)
學校: 班級: 姓名: 考號: 一、1.選擇題(10題)下列引用的定義中,()是錯誤的。inti;int&j=i;inti;int&j;j=i;floati;float&j=i;chard;char&k=d;下列描述正確的是表示m>n為true或m<n為true的表達式為m>n&&8m<nswitch語句結構中必須有default語句if語句結構中必須有else語句如果至少有一個操作數為true,則包含“11”運算符的表達式為true完全不考慮程序的內部結構和內部特征,而只是根據程序功能導出測試用例的測試方法是()黑箱測試法B.白箱測試法C.錯誤推測法D.安裝測試法需求分析中開發人員要從用戶那里了解()。軟件做什么B.用戶使用界面C.輸入的信息D.軟件的規模下列一維數組定義正確的是()。x=5;intnum[x];constihtx=5;floatnum[x];constfloatx=5;intnum[x];constintx;x=5;intnum[x];實現運行時的多態性要使用()。A.重載函數B.析構函數C.構造函數D.虛函數下列關于this指針的敘述中,正確的是()。任何與類相關的函數都有this指針類的成員函數都有this指針類的友元函數都有this指針類的非靜態成員函數才有this指針在最壞情況下,下列排序方法中時間復雜度最小的是A.冒泡排序B.快速排序C.插入排序D.堆排序下列關于棧的描述中正確的是在棧中只能插入元素而不能刪除元素在棧中只能刪除元素而不能插入元素棧是特殊的線性表,只能在一端插入或刪除元素棧是特殊的線性表,只能在一端插入元素,而在另一端刪除元素在軟件開發過程中,需求分析階段產生的主要文檔是A.可行性分析報告B.軟件需求規格說明書C.概要設計說明書D.集成測試計劃二、單選題(13題)有如下程序:#include<iostream>usingnamespacestd;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?pb->Category();return0;}若程序運行時輸出結果是“文學”,則劃線處缺失的語句是char*Category();char*Category()const;virtualchar*Category()const;virtualchar*Category()const=0;下列關于對象初始化的敘述中,正確的是定義對象的時候不能對對象進行初始化定義對象之后可以顯式地調用構造函數進行初始化定義對象時將自動調用構造函數進行初始化在一個類中必須顯式地定義構造函數實現初始化下面關于C++語言變量的敘述錯誤的是C++語言中變量分為auto,static,extern和register四種存儲類型自動變量和外部變量的作用域為整個程序內部靜態變量的作用域是定義它的函數外部靜態變量的作用域是定義它的文件以下非法的賦值表達式是()。A.n=(i=2,++i);B.j++;C.++(i+l);D.x=j>0;下面描述中錯誤的是()。系統總體結構圖支持軟件系統的詳細設計軟件設計是將軟件需求轉換為軟件表示的過程數據結構與數據庫設計是軟件設計的任務之一PAD圖是軟件詳細設計的表示工具關于類和對象描述錯誤的是對象(Obiect)是現實世界中的客觀事物,對象具有確定的屬性類是具有相同屬性和行為的一組對象的集合對象是類的抽象,類是對象的實例類是對象的抽象,對象是類的實例下列代碼段中聲明了3個類:ClassPerson{);ClassStudent:publicPerson{);ClassUndergraduate:Student)};下列關于這些類之間關系的描述中,錯誤的是()。類Person是類Undergraduate的基類類Undergraduate從類Student公有繼承類Student是類Person的派生類類Undergraduate是類Person的派生類下列關于類的訪問權限的描述中,()是錯誤的。類中說明為公有的成員可以被程序中的任何代碼訪問類中說明為私有的成員只能被類的成員函數和說明為友元類的成員函數訪問類中說明為保護的成員可以被該類的派生類的成員訪問類的對象和類成員函數一樣可以訪問類的所有成員對虛函數的調用()。A.—定使用動態聯編B.必須使用動態聯編C.一定使用靜態聯編D.不一定使用動態聯編若有如下類聲明:ClassMyClass{public:MyClass( ){Cout?l;}};執行下列語句MyClassa,b[2],*p[2];程序的輸出結果是()。A.llB.lllC.llllD.lllll下面描述中體現了抽象類特性的語句是A.可以說明虛函數B.可以進行構造函數重載C.可以定義友元函數D.不能定義對象?有如下程序:#include(iostream.h>#include<stdlib.h>classTestClasspublic:intX,y;TestClass( )(x=y=O;}TestClass(inta?intb)(x=a;y=b;}voiddisp( )(cout?"x=,,?x?H,y=”vyvvendl;)};voidmain( )(TestClasssl(2,3);si.disp( );)程序執行后的輸出結果是()oA.100B.000C.010D.001已知三個關系:學生(學號,姓名,性別)課程(課程編號,課程名稱,學時)成績(學號,課程編號,分數)若要列出選修課程名稱為“DB”,且分數低于60的學生姓名和分數,則應使用的關系代數運算有 A.選擇、投影,自然連接B.選擇、投影C.選擇、自然連接D.投影、自然連接三、2.填空題(12題)有以下程序:#include<iostream>usingnamespacestd;classMyClass(public:staticints;MyClass();voidSetValue(intval););intMyClass::s=0;MyClass::MyClass(){s++;}voidMyClass::SetValue(intval)(s=val;}intmain()(MyClassmy[3],*p;p=my;for(intk=O;k<3;k++)(P->SetValue(k+l);P++;}cout<<MyClass::s<<endl;return0;}運行后的輸出結果是 。其中反映了模塊內25.耦合和內聚是評價模塊獨立性的兩個主要標準,其中反映了模塊內各成分之間聯系的是【】。26.按照邏輯結構分類,結構可以分為線性結構和非線性結構,棧屬于結構化程序設計的三種基本結構分別是順序、選擇和 o開發一個C++語言程序的步驟通常包括編輯、【】、鏈接、運行和調試。在面向對象的程序設計中,將數據和處理數據的操作封裝成一個整體就定義了一種事物的類型,稱作“類”。類是一種抽象的概念,屬于該類的一個實例稱為" 下列程序的運行結果是【]o#include<iostream,h>classtest(private:intnum;public:test()intTEST(){returnnum+100;}~test());test::test(){num=0;}test::-test()(cout<<"Destructorisactive"<<endl;}voidmain()(testx[3]cout<<x[l].TEST()<<endl;}若要想進行標準輸入輸出則頭文件必須包含 件。為了克服軟件危機提出了【】概念。下面程序的輸出結果是【】。#include<iostream.h>voidmain()(inta[6]=(l,2,3,4,5,6};for(inti=0;i<5;i++)cout<<a[i]<<,,n;cout<<endl;}在析構函數中調用虛函數時,采用【】聯編。若有函數fun(x,y),并且已經使函數指針變量p指向函數fun,貝IJ使用P調用函數fun的方法是 0四、程序改錯題(1。題)使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正程序中的錯誤,使得程序輸出:9,8,7,6,5}}cout?endl;returnO;}37.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,但該程序運行有問題,請改正main函數中的錯誤,使該程序的輸出結果正確。程序輸出:88注意:錯誤的語句在/********error********/的下面。修改該語句即可,其他的語句不能修改。試題程序:#include(iostream.h>classCO(public:/********error********/staticintn=O:CO(n++:1?COn—:}:intCO::n;voidmain{COobj;COobj2[7];CO*C=NULL:c=&obj:eout?C.n?endl;cout?C0::n?endl;}38.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正程序中的錯誤。本程序要求實現的功能為從鍵盤輸入一個字符串,并將結果保存到文件1.txt中。注意:不要改動main函數,不能增加或刪除行,也不能更改程序的結構,錯誤的語句在試題程序:#include<iostream>#include<fstream>usingstd;voidWriteFile(char*s)(ofstreamoutl;outl.open("1.txt",binary|app);for(inti=0;s[i]!=0;i++)outl.puts(s[i]);)outl.close;)voidClearFile{ofstreamoutl;outl.open("1.txt”);outl.close;)intmain(chars[1024];ClearFile;cout?"pleaseinputastrin9:"?endl;cin.getline(s,1024);WriteFile(s);returnO;}39.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯,請改正其中的錯誤,使程序正常運行,輸出的結果為Constructor?i=0.Destructor注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include(iostream.h)classTC(inti;public:TC;voiddisplay;?TC;};//******error******TC:TC{cout?,'Constructor"?",";i=0;#include<iostream.h>classTC(public:TC(inti)(number=i;)voidSetNumber(intm){number=m;)intGetNumberconst(returnnumber;}voidPrintconst{cout?"number="?number?endl;)private:intnumber;voidmain//********eifor********TCobjl;objl.Print;TCobj2(3);//********eifor********objl.number=10;//********error*%<)******TC.SetNumber(lOO);objl.Print;obj2.Print;42.使用VC++6.0打開考生文件夾下的源程序文件1,cppo本程序要求輸入一個字符串,然后將其中的小寫字母改成大寫字母,字符可能輸入多行,當輸入字符“?''時,默認字符輸入結束,最后把結果輸出到屏幕中。注意:不要改動main函數,不能増加或刪除行,也不能更改程序的結構,錯誤的語句在//******error******的下面。試題程序:#include<iostream.h>voidmain(inti=0;charstrll20];cout?nEnterastringendwith?."?endl;//********euor********cin.getline(str,120);//********euor********while(str)//********euor********if(str[i])=a)str[i]=str[i]-a+A;i++;1cout?str?endl;return;}43.使用VC++6.。打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯。請改正程序中的錯誤,使程序輸出的結果為1003732注意:錯誤的語句在//******error******的下面,修改該語句即可。試題程序:#include<iostream.h>voidmain//******error******intm=0142:intn=0X27:intq=32;cout<<m<<endl;cout<<n<<endl;coutV<q<Vendl;return;}44.使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正錯誤,使程序正常運行,并且要求最后一個catch必須拋出執行的任何異常。程序異常,輸出信息為errorOERROR注意:不要改動main函數,不能增加或刪除行,也不能更改程序的結構,錯誤的語句在//******eiror******的下面。試題程序:#include<iostream.h)intmain(try(throw("error");}//********error********catch(chars)errorOERROR注意:不要改動main函數,不能增加或刪除行,也不能更改程序的結構,錯誤的語句在//******error******的下面。試題程序:#include<iostream.h)intmain{try{throw("error");catch(chars)(cout?s?endl;throw((int)0);catch(cout?i?endl;)try{throw(O);throw("errorH);}catch(cout?"ERROR"?endl:}returnO;}五、綜合應用題(2題)46.使用VC++6.0打開考生文件夾下的源程序文件3.cppo其中定義的類不完整,按要求完成下列操作,將類的定義補充完整。每賣出一個水果,則計算水果的重量,還要計算所有賣出水果的總重量以及總個數,同時允許退貨,請按照以下的操作,把類補充完整。定義類TCFruit的私有靜態數據成員float型變量AllWeight和int型變量A11N0,請在注釋1后添加適當的語句。完成類TCFruit的帶一個float型變量w的構造函數,并把這個w加到AllWeight中,并且AllNo自加。請在注釋2后添加適當的語句。在析構函數中,在AllWeight中減去weight,然后AllNo自減,請在注釋3后添加適當的語句。完成靜態成員變量的初始化為0,請在注釋4后添加適當的語句。注意:增加或者修改代碼的位置已經用符號表示出來,請不要修改其他的程序代碼。試題程序:#include(iostream.h>classTCFruitprivate:floatWeight;********1********staticintAHNo;public:TCFruit(floatw)//********2********AllWeight+=w:AllNo++:1?TCFruitAllWeight-=Weight:}voiddisplay{cout?"SellaFruitwith"?Weight?nk9n?endl;coutvv”Allsellnumber:"vvAllNovVendl;cout?nAllsellweight:n?AllWeight?nk9H?endl?endl;1};//********4********floatTCFruit::AllWeight=O.0;intmain(TCFruitFruitl(l.2);Fruitl.display;TCFruitFruit2(2.3);Fruit2.display;returnO;}47.使用VC++6.0打開源程序文件3.cppo其中類TC用于把文件輸出到屏幕,然后進行文件的分割。分割的方法如下:第一個文件的大小是文件的前一半,另外一個文件的大小是剩余部分。此程序將in.txt文件中的內容輸出到屏幕,并且將文件按照以上方式分割,存于文件。utl.txt和out2.txt中。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。從輸入文件中獲得一個字符,并判斷是否到文件結尾,如果到文件結尾,則退出循環。請在注釋1后添加適當的語句。把獲得的輸入文件的內容存儲到bur中,并且用len記錄下文件的長度。請在注釋2后添加適當的語句。將輸入文件的后一半內容存儲在第二個文件中,請在注釋3后添加適當的語句。(4)使用文件流對象打開輸入文件in.txt,請在注釋4后添加適當的語句。注意:增加代碼或者修改代碼的位置已經用符號表示出來。請不要修改其他的程序代碼。試題程序:#include<iostream.h>#include<fstream.h>#include<stdlib.h)classTC(public:TC(char*fileName)(len=O;fstreaminfile;infile.open(fileName,ios::in);charch;//********]********while(cout?ch;}infile,close;}
voidsplitfetreamoutfilel;fstreamoutfile2;outfilel.outfile2.open("outl.txt",ios::out);open("out2.txt",ios::out);inti=0:outfilel.outfile2.for(i=0;i<len/2;i++)while(i!=len);outfilel.close;outfile2.close;prwate:intlen;charbuf[1024];};voidmain//********4********TCobj;obj.split;return;1六、3.綜合應用題(2題)48.使用VC6打開考生文件夾下的工程test37_3o此工程包含一個test37_3.cpp,其中定義了類Letter和Number以及Grid,其中Grid類由Letter類和Number類public派生,但三個類的定義并不完整。請按要求完成下列操作,將程序補充完整。添加類Letter的帶一個參數c的構造函數,c是char型的數據,默認值為A,該函數把參數c的值賦給類的保護成員ch,請在注釋“〃**1**”之后添加適當的語句。添加類Number的帶一個參數n的構造函數,n是int型的數據,默認值為0,該函數把參數n的值賦給類的保護成員num,請在注釋“〃**2**”之后添加適當的語句。添加派生類Grid構造函數的定義,傳入的參數為char型的c和血型的n,并將其分別賦值給基類的ch和num,請在注釋“〃**3**”之后添加適當的語句。完成派生類Grid的友元函數——“<〈”運算符重載的定義,使其以格式“[g.ch,g.num]”輸出,請在注釋“〃**4**”之后添加適當的語句。源程序文件test37_3.cpp清單如下:#include<iostream,h>classLetterprotected:charch;public://**]**);classNumber(protected:intnum;public:〃**2**};classGrid:publicLetter,publicNumber(public:〃**3**friendostream&operator<<(ostream&o,Grid&g););//**4**(o<<T<<g.ch<<”,”<<g.num<<T;returno;)intmain()(GridgCC\3);cout<<"Gridreference:"<<g<<endl;return0;}49.使用VC6打開考生文件夾下的工程test9_3,此工程包含一個源程序文件test9_3.cpp,其中定義了Circle類與Money類,Circle類可對半徑為r的圓進行周長與面積的計算,而Money類用于計算一圓形游泳池的造價。游泳池四周有原形過道,過道外圍上柵欄,過道寬度為3米,根據鍵入的游泳池半徑,每米柵欄價格及每平方米過道價格,即可計算出游泳池的造價。請按要求完成下列操作,將程序補充完整。⑴定義符號常量PI(值為3.14159。與WIDTH(值為3.00。,分別用于表示圓周率與過道的固定寬度。請在注釋“〃**1**”之后添加適當的語句。(2)定義Circle類默認構造函數,把私有成員radius初始化為參數r的值。請在注釋“〃**2**”后添加適當的語句。⑶完成Money類默認構造函數的定義,把私有成員FencePrice(每米柵欄的價格)sConcretePrice(每平方米過道的價格)初始化為參數f,c的值。請在注釋“〃**3**”之后添加適當的語句。⑷完成Money類成員函數floatMoney::TotalMoney(noatfencelen,floatconarea)的定義,根據參數fencelen(柵欄的長度)和conarea(過道的面積),返回柵欄與過道的總造價。請在注釋“〃**4**”之后添加適當的語句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內容。源程序文件test9_3.cpp清單如下:#include<iostream.h>〃**]**classCircle(private:floatradius;public:floatCircumference(){return2*PI*radius;)floatArea(){returnPI*radius*radius;));classMoneyprivate:floatFencePrice;cout<<"ThetotalmoneyisRMB"<<totalmoney<<endl;}參考答案BD解析:本題主要考查C++語言的基本語法,選項A)中應該為m>n||m<n;選項B)中default語句可有可無;選項C)中訂可以單獨作為一條語句,不是必須和else搭配。A解析:黑箱測試方法完全不考慮程序的內部結構和內部特征,而只是根據功能導出測試用例。注意:白箱測試是根據對程序內部邏輯結構的分析來選取測試用例,白箱測試也稱為邏輯覆蓋測試,故選項B)不正確,?錯誤推測法只是黑箱測試所使用的一種具體的方法,故選項。不正確,安裝測試是測試層次中的一種,它屬于高級測試,故選項D)不正確。注意:常用的黑箱測試方法及其定義,白箱測試用例的準則。A解析:需求分析是軟件定義時期的最后一個階段,它的基本任務就是準確問答“系統必須做什么這個問題即軟件系統功能,需求分析的任務還不是確定系統怎樣完成它的工作,而僅僅是確定系統必須完成哪些工作,也就是對目標系統提出完整、準確、清晰、具體的要求。B解析:數組的下標不能是變量,不能為非整數,定義為常量的標識符不能再用來賦值,只能在定義時初始化。D解析:本題考核虛函數的應用。動態聯編一直要到程序運行時才能確定調用哪個函數。虛函數是實現動態聯編的必要條件之一。沒有虛函數一定不能實現動態聯編,但有虛函數存在時,必須同時滿足下列條件,才能實現動態聯編:類之間滿足子類型關系;調用虛函數操作的是指向對象的指針或對象引用,或者是由成員函數調用虛函數。D解析:本題考核this指針的使用。類的每一個成員函數都有一個隱含定義的常量指針,稱為this指針。它是成員函數所屬對象的指針,它指向類對象的地址。成員函數可以通過這個指針知道自己屬于哪一個對象。但是在使用this指針時需要注意的是:this指針只能在類的成員函數中使用,它指向該成員函數被調用的對象。this指針一般用于返回當前對象自身,?靜態成員函數沒有this指針。因為類只有一個靜態成員函數實例,所以使用this指針沒有什么意義。在靜態成員函數中使用this指針會引起編譯錯誤。D解析:在最壞情況下:冒泡排序需要的比較次數為n(n-l)/2;快速排序需要的比較次數也為n(n-l)/2;插入排序需要的比較次數也為n(n-l)/2;堆排序需要比較的次數為O(nlog2n)o可知,在最壞情況下,堆排序的時間復雜度最小,本題的正確答案為選項D。C解析:棧是一種數據結構,是在某一端進行插入和刪除的特殊線性表。它按照后進先出的原則存儲數據,先進入的數據被壓入棧底,最后的數據在棧頂。在棧頂進行插入或刪除操作,不需要修改棧底指針。棧的實現可以采用順序存儲也可以采用鏈表存儲。BD本題考查虛函數的定義。C解析:構造函數的作用是在對象被創建的時候對對象進行初始化。構造函數在對象被創建的時候由系統自動調用。故C項正確。B解析:自動變量是函數體或分程序內定義的變量,它的作用域在所定義的函數體內或分程序體內。C解析:對于任何一種賦值運算,其賦值號或復合賦值號左邊必須是一個左值。左值是指具有對應的可由用戶訪問的存儲單元,并且能夠由用戶改變其值的量。而在。選項中賦值號對應的是表達式“i+1”,不是一個左值,因此是非法的賦值表達式。A詳細設計的任務是為軟件結構圖中而非總體結構圖中的每一個模塊確定實現算法和局部數據結構,用某種選定的表達工具表示算法和數據結構的細節,所以A錯誤。C解析:C++中,類是用戶自定義的一種數據類型,對象是類的實例,類定義了屬于該類的所有對象的共同特性。一個類作為一種數據類型,它可以定義多個對象B本題考查基類和派生類的邏輯關系,屬于基礎知漢,如果沒有指明哪種繼承方式,那么默認為私有繼承,所以B選項錯誤。D解析:本題考核類成員的訪問權限。類成員有3類訪問權限:公有(public).私有(private)和保護(protected)。公有成員是類的對外表現,而私有成員和保護成員是類的內部實現。類的成員函數可以訪問類的所有成員,沒有任何限制。而類的對象對類的成員的訪問是受成員訪問控制符制約的。通過類的對象只能訪問類的公有成員,不能訪問類的保護成員和私有成員。由此可知,選項D的描述是錯誤的。D解析:虛函數在運行階段和類的對象綁定在一起,這樣成為動態聯編。虛函數聲明只能出現在類聲明的虛函數原型中,而不能在成員的函數體實現時。必須由成員函數來調用成員函數來調用或者通過指針、引用來訪問虛函數。如果通過對象名來訪問虛函數,則聯編在編譯過程中認為是靜態聯編。B本題考查默認構造函數和帶參數的構造函數,題目中定義一一個對象a以及對象數組b[2],共執行3次構造函數,對象指針不調用構造函數。所以本題答案為B。D解析:抽象類指的是類中至少有一個純虛函數,純虛函數是虛函數后有“=0”修飾,表示該函數在本級類中沒有實現,類僅用于派生。抽象類存在的唯一目的就是構造類層次,派生出其他類。抽象類與其他類的最大區別就在于抽象類不能實例化。BDo【解析】本題考查的知識點是豢的構造。建立一個類的對象時,構造函數的執行順序如下:①執行基類的構造函數,調用順序按照各個基類被繼承時聲明的順序(自左向右);②執行成員對象的構造函數,調用順序按照各個成員對象在類中聲明的順序(自上而下);③執行自身的構造函數。本題Derived類繼承于Base類,所以首先會構造基類Base,flDerived類的構造函數沒有初始化列表,所以將調用Base類的默認構造函數,輸出一個0。接下來由于它的成員中還定義了一個Base類的對象,兩構造函數也沒有顯示初始化這個對象,所以再次調用Base類的默認構造函數輸出一個0。最后構造自身,因為主函數中傳入了構造參數1,所以構造自身時輸出了一個1。故最終輸出結果為001oB24.3內聚內聚解析:模塊之間的耦合表明兩個模塊之間互相獨立的程度;模塊內部之間的關系是否緊密,稱為內聚,反映模塊內各成分之間的聯系。線性結構線性結構解析:數據的邏輯結構,是指數據元素之間的邏輯關系,分為線性結構和非線性結構,常見的線性結構有線性表、棧和隊列等;常見的非線性結構有樹、二叉樹等。重復(或循環)重復(或循環)解析:結構化程序設計包括3種基本的結構:順序結構、選擇結構和重復結構(循環結構)。利用這3種結構就足以表達出各種其他結構形式的程序設計方法,其中利用循環結構,可以簡化大量的程序執行。編譯編譯解析:C++語言是以編譯方式實現的高級語言,C++語言程序的實現,必須要使用某種C++語言的編譯器對程序進行編譯。對象對象30.100100解析:本題比較簡單,考查考生基本的類的定義,構造函數以及對象數組的概念。iostream.h軟件工程軟件工程解析:軟件工程的出現是由于軟件危機的出現。33.1234512345解析:本題考查的是考生使用簡單循環輸出數組元素的能力,因為結束條件是i<5,而i初始值為0,所以只會輸出前5個元素。靜態靜態解析:構造函數不能聲明為虛函數,但在構造函數中可以調用虛函數,在構造函數和析構函數中調用虛函數,將采用靜態聯編。(*p)(xy)(*p)(x,y)解析:一個函數總是占用一段連續的內存區,而函數名就是該函數所占內存區的首地址。我們可以把函數的這個首地址(或稱入口地址)賦予一個指針變量,使該指針變量指向該函數。然后通過指針變量就可以找到并調用這個函數。我們把這種指向函數的指針變量稱為“函數指針變量函數指針變量定義的一般形式為:類型說明符(?指針變量名)0;其中“類型說明符”表示被指函數的返回值的類型。“(*指針變量名)”表示后面的變量是定義的指針變量。最后的空括號表示指針變量所指的是一個函數。⑴應添加“public:”。\n(2)“inti”應改為“inti(10);”。\n(3)“i++;”應改為“i??;”。\n【解析】本題主要考查的是成員的訪問屬性。成員的訪問屬性有公有、保護和私有3種,而默認的訪問屬性為私有,只有公有成員才能通過類的對象被訪問。故應在構造函數前添加“public:”,否則該類無法被實例化。變量的初始化可以通過“=''號,也可以和初始化對象一樣添加構造參數,題目已要求使用后者。本題要求輸出5個數,while的循環變量i每次減1,在i>5時循環,故i初始化應為10。若循環中i每次增1,則循環永遠不會退出(l)“staticintn=O”應改為“staticintn;"。“intCO::n;”應改為“intCO::n=0;"coutv<c?n?endl;"應改為t6cout?c->n?endl:"。【解析】本題要在屏幕上輸出兩個字符,首先要靜態變量初始化,第1處應改為“staticintn;”,第2處要給n賦值,第3處輸出時引用c的對象,應改為"coutvvc?>nvvendl;(1)應改為“usingnamespacestd;"。應改為“outl?open(n1.txt",ios::binaryIios::app);應改為“outl.put(s[i]);”。【解析】本題第1處的“usingstd;”是在程序中引入標準命名空間std,對于C++中引入標準命名空間的格式,缺少namespace,所以第1處的語句修改為“usingnamespacestd;”。第2處,調用成員函數open中,輸入、輸出方式是在ios類中定義的,所以“outl.open(”l.txt”,binaryIapp);”語句缺少類ios,即第2處的語句修改為"outl.open("l.txt”,ios::binaryIios::app);第3個標識應該用流成員函數put輸出字符,所以第3處的語句修改為“outl.put(s[i]);(1)應改為“TC::TC”。應改為“voidTC::display”。應改為“TC::?TC”。【解析】在類的外部定義成員函數時,必須在成員函數前面加上類名和作用域運算符“::",作用域運算符用釆表示某個成員屬于哪個類,使用格式為“(類名)::v成員函數>((參數函數)),因此第1處應改為“TC::TC”,默認構造函數沒有參數。由第2處“TC::display”后的語句看,這是在類外實現TC函數,因此也有作用域運算符使用錯誤問題,display函數返回值為void,因此第2處的語句應改為“voidTC::display”。由第3處的語句"TC::TC”可知,顯然這里是在類外實現析構函數,析構函數是一個特殊的函數,它的名稱和類名相同,并在前面加“?”字符,用采與構造函數加以區別,因此第3處的語句應改為“TC::?TC”。(1)應改為“ein.getline(str,120,?);應改為“while(str[i])"。應改為"iRstr[i]>=a&&str[i]<=2)”。【解析】本題中要求以輸入字符“?"為結束符,用于字符輸入的流成員函數getline函數讀入一行字符,格式為“cin.getline(字符數組,字符個數,終止標志字符)",所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語句應該是判斷字符串str中的每一個字符是否為結束符,若不是結束符,在循環中判斷每一個字符是否為小寫,若為小寫,則轉換。所以應該修改為“while(str[i])”°第3處的“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現有的語句只是判斷字符是否大于a,但是小寫字符應該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)"。(1)應改為“TCobjl(l);\n(2)應改為“Objl.SetNumber(lO);\n(3)應改為“0bj2.SelNumber(lOO);”。\n【解析】本題第1處的“TCobjl語句是聲明TC類的對象Objl,根據TC類構造函數的定義TC(inti),存在整型參數,并且題目要求第一個輸出結果兩1,所以補全參數1,即第1處的“TCobjl(l);第2處處的“objl.number=10;”應該是調用成員函數SetNumber賦值。在C++中成員函數的使用形式應該是:對象名.成員函數,所以修改為“objl.SetNumber(lO);”。類是對象的抽象,而對象是類的具體實例。第3處“TC.SetNumber(lOO);”語句中的TC為類,并不是對象,這里應該使用定義的對象,即obj2,所以將語句修改為“obj2.SetNumber(lOO);⑴應改為“ein.getline(str,120,?);”。\n(2)應改為“while(str[i])"。\n⑶應改為“if(str[i]>=a&&str[i]v=2)”。\n【解析】本題中要求以輸入字符“?''為結束符,用于字符輸入的流成員函數getline函數讀入一行字符,格式為“cin.getline(字符數組,字符個數,終止標志字符)”,所以第1處改為“cin.getline(str,120,?);”。第2處的“while(str)”語句應該是判斷字符串str中的每一個字符是否為結束符,若不是結束符,在循環中判斷每一個字符是否為小寫,若為小寫,則轉換。所以應該修改為“while(str[i])”°第3處的“if(str[i]>=a)”語句是判斷字符str[i]是否為小寫字符,而現有的語句只是判斷字符是否大于a,但是小寫字符應該是a到2,所以修改為“if(str[i]>=a&&str[i]>=z)”。(l)ttvoidmain,,o⑵“intm=0144;"。(3)“intn=OX25;”或“intn===0x25;【解析】本題主要考查了主函數定義及幕同進制之間的轉換,包括十進制到八進制,十進制到十六進制。主函數定義的定義形式為“main”,函數名之后必須是一對括號,因此第1處應改為“voidmain”。cout輸出默認是以十進制方式輸出的,根據題目要求輸出的結果可發現變量的初值不正確,十進制的100對應八進制的144,卡進制的37對應十六進制的25,因此2和3應分別改成“intm=0144;”,“intn=0x25;'‘或“intn=0x25;"。(1)應改為"catch(char*s)"。應改為“cateh(inti)”。⑶應改為“catch(...)”°【解析】本題中第1個標識前的異常拋出語句為“throw(%rror“);”,其中的類型為字符串。所以對應的異常捕捉語句catch中應該符合這個類型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語句修改為“catch(char*S)”。第2個標識前的異常拋出語句為“throw((int)0);”,其中的類型為int。對應的異常捕捉語句catch中應該符合這個類型,所以補充catch子句中的類型,否則如果找不到匹配的catch塊,系統就會調用一個系統函數,使程序終止運行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常信息的類型,那么就用刪節號表示它可以捕捉任何類型的異常信息,即修改為“catch(...)”。(1)應改為"catch(char*s)“。(2)應改為“cateh(inti)”。⑶應改為“catch(...)”°【解析】本題中第1個標識前的異常拋出語句為“throw(%rror“);”,其中的類型為字符串。所以對應的異常捕捉語句catch中應該符合這個類型,而程序中給出的語句“catch(chars)”是字符型的,所以第1處的語句修改為“catch(char*S)”。第2個標識前的異常拋出語句為“throw((int)0);”,其中的類型為int。對應的異常捕捉語句catch中應
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45642-2025種子國際運輸中有害生物風險管理指南
- 城市軌道交通通信信號技術專業教學標準(高等職業教育專科)2025修訂
- 2025年中國秸稈建筑系統行業市場全景分析及前景機遇研判報告
- 石家莊塑料垃圾桶項目投資分析報告模板
- 疥瘡防治指南
- 2025年中國林果業行業市場調查研究及投資潛力預測報告
- 東大街紋身培訓課件
- 中國海水淡化行業市場深度調查評估及投資方向研究報告
- 2025年中國高強度船用氣囊行業競爭格局及市場發展潛力預測報告
- 2024年中國藥用膠塞行業市場發展現狀及投資前景展望報告
- 小學國學小名士題庫含答案
- 2023年7月國家開放大學專科《法理學》期末紙質考試試題及答案
- 赴日簽證填寫表格及模板
- 2024年人教版小學語文一年級下冊期末測試卷(含答案)
- 圖說人際關系心理智慧樹知到期末考試答案章節答案2024年重慶大學
- MOOC 細胞生物學實驗-河南大學 中國大學慕課答案
- 可可西里守護神杰桑·索南達杰事跡學習
- 機房施工方案及技術措施
- 員工培訓矩陣表
- 摜蛋大賽招商方案
- 電影特效制作課件
評論
0/150
提交評論