版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級C++機試(操作題)模擬試卷8(共9套)(共28題)國家二級C++機試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,但該程序運行時有錯,請改正程序中的錯誤,使程序輸出的結(jié)果為:Number=7Number=12注意:錯誤的語句在∥********error********的下面,修改該語句即可。#1nclude<10Stream.h>ClasSCMyClasS{public:∥********error********CMyClass(inti):Number=i{errorreturnNumber;}voidset(inti){Number=i;}voiddisplay(){cout<<”Number=”<display();P一>set(12);P一>display();return;}標準答案:(1)CMyClass(inti):Number(i)(2)應刪除:returnNumber;(3)CMyClass*P=newCMyClass(7),知識點解析:(1)第1個標識下是聲明構(gòu)造函數(shù),并使用初始化列表完成成員變量的初始化,可知第1標識下的初始化列表錯誤,正確的應該是“CMyClass(inti):Number(i)”。(2)構(gòu)造函數(shù)不能有返回值,不能用return來返回值,故第2個標識下應將“returnNumber;”刪除。(3)類實例在不指定構(gòu)造函數(shù)的情況下,調(diào)用的是默認無參數(shù)的構(gòu)造函數(shù),此時成員變量Number是不確定的,在定義對象時應使用已定義的構(gòu)造函數(shù),根據(jù)輸出結(jié)果可知P指向的對象的Number初始化值為7,故第3個標識下應改為“CMyClass*P=newCMyClass(7);”。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。完成函數(shù)fun(char*S,inta[]),其功能是把S中出現(xiàn)的數(shù)字轉(zhuǎn)換成數(shù)字存儲在a口中,然后返回轉(zhuǎn)換的個數(shù)。例如:s=”1234abcdef567”:則:a[]中存儲著1234567返回:7注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#lnclude<10Stream.h>intfun(char*s,inta[]){}intmain(){inta[1024];intlen=fun(“1234abcdef567”.a(chǎn));for(inti=0;i標準答案: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ù)知識點解析:(1)該程序功能是把字符串中出現(xiàn)的數(shù)字轉(zhuǎn)換成數(shù)字存儲在數(shù)組中,然后返回轉(zhuǎn)換的個數(shù)。其中,字符和整型的ASCII差為96,即為’0’的ASCII碼值。(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)fun實現(xiàn)題目中要求的功能,其中intfun(char*s,inta[])中的S為要轉(zhuǎn)換的字符串,a為存放轉(zhuǎn)換為數(shù)字的數(shù)組,返回值為轉(zhuǎn)換的個數(shù)。解題思路(1)i變量用來記錄轉(zhuǎn)換的個數(shù),首先初始化為0。(2)然后利用for循環(huán)對每一個當前字符進行判斷是否為數(shù)字字符。(3)如果為數(shù)字字符,就將其減去字符‘0’,即實現(xiàn)字符和整型的轉(zhuǎn)換。并且,將i的變量值加1。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。(1)重載運算符int,請在注釋∥********1********后添加適當?shù)恼Z句。(2)重載運算符“<<”,請在注釋∥********2********后添加適當?shù)恼Z句。(3)在主函數(shù)main()中定義變量i,并調(diào)用對象obj的int運算符,給變量賦初值為10,請在注釋∥********3********后添加適當?shù)恼Z句。(4)調(diào)用obj的“<<”運算符輸出:HelloTIest注意:增加代碼,或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。#include<10stream>usingnamespacestd;C1assTestClass{public:∥********1********{cout<<”int”<標準答案:(1)添加語句:operatorint()(2)添加語句:operator<<(char*str)(3)添加語句:inti=int(obj);(4)添加語句:obj<<“HelloTest”;知識點解析:本題的功能是通過重載運算符實現(xiàn)字符串輸出。在VC環(huán)境下打開程序,根據(jù)題干給出的幾條功能要求,對程序中給出注釋下的內(nèi)容逐個補全或修改。從已定源程序的main主函數(shù)開始入手,可以看出程序通過調(diào)用類TestClass的運算符重載函數(shù)實現(xiàn)各種輸出操作。解題思路(1)題目1要求“重載運算符int”的定義。運算符重載的方法是定義一個重載運算符的函數(shù),其一般格式為:函數(shù)類型operator運算符名稱(形參列表){對運算符的重載處理}。所以第1個標識下,重載運算符int的語句為“operatorint()”。(2)題目2要求“重載運算符‘<<”’。同(1),第2個標識下“<<”的重載函數(shù)定義為“operator<<(chaLr*str)”。(3)題目3要求“在主函數(shù)main()中定義變量i,并調(diào)用對象obj的int運算符,給變量賦初值為10。”定義變量i,即inti?!?)”中的返回值為10,所以調(diào)用對象obj的int運算符,給變量賦初值為10,就是int(obj),即第三個標識下添加“inti=int(obj);”。(4)題目4要求“調(diào)用obj的“《”運算符輸出“HelloTest””。重載運算符“<<”后,不僅能輸出標準類型數(shù)據(jù),而且可以輸出用戶自己定義的類對象。所以直接添加要輸出的字符串即可,即“obj<<"HelloTest";”。國家二級C++機試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,該程序運行時有錯誤,請改正程序中的錯誤,使得程序運行后沒有內(nèi)存遺漏??梢栽谛薷奶幵黾踊蛘邉h除一條語句。本程序完成輸入兩個字符串,分別存儲到sl,s2中。注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在∥********error********的下面。#includevoidmain(){char*s1;chars2[1024];cout<<”pleaseinputastring:”<標準答案:(1)s1=newchar[1024];(2)delete[]s1;’(3)刪除“deletes2;”語句知識點解析:本題是主要是處理程序運行后是否有內(nèi)存遺漏的問題。對于這類問題主要是根據(jù)調(diào)試環(huán)境中的錯誤提示以及警告提示進行處理。解題思路(1)sl變量為指針變量,在使用前要對其分配空間,所以第1個標識下添加“sl:=newchar[1024.];”。(2)為了防止內(nèi)存空間的泄漏,指針變量使用后,要將其空間釋放,第二個標識下“delete口s1;”。(3)s2是數(shù)組變量,空間是在使用前靜態(tài)分配的,不是使用前動態(tài)分配的,所以使用后不用釋放內(nèi)存空間,這里應該刪除“deletes2;”。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼。函數(shù)func(intd[],intn)的功能是將長度為num的數(shù)組d的每一個數(shù)字是奇數(shù)的擴大l倍,并存儲到數(shù)組d中。例如:123456789返回:226410614818將func(intd[],intnum)%b充完整。注意:請勿改動主函數(shù)。#includevoidfunc(intd[],intnum){}intmain(){intData[]={1,2,3,4,5,6,7,8,9),func(Data,9);for(inti=0;i標準答案:1for(inti=0;i知識點解析:(1)由審題分析可知,利用循環(huán)來逐個判斷d[]中的元素,d[]中元素個數(shù)為num,因此循環(huán)變量從0變化至lqtlm。(2)在循環(huán)內(nèi),用if判斷該元素是不是奇數(shù),即if(d[i]%2!=0),將滿足條件的d[i]擴人一一倍。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開源程序文件modi3.cpp。此程序的功能是將outl.txt文件中的內(nèi)容輸出到屏幕與文件中。輸出如下:李一1.78m21王一1.65m23out2.txt文件的內(nèi)容如下:李一1.78m21王一1.65m23其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。(1)以輸入方式打開文件outl.txt,請在注釋∥********1********后添加適當?shù)恼Z句。(2)以輸出方式打開文件out2.txt,請在注釋∥********2********后添加適當?shù)恼Z句。(3)從文件中獲得一個字符,判斷是否結(jié)束,如果結(jié)束則退出輸出。請在注釋∥********3********后添加適當?shù)恼Z句。(4)把獲得的字符輸出到文件中,請在注釋∥********4********后添加適當?shù)恼Z句。注意:僅在函數(shù)指定位置添加語句,請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include#include#includevoidmain(){charch;fstreaminfile,outfile;∥********2********infile.open(“outl.txt”);if(!infile){cout<<"outI.txt文件不能打開II<標準答案:(1)將“infile.open(”O(jiān)Utl.txt.”);”補充完整為:infile.open(”ontl.txt”,iOS::in);(2)將“outfile.open(ut2.txt”);”補充完整為:outfile.open(”out2.txt”,ios::out);(3)將“while()”補充完整為:wh.ile(infile.get(ch))(4)添加語句:outfile<知識點解析:本題的功能是將outl.txt文件中的內(nèi)容輸出到屏幕與文件中。解題思路為在VC環(huán)境下打開程序,根據(jù)題干給出的幾條功能要求,對程序中給出注釋下的內(nèi)容逐個補全或修改。從已給定源程序的main主函數(shù)開始入手,可以看出程序是對文件的操作。解題思路(1)題目1要求“以輸入方式打開文件outl.txt”。在C++中調(diào)用文件流的成員函數(shù)open的格式為,文件流類.open(…’文件名”,ios::in),所以第1個標識下語句就該為“infile.open(”outl.txt",ios::in);”。(2)題目2要求“以輸出方式打開文件out2.txt”。同理第2個標識下修改為“outflle.open(“out2.txt",ios::out);”。(3)題目3要求“從文件中獲得一個字符,判斷是否結(jié)束”。程序中的“while()”循環(huán)判斷語句中缺少從文件中獲得的字符,所以這里補全while循環(huán)判斷條件,即“while(infile.get(ch))”。(4)題目4要求“把獲得的字符輸出到文件中"。在C++中,用流插入運算符為“<<”,所以根據(jù)題干中的要求在第四個標識下補全寫入文件的流操作語句,即“outfile<國家二級C++機試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,請修改程序中的錯誤,使程序能得出正確的結(jié)果:num:0num:1num:10注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//*******error*******的下面。#includeinti=10;C1assTestClass{public:TestClass(inti){cout<<"num:"<標準答案:(1)this->i=i+1;或TestClass::i=i+1:或(*this).i=i+1:(2)TestClassprint(0);(3)cout<<"num:"<<::i<知識點解析:(1)打開modi1.cpp,調(diào)試程序,顯示錯誤提示為第二標識下“modi1.cpp(22):errorC2512:TestClass’:noappropriatedefaultconstructoravailable”,主函數(shù)中首先調(diào)用的就是第2個標識下的TestClassprint函數(shù),構(gòu)造函數(shù)的名字和類的名字是一樣的,而程序中給出的“TestClassprint;”沒有給出參數(shù),所以程序調(diào)試時無法確定調(diào)用的函數(shù)。根據(jù)TestClass構(gòu)造函數(shù)“TestClass(inti)”的定義,應該存在int型參數(shù),并且題目要求第一次輸出的值為“0”,所以第2個標識正確的調(diào)用函數(shù)為“TestClassprint(0);”。(2)運行,發(fā)現(xiàn)第一次的輸出正確,但是第二次的輸出值為“-858993460”,并不是題目中要求的“1”。在主函數(shù)中,可知第二次輸出調(diào)用的是“print.Print();”,即類TestClass的成員函數(shù)“Print()”。成員函數(shù)Print的定義“voidPrint()const”中的輸出語句為“cout<<”num."<i=i+1;”或“TestClass::i=i+1;”或“(*this).i=i+1;”。(3)主函數(shù)中通過“cout<<”num"”<二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi.cpp。請完成函數(shù)fun(char*s1,char*s2),此函數(shù)的功能是計算s1中出現(xiàn)s2的個數(shù),當不出現(xiàn)時,則返回0。如:s1為"1112223333aaaaeeffd"s2為"11"則返回1s2為"aa"則返回2注意:請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。{}include//注意只能使用int類型,不能類型轉(zhuǎn)換intfun(char*s1,char*s2){}voidmain(){chars1[1024];chars2[256];cout<<"pleaseinputastring:"<標準答案:intsize=0;//初始化字符串統(tǒng)計變量個數(shù)intsllen;ints2len;for(sllen=0;s1[sllen]!=0;sllen++);//第一個字符串循環(huán)for(s2len=0;s2[s2len]!=0;s2len++);//第二個字符串循環(huán)for(inti=0;i知識點解析:(1)size變量用來存放s1中出現(xiàn)s2的個數(shù),初始值賦為0。(2)然后利用for循環(huán)對s2中的每一個字符與s1中的字符進行比較。(3)如果循環(huán)中有符合條件的字符串,就將變量size個數(shù)加1。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、用VC6打開考生文件夾下的源程序文件modi3.cpp,這個程序完成輸出到屏幕一些特定的信息,但工程有錯誤或者不完整,請完成以下功能:(1)初始化m_Num2的值為j,請在注釋//********1********后添加適當?shù)恼Z句。(2)補充全局函數(shù)fun()使之能夠調(diào)用類TestClass的成員變量,請在注釋//********2********后添加適當?shù)恼Z句。(3)初始化靜態(tài)變量,請在注釋//********3********后添加適當?shù)恼Z句。(4)修改注釋//********4********后的語句。使得程序輸出以下內(nèi)容:m-Num1=1m_Num2=2m_Num3=1m_Num1=4m_Num2=2m_Num3=7注意:僅在函數(shù)指定位置添加語句,請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#includeclassTestClass{public://********1********TestClass(inti,intj){m_Num1=i;m_Num3+=i;}voidPrint(){cout<<"m_Num1="<標準答案:(1)添加語句:TestClass(inti,intj):m_Num2(j)(2)添加語句:friendvoidfun();(3)添加語句:intTestClass::m_Num3=0;(4)將“Num.Add();”補充完整為:Num.Add(5);知識點解析:(1)根據(jù)“constintm_Num2;”語句知道m(xù)_Num2為類TestClass中的私有數(shù)據(jù),另外,C++定義構(gòu)造函數(shù)的初始化數(shù)據(jù)成員的方法中可以在原有函數(shù)末尾加一個冒號,然后列出參數(shù)的初始化表實現(xiàn),即“TestClass(inti,intj):m_Num2(j)”。(2)在C++中,如果在本類以外的其他地方定義了一個函數(shù),在類體中是用friend對該函數(shù)進行聲明的,此函數(shù)稱為本類的友元函數(shù),并且能夠調(diào)用本類中的成員變量。程序中fun()在類TestClass以外的地方定義的,為了實現(xiàn)其對類TestClass中成員變量的調(diào)用,在類TestClass中補全“friendvoidfun();”,即聲明fun()為類TestClass的友元函數(shù)。(3)在C++中,初始化類中數(shù)據(jù)成員的格式可以是“<類型>類名class::參數(shù)=”,其中<類型>為要初始化參數(shù)的類型,“::”為作用域符號,說明參數(shù)是class中的參數(shù),所以這里補全“intTestClass::m_Num3=0;”。(4)函數(shù)fun()中“Num.Add();”語句應該是調(diào)用類“TestClass”中的成員函數(shù)“voidAdd(inti)”。其定義中存在參數(shù)inti,所以注釋下修改的語句缺少參數(shù)。主函數(shù)首先調(diào)用“Num.Print();”,即實現(xiàn)題目中輸出的前三條語句,而“fun();”語句實現(xiàn)后面三條語句的輸出,即“m_Num3=7”才是調(diào)用Nmn.Add的輸出結(jié)果,即“m_Num3+=i;”的計算結(jié)果?!癟estClassNum(1,2);”中將i的值初始化為1,“m_Num3”的值在上一次“Num.Print();”調(diào)用中為1,如果計算結(jié)果為7,那么Add(inti)中i的初始化值為5,即“Num.Add(5);”。國家二級C++機試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,該程序運行時有錯誤,請改正其中的錯誤,使程序正常運行,并且輸出以下結(jié)果:(4,5)7,8(4,8)注意:錯誤的語句在∥********error********的下面,修改該語句即可。#includeclasSCobj0{public:cobj0(inti,intj){x=i;y=j;}∥********4********virtualvoidmove(inta;intb){x+=a;y+=b;}voidprint(){cout<<¨(“<標準答案:(1)virtualVoidmove(inta,intb)(2)CObj1(inti,intj,intk,int1):CObj0(i,j)(3)CObj0::print();知識點解析:(1)編譯程序可知第1標識下有錯誤,此處是聲明虛函數(shù),虛函數(shù)的聲明方式為:virtual<類型說明符><函數(shù)名>(<參數(shù)表>),參數(shù)表中各參數(shù)之間應該用“,”隔開,因此第1個標識下應改為“virtualvoidmove(inta,intb)”0(2)在主函數(shù)里“CObjlobjl(1,3,7,8);”,可知構(gòu)造函數(shù)CObjl()有四個參數(shù),完成變量m、n、x和Y的初始化,k和l賦值給m和n,i和j賦值給X和Y,X和y的初始化可通過基類構(gòu)造函數(shù)來完成對X和Y的初始化,第2個標識下應改為CObj1(inti,intj,intk,int1):CObjO(id)。(3)由程序運行結(jié)果可知標識3下調(diào)用的是基類的print()~數(shù),而“print();”是調(diào)用的派生類的print()函數(shù),因此此時只能通過類名來直接調(diào)用print()函數(shù),即第3個標識下應改為“CObj0::print();”0二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,補充空出的代碼。程序的功能是尋找1~500以內(nèi)的親和數(shù)并顯示出來,函數(shù)amicableNum(intm,intn)判定兩個數(shù)是否是親和數(shù)。親和數(shù)的定義為:兩個數(shù)m和n,如果n的所有因子之和(因子除掉自身)等于m,且m的所有因子等于n,則m、n是互為親和數(shù)。注意:不能修改程序的其他部分,只能補充amicableNum(intm,intn)函數(shù)。#includeintamicableNum(intn){intsum=0;for(inti=1;i標準答案:if(amicableNum(m)==n&&amicableNum(n)==m)return1;return0;知識點解析:(1)程序中定義了兩個amicableNumO函數(shù),由于參數(shù)個數(shù)不同重載了amicableNumO函數(shù),函數(shù)amicableNum(intn)返回n的因子和,而函數(shù)amicableNum(intin,intn)~lJ是判斷m和n是不是親和數(shù),兩個函數(shù)功能并不相同。(2)在amicableNum(intm,intn)函數(shù)中,可調(diào)用amicableNum(hatn)函數(shù)求m和11的兇子和,然后比較兩個因子和,如果兩個因子和相同則返回真,否則返回假。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。完成以下功能:(1)完成類Rect的構(gòu)造函數(shù),實現(xiàn)對變量left、fight、top、bottom的初始化,缺省值都為0,請在注釋∥********1********后添加適當?shù)恼Z句。(2)完成類Rectangle的構(gòu)造函數(shù),請在注釋∥********2********后添加適當?shù)恼Z句。(3)完成計算矩形對角線長度函數(shù)Diagonal0,請在注釋∥********3********后添加適當?shù)恼Z句。(4)完成計算周長函數(shù)Girth(),請在注釋∥********4********后添加適當?shù)恼Z句。程序輸出:50140注意:增加代碼,或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。#include#includeclassRectangle{public:intlefttrightltoplbottom;∥********1********{left=1;right=r;top=t;bottom=b;}∥********2********{1eft=rc.1eft;right=rc.right;top=rc.top;bottom=rc.bottom;}floatDiagonal(){∥********3********return}intGirth(){∥********4********return}};intmain(){Rectanglerect(20,50,40,80);Rectanglerect2(rect);cout<標準答案:(1)添加語句:Rectangle(int1,intr,intt,intb)(2)添加語句:Rectangle(Rectangle&rc)(3)將“return”補充完整為:returnsqrt((right—left)*(right—left)+(bottom—top)*(bottom—top));(4)將“return”補充完整為:return2*((right—left)+(bottom—top));@解題思路@(1)構(gòu)造函數(shù)函數(shù)名和類名一致,構(gòu)造函數(shù)可以重載,即多個構(gòu)造函數(shù)有相同的名字不同的參數(shù),顯然題目當中兩個構(gòu)造函數(shù)均有參數(shù),由函數(shù)體體內(nèi)“l(fā)eft=1;right=r;top=t;bottom=b;”,說明l,r,t,b為構(gòu)造函數(shù)的參數(shù),因此第1標識處應添加“Rectangle(int1,intr,intt,intb)”。(2)和題目1一樣,構(gòu)造函數(shù)名和類名一致,函數(shù)體內(nèi):“l(fā)eft:re.1eft;right=re.right;top=rc.top;bottom=rc.bottom;”,顯然re是Rect對象,故該構(gòu)造函數(shù)的參數(shù)為re對象,故第2標識處應添加“Rectangle(Rectangle&rc)”。(3)由對象的left、fight、top、boaom值可以求得矩形的長和寬,因此可采用勾股定理計算對角線長度,即第3標識處補充完整為:returnsqrt((right—left)*(right—left)+(bottom-top)*(bottom-top))。(4)同樣的周長可由長和寬的數(shù)值計算得到,長和寬之和的兩倍即周長,第4標識處補充完整為:return2木((right—left)+rbottom—top))。知識點解析:暫無解析國家二級C++機試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾projl下的工程proj1,該工程中包含程序文件main.epp,其中有類Foo和主函數(shù)main的定義。程序中位于每個“//ERROR****found****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結(jié)果應該是:X=aY=42注意:只修改每個“//ERROR**********found**********”下的那一行,不要改動程序中的其他內(nèi)容。#includeusingnamespacest;d;classFoo{public:Foo(charx){x=x;)chargetX()const{returnxj}public:staticintY;private:charx_;};//ERROR*********found*********intFoo.y_=42;intmain(intargo,char*argv[]){//ERROR*********found*********Foof;//ERROR*********found*********cout<<”X=”<標準答案:(1)intFoo::y_=42;(2)Foof(’a’);(3)cout<<”X=”<知識點解析:(1)主要考查考生對靜態(tài)成員的掌握,因為靜態(tài)整型變量y_是Foo類的公有成員,所以給y_賦值時要加上“Foo::”,即intFoo::Y_=42;。(2)主要考查考生對構(gòu)造函數(shù)的掌握,題目要求程序輸出:X=aY=42可以知道,在給Foo類的f聲明時要同時初始化為字符a,即語句Foof(‘a(chǎn)’);。(3)主要考查考生對成員函數(shù)的掌握,因為x是類Foo的私有成員,所以不能在main函數(shù)中直接調(diào)用,要通過公有成員函數(shù)getX()調(diào)用。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾prog2下的工程prog2,此工程中包含一個程序文件main.cpp,其中有“班級”類Class和“學生”類Student的定義,還有主函數(shù)main的定義。在主函數(shù)中定義了兩個“學生”對象,他們屬于同一班級。程序展示,當該班級換教室后,這兩個人的教室也同時得到改變。請在橫線處填寫適當?shù)拇a,然后刪除橫線,以實現(xiàn)上述類定義。此程序的正確輸出結(jié)果應為:改換教室前:學號:0789姓名:張三班級:062113教室:521學號:0513姓名:李四班級:062113教室:521改換教室后:學號:0789姓名:張三班級:062113教室:311學號:0513姓名:李四班級:062113教室:311注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容。#includeusingnamespacestd;classClass{//“班級”類public:ClasS(constchar*id,constchar。room){strcpy(classid,id);//*********found**********}constchar*getClassID()const{re-turnclassid;}//返回班號//*********found*********constchar*getClassroom()const{______}//返回所在教室房號voidchangeRoOmTO(constchar*newroom){//改換到另一個指定房號的教室strcpy(classroom,newroom);}private:charclassid[20];//班號charclassroom[20];//所在教室房號};classStudent{//“學生”類charmy_id[10];//學號charmy_name[20];//姓名Class&my_class;//所在教室public://**********found**********Student(constchar*the—id,constchar*the—name,Class&the—class):_______{strcpy(my_id,the_id);strcpy(my_name,the_name);}constchar*getID()const{returnmy_id;)constchar*getName()const{returnmy_name;)ClassgetClass0const{returnmy_class;)};voidshowStudent(Student*Stu){cout<<”學號:”<getID()<<"";cout<<”姓名:”<getName()<<"";cout<<”班級:”<getClass().getClassID()<<””;cout<<“教室:”<getClass().getClassr00m()<標準答案:(1)strcpy(classroom,room);(2)retumclassroom;(3)my_class(the_class)(4)cla.changeRoomTo(”311”):知識點解析:(1)主要考查考生對strcpy函數(shù)的掌握情況,根據(jù)上一條語句:strcpy(class_id,id);可知,這條語句要復制字符串room,因此使用strcpy函數(shù)復制,即strcpy(classroom,room);。(2)主要考查考生對函數(shù)返回值的掌握情況,根據(jù)函數(shù)要求:返回所在教室房號及函數(shù)要求返回的類型為constchar*,可以得出這里直接使用return語句返回classroom即可。(3)主要考查考生對構(gòu)造函數(shù)的掌握情況,先看函數(shù)體中:strcpy(my_id,the_id);strcpy(my_name,the_name);可知只有參數(shù)Class&the_class未使用,因此在這里使用成員列表初始化給my_class賦初始值。(4)主要考查考生對成員函數(shù)調(diào)用的掌握,程序要求062113班的教室由521改換到311。在類Class中已經(jīng)定義了函數(shù):voidchangeRoomTo(constchar*new_room),因此直接調(diào)用函數(shù)changeRoomTo即可。三、綜合應用題(本題共2題,每題1.0分,共2分。)3、請使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件proj3,該文件中定義了用于表示日期的類Date、表示人員的類Person和表示職員的類Staff;程序應當顯示:張小麗123456789012345但程序中有缺失部分,請按以下提示把缺失部分補充完整:(1)在“//**1******found****”的下方是析構(gòu)函數(shù)定義中的語句,它釋放兩個指針成員所指向的動態(tài)空間。(2)在“//**2******found****”的下方是rename函數(shù)中的一個語句,它使指針name指向申請到的足夠容納字符串new_name的空間。(3)在“//**3******found****”的下方是構(gòu)造函數(shù)定義的一個組成部分,其作用是利用參數(shù)表中前幾個參數(shù)對基類Person進行初始化。注意:只在指定位置編寫適當代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“****found****”。填寫的內(nèi)容必須在一行中完成,否則評分將產(chǎn)生錯誤。//proj3.cpp#includeusingnamespacestd;ClaSSPerson{char*idcardno;//用動態(tài)空間存儲的身份證號char*name;//用動態(tài)空間存儲的姓名boolismale;//性別:true為男,false為女public:Person(constchar*pid,constchar*pname,boolpmale);一Person(){//**1************found**********____________;}constchar*getIDCardNO()const{returnidcardno;)constchar*getName()const{returnname;)voidrename(constchar*newname);boolisMale()const(returnismale;)},classStaff:publicPerson{char*department;doublesalary;public:Staff(constchar*idcardno,constchar*P_name,boolis_male,constchar*dept,doublesal);—Staff(){delete[]department;)constchar*getDepartment()const{returndepartment;)voidsetDepartment(constchar*d);doublegetSalary()const{returnsalary;)voidsetSalary(doubleS){salary=S;}},Person::Personfconstchar*idcardno,constchar*P_name,bool_is_male):ismale(iSmale){idcardno=newchar[strlen(idcardno)+1];strcpy(idcardno,idcardno);name=newchar[strlen(pname)+1];strcpy(name,Pname);}voidPerson::rename(constchar*newname){delete[]name;//**2************found**********_______;strcpy(name,newname);}Staff::Staff(constchar*idcardno,constchar*Pname,boolismale,//**3************found**********constchar*dept,doublesal):________{department=newchar[strlen(dept)+1];strcpy(department,dept);salary=sal;}voidStaff::setDepartment(constchar*dept){delete[]department;department=newchar[strlen(dept)+1];strcpy(department,dept);}intmain(){StaffZhangsan(”123456789012345”,"張三",false,”人事部”,1234.56);Zhangsan.rename(”張小麗”);cout<標準答案:(1)delete[]idcardno,name(2)name=newchar[strlen(new_name)+1](3)Person(id_card_no,p_name,is_male)知識點解析:(1)主要考查考生對析構(gòu)函數(shù)的掌握,題目要求釋放兩個指針成員所指向的動態(tài)空間。釋放動態(tài)空間應使用delete語句,因為要釋放兩個指針,使用語句:delete[°]idcardno,name;實現(xiàn)。注意當釋放多個指針時,中間用逗號隔開。(2)考查動態(tài)數(shù)組分配空間,題目要求指針natne指向申請到的足夠容納字符串new_name的空間。使用strlen(new_name)得到字符串new_name的長度,但是這里要注意加1。(3)主要考查考生對派生類構(gòu)造函數(shù)的掌握,題目要求利用參數(shù)表中前幾個參數(shù)對基類Person進行初始化。派生類的構(gòu)造函數(shù)要使用成員列表初始化法對基類初始化,因此為constchar*dept.,doublesal):Person(id_card_no,p_name,is_male)。4、請使用VC6或使用【答題】菜單打開考生目錄proj3下的工程文件proj3,此工程包含一個源程序文件proj3.cpp,其中定義了用于表示二維向量的類MyVector;程序應當顯示(6,8)。但程序中有缺失部分,請按照以下提示,把缺失部分補充完整:(1)在“//**1*******found****”的下方是構(gòu)造函數(shù)的定義,它用參數(shù)提供的坐標對x和y進行初始化。(2)在“//**2******found****”的下方是減法運算符函數(shù)定義中的一條語句。兩個二維向量相減生成另一個二維向量:其X坐標等于兩向量X坐標之差,其Y坐標等于兩向量Y坐標之差。(3)在“//**3******found****”的下方,語句的功能是使變量v3獲得新值,它等于向量v1與向量v2之和。注意:只在指定位置編寫適當代碼,不要改動程序中的其他內(nèi)容,也不要刪除或移動“****found****”。//proj3.cpp#include<iostream>usingstd::ostream;usingstd::cout;usingstd::endl;classMyVector{//表示二維向量的類doubleX;//x坐標值doubley;//Y坐標值public:MyVector(doublei=0.0,doublej=0.0);//構(gòu)造函數(shù)MyVectoroperator+(MyVectorj);//重載運算符+friendMyVectoroperator一(MyVec—tori,MyVectorj);//重載運算符一friendostream&operator<<ostream&OS,MyVectorv);//重載運算符<<};//**1************found**********___________(doublei,doublej):X(i),Y(j){)MyVectorMyVector::operator+(MMVecorj){returnMyVector(x+j.X,Y+j.y);}MyVectoroperator一(MyVectori,MyVectorJ){//**2*************found***********returnMyVector(_______);}ostream&operator<<(ostream&OS,MyVectorV){OS<<’(’<<v.X<<’,’<<v.Y<<’)’;//輸出向量v的坐標returnOS;}intmain(){MyVectorvl(2,3),v2(4,5),v3;//**3************found**********v3=__________;cout<<v3<<end1;return0;}標準答案:(1)MyVector::MyVector(2)i.x—j.x,i.y—j.y(3)v1+v2知識點解析:(1)主要考查的是構(gòu)造函數(shù),在類外定義構(gòu)造函數(shù)時要使用類名和作用域,即MyVector::MyVectoro(2)主要考查重載運算符“一”的返回語句,返回值應為向量i和j的差,即MyVector(i.x—j.x,i.y—j.y);。(3)主要考查重載運算符“+”的使用,由題目可知v3是vl和v2的和,前面我們已經(jīng)重新定義了運算符“+”,所以在這里直接使用語句v3=v1+V2;即可。國家二級C++機試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請打開考生文件夾下的解決方案文件proj1,此工程中含有一個源程序文件proj1.cpp。其中位于每個注釋“//ERROR*********found**********”之后的一行語句存在錯誤。請改正這些錯誤,使程序的輸出結(jié)果為:NUM=0Value=1注意:只修改注釋“//ERROR****found****”的下一行語句,不要改動程序中的其他內(nèi)容。//proj1.cpp#include<lostEeam>usingnamespacestd;classMyClass{int_i;friendVOidIncrement;(MyClass&f);public:constintNUN;//ERROR*******found*******NyClass(inti=0){NUM=0;_i=i;}intGetValue()const{return_i;}};//ERROR*******found*******voidIncrement(){f._i++;)intmain(){HyClassobj;//ERROR*******found*******NyClass::TncEement(ohj);cout<<"NUN="<<oh3.NUN<<endl<<"Value="<<obj.GetValLie()<<endl;retuEn0;}標準答案:(1)MyClass(inti=0):NUM(0){(2)voidIncrement(MyClass&f){f._i++;}(3)Increment(obj);知識點解析:(1)主要考查考生對常量數(shù)據(jù)成員初始化方法的掌握,常量數(shù)據(jù)成員的初始化只能通過構(gòu)造函數(shù)的成員初始化列表進行,并且要使用關(guān)鍵字const修飾。該題的前一條語句constintNUM;,說明NUM是常量數(shù)據(jù)成員。(2)主要考查考生對友元函數(shù)的掌握,友元函數(shù)的定義與聲明要一致,先看該友元函數(shù)的聲明部分:friendvoidIncrement(MyClass&f);,返回類型為void,函數(shù)參數(shù)為MyClass&f;再比較出錯的語句:voidIncrement(){f._i++;},錯誤在于該函數(shù)沒有參數(shù),應把MyClass&f填在括號內(nèi)。(3)主要考查友元函數(shù)的調(diào)用,友元函數(shù)并不屬于類,因此調(diào)用友元函數(shù)時不需要添加類名及作用域,只需要像調(diào)用普通函數(shù)一樣即可。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、請打開考生文件夾下的解決方案文件proj2,該工程中包含一個程序文件main.cpp,其中有坐標點類point、線段類Line和三角形類Triangle的定義,還有main函數(shù)的定義。程序中兩點間距離的計算是按公式d=實現(xiàn)的,三角形面積的計算是按公式f=實現(xiàn)的,其中s=請在程序中的橫線處填寫適當?shù)拇a,然后刪除橫線,以實現(xiàn)上述類定義。此程序的正確輸出結(jié)果應為:Side1:9.43398Side2:5Side3:8area:20注意:只在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。#include<iostEeam>#include<cmath>usingnamespacestd;classPoint{//坐標點類public:constdoublex,y;Point(doublex=0.0,doubley=0.0):x(x),y(y){}//*******found*******doubledistanceTo(_______)const{//到指定點的距離returnsqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));}};classLine{//線段類public:constPointp1,p2//線段的兩個端點//*******found*******Line(Pointp1,Pointp2):_______{}doublelength()const{returnp1.distanceTo(p2);}//線段的長度};classTriangle{//三角形類public:constPointp1,p2,p3;//三角形的三個頂點//*******found*******Triangle(_______):p1(p1),p2(p2),p3(p3){}doublelengthl()const{//邊p1,p2的長度returnLine(p1,p2).length();}doublelength2()const{//邊p2,p3的長度returnLine(p2,p3).length();}doublelength3()const{//邊p3,p1的長度returnLine(p3,p1).length();}doublearea()const{//三角形面積//*******found*******doubles=_______;returnsqrt(s*(s-lengthl())*(s-length2())*(s-length3()));}};intmain(){Triangler(Point(0.0,8.0),Point(5.0,0.0),Point(0.0,0.0));cout<<"Side1:"<<r.length1()<<endl;cout<<"Side2:"<<r.length2()<<endl;cout<<"Side3:"<<r.length3()<<endl;cout<<"area:"<<r.a(chǎn)rea()<<endl;return0;}標準答案:(1)constPoint&p(2)pl(p1),p2(p2)(3)Pointp1,Pointp2,Pointp3(4)(length1()+length2()+length3())/2知識點解析:(1)主要考查考生對函數(shù)形參的掌握,由函數(shù)的注釋可知有本坐標點到達某個坐標點類的距離,再根據(jù)函數(shù)體returnsqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));可知,該坐標點類名為p,因此可以知道形參為Point&p,為了不改變該坐標點的值,前面要加上const。(2)主要考查考生對構(gòu)造函數(shù)的掌握,對于常變量型私有成員constPoint.p1,p2,只能用成員初始化列表進行賦值。(3)主要考查考生對構(gòu)造函數(shù)的掌握,由空格后面的語句:p1(p1),p2(p2),p3(p3){}可知,該構(gòu)造函數(shù)需要進行成員列表初始化,再看類的私有成員constPointp1,p2,p3,可知p1,p2,p3是Point類型,因此形參為Pointp1,Pointp2,Pointp3。(4)主要考查考生對成員函數(shù)的掌握,根據(jù)函數(shù)注釋,可知本函數(shù)要求計算三角形面積,再看題目的提示:s=(a+b+c)/2??芍崭裉幰畹氖侨切蔚娜龡l邊之和除以2,而求邊長的函數(shù)已經(jīng)給出,這里直接調(diào)用即可。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、請打開考生文件夾下的解決方案文件proj3,其中定義了一個字符串變量類StringVar。類成員的說明在程序注釋中。請在//********333********和//********666********之間填寫StringVar成員函數(shù)和友元函數(shù)的實現(xiàn)代碼。在main函數(shù)中給出了一組測試數(shù)據(jù),運行時輸入:HelloKitty此情況下程序的輸出應該是:HelloKittyBorgBorg注意:只需在//********333********和//********666********之間填入所編寫的若干語句,不要改動程序中的其他內(nèi)容。//StringVar.h#include<ioStream>#include<cstdlib>#include<cstddef>#include<cstring>usingnamespacestd;VOidwriteToFile(constchar*path);classStringVar{public:StringVar(intsize);//構(gòu)造函數(shù),size為字符串長度(字符個數(shù))初始值;字符串內(nèi)容初始化為空串StringVar(constchara[]);//構(gòu)造函數(shù),用參數(shù)數(shù)組a的內(nèi)容初始化當前對象StringVar(constStringVar&strobj);//復制構(gòu)造函數(shù)~StringVar(){delete[]value;};//析構(gòu)函數(shù)intlength()const{returnstrlen(value);}//從輸入流ins輸入一個字符串,其中可以包括空格voidinput_line(istream&ins);//返回字符串首地址char*getValue()const{returnvalue;}private:char*value;//字符串首地址intmax_length;//字符串最大長度(字符個數(shù)最大值)};//將thestring通過輸出流outs輸出ostream&operator<<(ostream&outs,constStringVarthe_string);//main.cpp#include<iostream>#include<string>#include"StringVar.h"//********333********//********666********intmain(){StringVarnamel(30),name2("Borg");name1.input_line(cin);StringVarname3(name2);cout<<name1<<endl;cout<<name2<<endl;cout<<name3<<endl;writeToFile(".\\");return0;}//writeToFile.cpp#include<iostream>#include<fstream>#include<SStream>#include<string>usingnamespacestd;#include"StringVar.h"voidwriteToFile(constchar*path){charfilename[30];strcpy(filename,path);strcat(filename,"out.dat");ofstreamfout(filename);istringstreamis(string("JennyZheng"));StringVarname1(40),name2("John");name1.inputline(is);StringVarname3(name2);fout<<name1<<name2<<name3;fout.close();}標準答案:StringVar::StringVar(intsize):max_length(size)//使用成員初始化列表初始化max_length{value=newchar[size];value[0]=’\0’;}StringVar::StringVar(constchara[]){max_length=strlen(a)+1;value=newchar[max_length];Strcpy(value,a);}StringVar::StringVar(constStringVar&strobj){max_length=strobj.max_length;value=newchar[strlen(strobj.value)+1];strcpy(value,strobj.value);}voidStringVar::input_line(istream&ins){inti=0;charch;while(i<maxlength-1&&(ch=ins.get())!=’\n’){value[i++]=ch;}value[i]=’\0’;}ostream&operator<<(ostream&outs,constStringVarthe_string){outs<<the_string.getValue()<<endl;returnouts;}知識點解析:由StringVar.h這個頭文件可知:頭文件中定義了StringVar類,它包含的成員信息如下:兩個數(shù)據(jù)成員:char*類型的value,指向字符串的首地址;int類型的max_length,表示字符串的最大長度。兩個構(gòu)造函數(shù):接收int類型的構(gòu)造函數(shù)和接收constchara[]的構(gòu)造函數(shù)。一個復制構(gòu)造函數(shù):用參數(shù)strobj對象的成員值給當前對象的成員賦值;析構(gòu)函數(shù):使用delete[]釋放value指向的地址空間;length()成員函數(shù):返回成員value指向的字符串長度;input_line()成員函數(shù):使用輸入流參數(shù)輸入一個字符串,保存到value指向的內(nèi)存空間;getValue()成員函數(shù):常成員函數(shù),返回value的值。另外類定義體外部還聲明一個重載“<<”運算符函數(shù),將StringVar對象中value指向的字符串輸出,并返回輸出流outs的引用StringVar.h中,已經(jīng)給出的定義有:析構(gòu)函數(shù)、length()函數(shù)和getValue()函數(shù),所以需要我們完成的函數(shù)定義有:構(gòu)造函數(shù)、復制構(gòu)造函數(shù)、input_line()函數(shù)和重載的“<<”運算符函數(shù)①StringVar(intsize);題意指出,size為字符串長度(字符個數(shù))初始值,字符串內(nèi)容初始化為空串,所以需要使用size設置成員max_length,為value申請size個字符的存儲空間,并把value的第一個字符設置為’\0’表示空串,這樣保證析構(gòu)函數(shù)的delete[]也是正確的。②StringVar(constchara[]);題意指出,使用參數(shù)數(shù)組a的內(nèi)容初始化對象的成員,即將數(shù)組a中的內(nèi)容,存放到value指向的內(nèi)存空間,由于value是使用new分配的(保證析構(gòu)函數(shù)的delete[]是正確的),所以不能簡單的把數(shù)組a的首地址賦給value,需要將數(shù)組a的內(nèi)容復制到value指向的內(nèi)存空間中,另外成員max_length,初值最小必須是value指向的內(nèi)存空間長度,即value指向的字符串長度+l(題意中max_length表示字符個數(shù)的最大值,所以需要包含字符串結(jié)束符’\0’)(此構(gòu)造函數(shù)的形參必須傳人的是字符串,如果是字符數(shù)組,必須傳入數(shù)組的長度,以防數(shù)組a的最后一個字符不是結(jié)束符’\0’,此時strlen()函數(shù)獲取的長度,就不是字符數(shù)組a的字符個數(shù))③slringVar(constslringVar&strobj);復制構(gòu)造函數(shù)需要將形參strobj的成員賦給當前調(diào)用該復制構(gòu)造函數(shù)的對象成員,在賦值value時,同樣需要為value分配足夠的內(nèi)存空間。④input_line(istrearn&ins);input_line()函數(shù)需要使用形參ins輸入流,輸入一個字符串存放到value中,題意要求可以輸入空格,所以我們不能直接用輸人流ins和輸入運算符,因為輸入運算符會丟棄空白符、空格符和制表符,可以使用輸入流ins的成員函數(shù):get()和while循環(huán),逐個輸入字符存放到value下標i的字符中,直到輸入的字符為換行符或value存滿(i=max_length)為止,當這兩個條件滿足其一,那么就應該停止輸入,另外需要注意:value指向的字符串結(jié)尾,必須包含空字符’\0’,所以下標。max_length-1必須是空字符,循環(huán)輸入時,i取值最大為max_length-2。⑤ostream&operator<<(oStream&outs,conststringVarthe_string);輸出運算符重載函數(shù),題意要求將the-string通過輸出流outs輸出,由于the_string是StringVar對象,所以輸出的應該是對象的成員value指向的字符串,根據(jù)返回值可知,函數(shù)必須返回輸入流ostream的引用;另外由于第一形參是輸入流outs,所以無法通過stringVar對象來調(diào)用,該函數(shù)不是類的成員函數(shù),函數(shù)定義時,不能限定stringVar作用域,由于該函數(shù)不是類的成員函數(shù),所以使用輸出流outs輸出value指向的字符串時,不能直接使用私有成員value,而是應該使用getValue()公有成員函數(shù),返回value的值,再輸出。國家二級C++機試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,該程序運行時有錯誤,請改正程序中的錯誤,使得程序運行后沒有內(nèi)存遺漏??梢栽谛薷奶幵黾踊蛘邉h除一條語句。本程序完成輸入兩個字符串,分別存儲到s1,s2中。注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在∥********error********的下面。#includeVoidmain(){char*s1;chars2[1024];cout<<“pleaseinputastring:”<標準答案:(1)S1=newchar[1024];(2)delete[]s1;(3)刪除“defetes2;”語句知識點解析:本題是主要是處理程序運行后是否有內(nèi)存遺漏的問題。對于這類問題主要是根據(jù)調(diào)試環(huán)境中的錯誤提示以及警告提示進行處理。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。該程序從鍵盤讀入整數(shù),并按從大到小的順序輸出輸入整數(shù)中互不相等的那些整數(shù)。程序一邊讀入整數(shù),一邊構(gòu)造一個以大到小順序鏈接的鏈表,直至輸入0時結(jié)束。然后順序輸出鏈表上各表元的整數(shù)值。主函數(shù)每讀入一個整數(shù),就調(diào)用函數(shù)fun(),函數(shù)fun()將還未出現(xiàn)在鏈表上的整數(shù)按從大到小的順序插入到鏈表中。為了插入方便,鏈表在表首有一個輔助表元。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#includeclassNODE{public:intdata;NODE*nexl;};voidfun(NODE*list,intx){}voidmain(){intx;NODE*head,*P;/*首先建立只有輔助表元的空鏈表*/head=newNODE;head->next=NULL;std::couL<<“Enterintegers,endwith0”<>x;if(x==0)break;fun(head,x);}for(P=head一>next;P!=NULL;p=p一>next)std::cout<data<<‘’;std::cout<next;delerehead;head=P;}while(P);}標準答案:NODE*u,*v,*p;u=list;v=u一>next;while(v!=NULL&&Xdata)//尋找插入的位置{u=v;v=v->next;}if(v==NULL‖X>v一>data)//判斷是否為新的元素{p=newNODE;P一>data=x;//生成新的元素P一>next=v:u->next=p;//插入新的元素}知識點解析:(1)該程序功能是構(gòu)造一個以大到小順序鏈接的鏈表。它的解題思路,首先尋找插入的位置,然后判斷是否為新元素,最后插入。(2)從己給部分源程序的main主函數(shù)開始入手.核心函數(shù)voidfun(NODE*list,intx)中的list參數(shù)為單鏈表,x為要插入的數(shù)據(jù)。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。完成以下功能:(1)完成構(gòu)造函數(shù),設置數(shù)組元素的個數(shù)為0,請在注釋∥********1********之后添加語句。(2)完成函數(shù)AddMember(intn),如果參數(shù)n包含在類的數(shù)據(jù)成員數(shù)組中,則返回0,否則把數(shù)據(jù)寫入數(shù)組,然后返回1,請在注釋∥********2********之后添加語句。(3)完成函數(shù)DelMember(intn),如果變量在數(shù)據(jù)中,則刪除該變量,并且返回1,如果不存在則返回0,請在注釋∥********3********之后添加語句。(4)完成成員函數(shù)isInclude(intn)的定義,該函數(shù)檢查參數(shù)n是否在類的數(shù)據(jù)成員數(shù)組elems中,如果在返回1,否則返回0。請在注釋∥********4********之后添加語句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。#include#defineMAXLENGTH500classCArray{public:CArray()
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育培訓機構(gòu)全套制度
- 高活室培訓制度
- 代理記賬業(yè)務培訓制度
- 工地崗前安全培訓制度
- 機關(guān)單位集中培訓制度
- 文化館舞蹈培訓制度
- 給員工培訓考核管理制度
- 初中團校培訓制度
- 質(zhì)檢崗前培訓制度
- 鍋爐房安全教育培訓制度
- 2025年安全生產(chǎn)事故年度綜合分析報告
- 2026年1月福建廈門市集美區(qū)后溪鎮(zhèn)衛(wèi)生院補充編外人員招聘16人考試參考試題及答案解析
- 2026年腹腔鏡縫合技術(shù)培訓
- 2026年黑龍江省七臺河市高職單招職業(yè)適應性測試試題題庫(答案+解析)
- 2026年廣西貴港市華盛集團新橋農(nóng)工商有限責任公司招聘備考題庫及一套答案詳解
- 地鐵安檢施工方案(3篇)
- 小學生寒假心理健康安全教育
- 汽機專業(yè)安全培訓課件
- 2026高考藍皮書高考關(guān)鍵能力培養(yǎng)與應用1.批判性與創(chuàng)造性思維能力的基礎(chǔ)知識
- 多學科團隊(MDT)中的醫(yī)患溝通協(xié)同策略
- 期末復習知識點清單新教材統(tǒng)編版道德與法治七年級上冊
評論
0/150
提交評論