版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
國家二級C++機試(操作題)模擬試卷51(共9套)(共27題)國家二級C++機試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,但該程序運行時有錯,請改正程序中的錯誤,使程序輸出的結果為:1003732注意:錯誤的語句在∥********error********的下面,修改該語句即可。#include∥********error********voidmain({∥********error********intm=0142;∥********error********intn=0X27;intq=32;cout<標準答案:(1)VOidmain()(2)intm=0144;(3)intn=0X25;或intn=0X25知識點解析:(1)本題主要考察了主函數(shù)定義及不同進制之間的轉(zhuǎn)換,包括十進制到八進制,十進制到十六進制。主函數(shù)定義的定義形式為“main()”,函數(shù)名之后必須是一對括號,因此第1個標識下應改為“voidmain()”。(2)cout輸出默認是10進制方式輸出的,根據(jù)題目要求輸出的結果可發(fā)現(xiàn)變量的初值不正確,十進制的100對應八進制的144,十進制的37對應十六進制的25,因此2和3應分別改成“intm=0144;”,“intn:0X25;”或“intn=0x25;"。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,補充空出的代碼。函數(shù)convert(char*des.char*str,charc,char*str2)的功能是:如果s仃中包含字符“!”,則替換成“a;如果str中包含字符“&”,則替換成b;如果str中包含字符“*”則替換成str2。并用函數(shù)返回目標轉(zhuǎn)換后的指針。注意:只能補充函數(shù)convert(char*des,char*str,char*str2)。#include#include#defineMAXLEN1024voidconvert(char*des,char*str,char*str2){}voidmain(){chardest[MAXLEN];char*str=”!&cefghi*!&”;char*str2=”Jklm”;convert(dest,str,str2);cout<標準答案:des[0]=0;chartemp[2]={0,0};for(inti=0;str[i]!=NULL;i++{if(str[i]==’!’){temp[0]=’a’;//替換成’a’strcat(des,temp);}elseif(str[i]==’&’){temp[0]=‘b’;strcat(des,temp);//替換成‘b’}elseif(str[i]==‘*’){strcat(des,str2);//替換成str2}else{temp[0]=str[i];strcat(des,temp);//其他情況則添加在后面}}知識點解析:(1)由審題分析可知,利用循環(huán)中不斷檢索s仃字符串每一個字符,循環(huán)變量i從0開始,直到到了str字符結束,即srt[i]==NULL為循環(huán)判斷結束條件。(2)在循環(huán)體內(nèi),用ifelse語句判斷是不是“!”、“&”或“*”這些特定的字符,如果是這些特定的字符則進行相應的替換,如果不是則將該字符直接加在des后面。(3)字符串的連接可以使用字符串連接函數(shù)strcatO,將新字符連接在des后面,即strcat(des,temp)。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。(1)對文件以追加的方式打開文件。請在注釋∥********1********后添加適當?shù)恼Z句。(2)定義m、n為類TestClass的公有int型數(shù)據(jù)成員,請在注釋∥********2********后添加適當?shù)恼Z句。(3)定義P為類TestClass的數(shù)據(jù)成員指針,并指向類TestClass數(shù)據(jù)成員m,請在注釋∥********3********后添加適當?shù)恼Z句。(4)定義P指向類TestClass數(shù)據(jù)成員n,請在注釋//料料料料4料料料料后添加適當?shù)恼Z句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。#include#include#include#includeusingnamespacestd;voidWriteFile(intX){ofstreamoutl;∥********1********outl.open(”modi3.txt”,);outl<標準答案:(1)將“outl.open("modi3.txt",);”補充完整為:outl.open(”modi3.txt”,ios—base::app);(2)添加語句:intm,n;(3)添加語句:intTestClass::*p=&(TestClasS::m);(4)添加語句:P=&(TestClasS::n);知識點解析:在VC環(huán)境下打開程序,根據(jù)題干給出的幾條功能要求,對程序中給出注釋下的內(nèi)容逐個補全或修改。從已定源程序的maha主函數(shù)開始入手,可以看出程序通過調(diào)用類TestClass和函數(shù)ClearFile0實現(xiàn)各種輸出操作。解題思路(1)題目1要求“對文件以追加的方式打開文件”。文件輸出輸入方式的設置值,以ios::app方式是以輸出方式打開文件,寫入的數(shù)據(jù)添加在文件末尾,即第1個標識下語句補全為“outl.open(”modi3.txt”,ios_base::app);”。(2)題目2要求“定義m、n為類TestClass的公有int型數(shù)據(jù)成員”。只需在程序中的TestClass類中的public區(qū)域添加m、n的定義即可。即在第2個標識下添加“intm,n;”。(3)題目3要求“定義P為類TestClass的數(shù)據(jù)成員指針,并指向類TestClass數(shù)據(jù)成員m”。程序中類TestClass數(shù)據(jù)成員m為:TestClass::m,定義P為類TestClass的數(shù)據(jù)成員指針語句為:TestClass::*p,將其指向前面的數(shù)據(jù)成員m,即為“intTestClass::p=&(TestClass::m);”。(4)題目4要求“定義P指向類TestClass數(shù)據(jù)成員n”。類TestClass數(shù)據(jù)成員n語句為TestClass::n,用P指向類TestClass數(shù)據(jù)成員n,添加的語句即“p=&(TestClass::n);”。國家二級C++機試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運行時有錯,請改正其中的錯誤,使得程序正常運行,并使程序輸出的結果為:TestClass1TestClass2注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結構,錯誤的語句在//********error********的下面。#include#includestruCtTestClass0{//********error********virtualvoidfun();};classTestClassl:publicTestClass0{voidfun(){cout<<"TestClass1"<fun();//********error********p=*obj2;p->fun();return;}標準答案:(1)virtualvoidfun()=0;(2)P=&obj1;(3)P=&obj2;知識點解析:(1)如果在基類中并不使用這個虛函數(shù),其返回值也是沒有意義的,它應該被定義為純虛函數(shù)。所以虛函數(shù)fun()應該是純虛函數(shù),也就是聲明虛函數(shù)的時候初始化為0的函數(shù)。即第1個標識下的“virtualvoidfun0:0;”。(2)第2個標識下的p為指針變量,將對象obj1賦值給p,實際上是p指向?qū)ο髈bj1的地址,所以“p=*obj1:”修改為“P=&obj1;”。(3)第3個標識下的“p=*obj2;”語句同(2),修改為“p=&obj2;”。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,補充空出的代碼。完成函數(shù)ToUpper(char*des,char*str),該函數(shù)實現(xiàn)把str字符串中小寫字符轉(zhuǎn)換成大寫字符,并存發(fā)在des中。例如:str=“aBcdrFGHijK”;則:des=“ABCDEFGHIJK”;注意:不能修改程序的其他部分,只能補充Toupper()函數(shù)。#include#defineMAXLEN1024voidToUpper(char*des,char*str){}voidmain(){chardest[MAXLEN];char*str="aBcdrFGHiJK";Toupper(dest,str);cout<標準答案:for(inti=0;str[i]!=0;i++){if(str[i]>=’a’&&str[i]<=’z’)//比較是否是小寫字母{des[i]=str[i]-’a’+’A’;//替換成大寫字母}else{des[i]=str[i];//其他情況不變}des[i+1]=0;}知識點解析:(1)由審題分析可知,可利用循環(huán)來逐個檢索str中的字符,循環(huán)變量i從0開始,直到str數(shù)組的結束,即str[i]==0為循環(huán)結束條件。(2)小寫字母的判別方式為:str[i]>=’a’&&str[i]<=’z’,即該字符比’z’小,而且比’a’大,如果滿足該條件則在該字符基礎上加上(’A’-’a’)值轉(zhuǎn)換為大寫字母;如果是其他字符的話,無需轉(zhuǎn)換,直接剛該字符放到des數(shù)組中。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示日期的類Date,但類Date的定義并不完整,按要求完成下列操作,將類的定義補充完整。(1)定義私有成員變量year、month、day,分別表示年、月、日,類型為int。請在注釋//********1********后添加適當?shù)恼Z句。(2)完成構造函數(shù),分別給year、month、day賦值,請在注釋//********2********后添加適當?shù)恼Z句。(3)完成重載符號“+=”的定義,請在注釋/********3********后添加適當?shù)恼Z句。(4)完成print()打印函數(shù),如2008年8月8日到屏幕和文件modi3.txt格式相同,請在注釋//********4********后添加適當?shù)恼Z句。注意:僅在函數(shù)指定位置添加語句,請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include#include#include#includeusingnamespacestd;voidWriteFile(intc){ofstreamout1;out1.open("modi3.txt",iosbase::app);out1<標準答案:(1)添加語句:intyear,month,day;(2)添加語句:year=y;month=m;day=d;(3)添加語句:Date&operator+=(intm)(4)添加語句:cout<知識點解析:(1)題目l要求“定義私有成員變量year、month、day”。在C++程序的private區(qū)域中添加變量year、month、day的定義,即在第1個標識下添加“intyear,month,day;”。(2)題目2要求“完成構造函數(shù),分別給year、month、day賦值”。在程序中“Date(inty,intm,intd)”的構造函數(shù)中添加給year、month、day賦值的語句,即在第2個標識下添加“year=y;month=m;day=d;”。(3)題目3要求“完成重載符號“+=”的定義”。在C++中,運算符重載的定義方法是定義一個重載運算符的函數(shù),格式為函數(shù)operator+重載運算符號+,所以這里補全“Date&operator+=(intm)”。(4)題目4要求“完成函數(shù)print()打印函數(shù)”。在C++中的print()函數(shù)中補全其打印功能,即在第四個標識下添加“cout<國家二級C++機試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運行時有錯,請改正其中的錯誤,使得程序正常運行,并使程序輸出的結果為:1121注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結構,錯誤的語句在//******error******的下面。#include<iostream.h>classTestClass{//********error********//********error********constintj;public:TestClass(){//********error********Staticinti=0;cout<<++i<<endl;cout<<j<<endl;}};voidmain(){TestClassobj1;TestClassobj2;obj2:j+=obj1.j;return;}標準答案:(1)添加語句:public:(2)intj;(3)添加語句:j=1;知識點解析:(1)打開modi1.cpp,調(diào)試程序,顯示錯誤提示為“modi1.cpp(22):errorC2248:’j’:cannotaccessprivatememberdeclaredinclass’TestClass’”,第1個標識下的i變量由于被定義為私有的,其他函數(shù)不可獲得,這里應該是public型,所以在第1個標識下添加“public:”。(2)程序中對于j的調(diào)用,說明j并不是常量,所以修改J的定義,將其定義為變量,而不是常變量,即修改第2個標識下語句為“intj;”。(3)題目中要求調(diào)用對象,輸出i的值為1。原程序中j變量的使用并沒有賦初始化值,輸出值為亂碼,所以第三個標識下添加“j=1;”。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分程序。函數(shù)fun(int*ar,intn)的功能是將指定的有序數(shù)組壓縮成各元素互不相同的有序數(shù)組,即相同數(shù)只保留一個,多余的被刪除。并返回互不相同的元素的個數(shù)。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。#1nclude<10Stream>intfun(int*a,intn){}voidmain(){intA[]={6,6,5,4,4,3,3,2,1};intj=fun(A,sizeof(A)/sizeof(int));for(inti=0;i<j;i++){std::cout<<A[i]<<’’;}std::cout<<std::endl;return;}標準答案:intj;intk:0;//指向數(shù)組第一個元素j=1;//指向數(shù)組第二個元素while(j<n)//將本次循環(huán)k指向的元素依次與其他元素比較,如果不同,則存入數(shù)組{if(a[J]!=a[k]){a[++k]=a[j];//k指向下一個元素}j++;}returnk+1;//為新數(shù)組大小知識點解析:(1)首先指向數(shù)組第一個元素a[k],然后將第二元素a[j]與它比較,不同存入數(shù)組第二個元素(a[++k])。(2)同時,將被比較的位置向后移動一位(j++)。循環(huán)直到數(shù)組的最后一個元素比較完畢。三、綜合應用題(本題共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)用obi的“<<”運算符輸出:HelioTest注意:增加代碼,或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。#include<iostream>usingnamespacestd;classTestClass{public://********1********{cout<<"int"<<endl;return10;}//********2********{cout<<str<<endl;}};intmain(){TestClassobj;//********3********//********4********return0;}標準答案:(1)添加語句:operator.int()(2)添加語句:operator<<(char*str)(3)添加語句:inti=int(obj);(4)添加語句:obj<<"HelloTest";知識點解析:(1)題目1要求“重載運算符int”的定義。運算符重載的方法是定義一個重載運算符的函數(shù),其一般格式為:函數(shù)類型operator運算符名稱(形參列表){對運算符的重載處理}。所以第1個標識下,重載運算符int的語句為“operatorint()”。(2)題目2要求“重載運算符‘<<’”。同(1),第2個標識下“<<”的重載函數(shù)定義為“operator<<(char*str)”。(3)題目3要求“在主函數(shù)main()中定義變量i,并調(diào)用對象obi的int運算符,給變量賦初值為10?!倍x變量i,即inti?!皁peratorint()”中的返回值為10,所以調(diào)用對象obj的int運算符,給變量賦初值為10,就是int(obj),即第三個標識下添加“inti=int(obj);”。(4)題目4要求“調(diào)用obj的“<<”運算符輸出“HelloTest””。重載運算符“<<”后,不僅能輸出標準類型數(shù)據(jù),而且可以輸出用戶自己定義的類對象。所以直接添加要輸出的字符串即可,即“obj<<"HelloTest";”。國家二級C++機試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,但該程序運行時有錯,請改正程序中的錯誤,使該程序的輸出結果為:100注意:錯誤的語句在∥********error********的下面,修改該語句即可。#includeStatiCintx=50;intt=0;int*func(intX,intY,intz){t=t+x+y+Z;∥********error********returnt;};voidmain(){inty=30;intx=10;intz=20;∥********error********x=x;∥********error********cout<標準答案:(1)return&t;(2)x=::x;(3)cout<<*func(x,y,z)<知識點解析:程序當中定義了全局靜態(tài)變量x,主函數(shù)內(nèi)又定義了一個和靜態(tài)變量x重名的變量x,在使用時需要注意區(qū)分這兩個變量。函數(shù)func(intx,inly,intz)返回一個整型數(shù)據(jù)指針,功能是將參數(shù)x,y,z三者求和,通過指針返回運算結果。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,補充空出的代碼。函數(shù)sum(intn)計算在n范圍內(nèi),能被7和1l整除的所有整數(shù)的和(包括n在內(nèi))。注意:不能修改程序的其他部分,只能補充sum()函數(shù)。#includedoublesum(intn){}voidmsin(){cout<標準答案:intresult=0;for(inti=11;i<=n;i++){if((i%7==0)&&(i%1]==0)){result+:i;}}returnresult;知識點解析:函數(shù)sum(intn)的功能是實現(xiàn)計算在n范圍內(nèi),能被7和11整除的所有整數(shù)的和(包括n在內(nèi)),可采用循環(huán)的方式從11開始到n逐個尋找能被7和11整除的數(shù),如果能同時被7和11整除則加到累加變量中。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。完成以下功能:(1)完成CMyClass的構造函數(shù),請改正注釋∥********1********后的錯誤。(2)完成mnc0函數(shù)定義,請改正注釋∥********2********后的錯誤。(3)初始化CmyClass的成員變量Number3為4,請改正注釋∥********3********后的錯誤。(4)完成func()函數(shù),請改正注釋∥********4********后的錯誤。輸出的結果為:Number1=12Number2=18Number3=16Number1=4Number2=2Number3=19注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。#includeclassCMyClass{public:∥********1********CMyClass(inti,intj){Number1=i;Number3+=i;}voiddisplay(){cout<<“Number1=”<標準答案:(1)將“CMyClass(inti,intj)”補充完整為:CMyClass(inti,intj):Number2(j)(2)添加語句:friendvoidfunc();(3)添加語句:intCMyClass::Number3=4;(4)將“obj.AddNum()”補充完整為:obj.AddNum(2);知識點解析:程序中定義了CMyClass類,其含有3個成員變量和多個成員函數(shù),成員變量Number2為常成員,Number3為靜態(tài)成員。display()函數(shù)輸出3個成員變量的值,AddNum(inti)函數(shù)改變靜態(tài)成員變量Number3的值,在函數(shù)func()內(nèi)部,訪問了類的私有成員,而且rune0不屬于類的成員函數(shù),故函數(shù)func()為類cmyclass的友元函數(shù)。國家二級C++機試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,該程序運行時有錯,請改正錯誤,使得程序正確執(zhí)行,并且輸出以下語句:TestClass1:0TestClass2注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結構,錯誤的語句在∥********error********的下面。#includestructTestClass1{TestClass1(inti=0){mi=i;}voidprint(){cout<<“TestClassl:”<標準答案:(1)public:(2)TeStClass1obj1(0);或TestClass1obj1;(3)TestClass2obj2;知識點解析:程序要求輸出TestClass1:0和TestClass2。從已定源程序的main主函數(shù)開始入手,可以看出程序首先定義TestClass1和TestClass2類型的變量,然后通過調(diào)用其中的print成員函數(shù)實現(xiàn)輸出結果。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。完成fun()函數(shù),其功能是:將兩個從小到大有序數(shù)組a和b,復制合并出一個有序整數(shù)序列c,其中形參n和m分別是數(shù)組a和b的元素個數(shù)。注意:不能修改程序的其他部分,只能修改fun()函數(shù)。{}includevoidfun(inta[],intn,intb[],intm,int*c){}voidmain(){intA[]={3,5,7,9,11,18,21);intB[]={6,15,19,21,39);intC[25],i;for(i=0;i<25;i++)C[i]=0;cout<<“A[]=”;for(i=0;i<7;i++)cout<標準答案:Inti,j];for(i=j=0;i知識點解析:(1)該程序功能是將兩個從小到大有序數(shù)組a和b,復制合并出一個有序整數(shù)序列c。它的解題思路,因為要合并的數(shù)組是有序數(shù)組,所以在循環(huán)中依次比較兩個數(shù)組中的元素大小,如果它比另一個數(shù)組的元素小,那么將其拷貝到c,并將其向后移動,直到數(shù)組結尾。(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)voidfun(inta[],intn,intb[],intm,int*c)中的a,b參數(shù)為要合并的數(shù)組,n和m為兩個數(shù)組的大小,c為合并的結果。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補充完整。完成以下功能:(1)完成類Rect的構造函數(shù),實現(xiàn)對變量left、right、top、bottom的初始化,缺省值都為0,請在注釋∥********1********后添加適當?shù)恼Z句。(2)完成類Rectangle的構造函數(shù),請在注釋∥********2********后添加適當?shù)恼Z句。(3)完成計算矩形對角線長度函數(shù)Diagonal(),請在注釋∥********3********后添加適當?shù)恼Z句。(4)完成計算周長函數(shù)Girth(),請在注釋∥********4********后添加適當?shù)恼Z句。程序輸出:50140注意:增加代碼,或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。#include#includeclassRectangle{public:intleft,rightttop,bottom;∥********1********{left=i;right=r;top=t;bottom=b;}∥********2********{left=rc.left;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));知識點解析:類Rectangle是描述了一個矩形,私有成員分別描述矩形的坐標值,構造函數(shù)給私有數(shù)據(jù)成員賦初值。Rectangle類的Diagonal()和Girth()分別計算矩形的對角線長度和周長,可通過矩形的長和寬計算得到。國家二級C++機試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾proj1下的工程proj1,其中定義了一個CD類。程序中位于每個//ERROR**********found**********下的語句行有錯誤,請加以更正,不得修改程序的其他部分。更正后程序的輸出應該是:歌唱祖國30義勇軍進行曲95注意:只能修改每個//ERROR**********found**********下的那一行,不要改動程序中的其他內(nèi)容。#include<iostream>#include<cstring>usingnamespacestd;C1assCD{charname[20];intnumber;public:voidinit(char*aa,intbb){//ERROR****found****name=aa;number=bb;}char水getName(){//ERROR****found****return*name;}intgetNumber(){returnnumber;}voidoutput(){//ERROR****found****cout<<name[20]<<’’<<number<<end1;}};voidmain(){CDdx,dy;dx.init("歌唱祖國",30);dy.init("義勇軍進行曲",3*dx.getNumber()+5);dx.output();dy.output();}標準答案:(1)strcpy(name,aa);(2)returnname;(3)cout<<name<<’’<<number<<end1;知識點解析:程序定義CD類,它包含兩個數(shù)據(jù)成員:字符數(shù)組name和整型變量number;還包含四個公有成員函數(shù),init()函數(shù)接收兩個參數(shù),用參數(shù)對數(shù)據(jù)成員進行賦值;getName()函數(shù)返回數(shù)據(jù)成員name;getNumber()函數(shù)返回數(shù)據(jù)成員number;output()函數(shù)將數(shù)據(jù)成員name和number輸出。CD類的定義體中,有三個錯誤:(1)init()函數(shù)將形參aa賦給name,由于name是字符數(shù)組,所以不能通過簡單的賦值運算符進行賦值,應該使用strcpy()函數(shù)將形參aa指向的字符串拷貝到name中。(2)getName()函數(shù)的返回值為char*類型,所以函數(shù)體的return語句應該返回name,而不是name指向的字符串。(3)output()函數(shù)需要輸出兩個數(shù)據(jù)成員,輸出字符數(shù)組時,只需要給出數(shù)組名name即可。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾proj2下的工程proj2,其中有兩個類:一是銷售類(sale),用于表示按照一件商品的基本價格進行銷售;另一個是打折銷售類(DiscountSale),用于表示在基本價格基礎上按一個折扣比例進行銷售。DiscountSale類繼承了sale類。類的主要數(shù)據(jù)成員的含義和成員函數(shù)的功能要求在程序注釋中有說明。請在程序中的橫線處填寫適當?shù)拇a,然后刪除橫線,完成程序的功能。此程序的正確輸出結果應為:Discountitemischeaper.Savingis0.1注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classSale{public:Sale();//默認構造函數(shù),將price初始化為0Sale(doublethe_price);//構造函數(shù),用the_price初始化pricevirtualdoublebill()const;//返回當前商品的價格(基本價)doublesavings(constSale&other)const;//返回參數(shù)other所引用的對象比當前對象便宜的差價protected:doubleprice;//商品的基本價格(不打折的價格)};Sale∷Sale():priceC0){}Sale∷Sale(doublethe_price):price(the_price){}doubleSale∷bill()const{returnprice;}doubleSale∷savings(constSale&other)const{//ERROR******found******_______//返回當前對象價格比other貴多少的差價}classDiscountSale:publicSale//打折銷售類繼承銷售類{public:DiscountSale();//默認構造函數(shù),將discount初始化為0DiScountSale(doublethe_price,doublethe_discount);//構造函數(shù),the_price是基本價格;the_discount是折扣百分比virtualdoublebill()const;//返回本商品銷售價格(即打折以后的實際售價,覆蓋了基類的bill函數(shù))protected:doublediscount;//折扣百分比。例如降價至原價的70%,此成員值應為70},DiscountSale∷DiscountSale():discount(0{}DiScountSale∷DiscountSale(doublethe_price,doublethe_diScount):Sale(the_price),discount(the_discount){}doubleDiscOuntSale∷bill()const{doublefraction=discount/100;//******found******_______;//返回本對象打折以后的實際售價}booloperator<(constSale&first,constSale&Second){//******found******_______;//判斷是否first價格低于second價格}intmain(){SaleSimple(10.00);DiscountSalediScount(11.00,90);if(discount<simple){cout<<"DiScountitemischeaper.\n";//******found******//這里輸出購買discount比購買simple節(jié)省多少錢cout<<"Savingis"<<_______<<end1;}elsecout<<"Discountitemisnotcheaper.\n";return0;}標準答案:(1)returnthis->bill()-other.bill()(2)returnfraction*price(3)returnfirst.bill()<second.bill()//bill()是返回商品的實際價格(4)simple.savings(discount)知識點解析:暫無解析三、綜合應用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾proj3下的工程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);//構造函數(shù),size為字符串長度(字符個數(shù))初始值;字符串內(nèi)容初始化為空串StringVar(constchara[]);//構造函數(shù),用參數(shù)數(shù)組a的內(nèi)容初始化當前對象StringVar(constStringVar&strobj);//復制構造函數(shù)~StringVar(){delete[]value;};//析構函數(shù)intlength()const{returnstrlen(value);}//從輸入流ins輸入一個字符串,其中可以包括空格voidinput_line(istream&ins);//返回字符串首地址char*getValue()const{returnvalue;}private:char*value;//字符串首地址intmax_length;//字符串最大長度(字符個數(shù)最大值)};//將the_string通過輸出流outs輸出ostream&operator<<(ostream&outs,constStringVarthe_string);//main.cpp#include<iostream>#include<string>#include"StringVar.h"//*********333*********//*********666*********intmain(){StringVarnamel(30),name2("Borg");name1.inputline(cin);StringVarname3(name2);cout<<name1<<end1;cout<<name2<<end1;cout<<name3<<end1;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"));StringVarnamel(40),name2("John");name1.input_line(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]=’\O’;}ostream&operator<<(ostream&outs,constStringVarthe_string){outs<<thestring.getValue()<<end1;returnouts;}知識點解析:暫無解析國家二級C++機試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、程序通過定義學生結構體變量,存儲了學生的學號、姓名和三門課的成績。所有學生數(shù)據(jù)均以二進制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指的文件中讀入學生數(shù)據(jù),并按照學號從小到大排序后,再用二進制方式把排序后的學生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來的文件內(nèi)容。請在程序的中括號處填入正確的內(nèi)容并把中括號刪除,使程序得出正確的結果。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename){FILE*fp;inti,j;STUs[N],t;/*********found*********/fp=fopen(filename,【1】);fread(s,sizeof(STU),N,fp);fclose(fp);for(i=0;i標準答案:(1)"rb"(2)>(3)fwrite知識點解析:填空1:題目中要求從形參filename所指的文件中讀入學生的數(shù)據(jù),以此可以看出本空應該填寫”rb”。填空2:此處的if語句是比較學號的大小,如果學號大就和學號小的換位,以此本空填寫>。填空3:題目要求所有的學生數(shù)據(jù)均以二進制方式輸出到文件中,因此本空填寫fwrite。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:根據(jù)整型參數(shù)m,計算如下公式的值。例如,若m=2000,則應輸出0.000160。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODIl.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include#include#include/*********found*********/fun(intm){doubley=0,d;inti;/*********found*********/for(i=100,i<=m,i+=100){d=(double)i*(double)i;y+=1.0/d;}return(y);}voidmain(){intn=2000;system("CLS");printf("\nTheresultis%1f\n",fun(n));}標準答案:(1)doublefun(intm)(2)for(i=100;i<=m;i+=100)知識點解析:(1)題目要求在函數(shù)fun中求級數(shù)前m項和??捎醚h(huán)語句,每次計算級數(shù)中的一項,然后累加。第一處錯誤在于定義fun(intm),由函數(shù)的返回值y可知此處應該定義為double。fun(intm)。(2)for(i=100,i<=m,i+=100)中是一個簡單的語法錯誤。for循環(huán)語句的形式為for(表達式l;表達式2;表達式3),其表達式之間應以”;”相隔。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、請編寫一個函數(shù)voidfun(intm,intk,intxx[]),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中。例如,若輸入17,5,則應輸出19、23、29、31、37。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include#include#includevoidfun(intm,intk,intxx[]){}voidmain(){FTLE*wf;intm,n,zz[1000];system("CLS");printf("\nPleaseentertwointegers:");scanf("%d%d",&m,&n);fun(m,n,zz);for(m=0;m標準答案:voidfun(intm,intk,intxx[]){inti,j,n;for(i=m+1,n=0;n=i)/*如果是素數(shù),放入數(shù)組xx中*/xx[n++]=i;}}知識點解析:本題主要考查素數(shù)的判定方法,如果一個數(shù)不能被除了1和其自身以外的數(shù)整除,則這個數(shù)為素數(shù)。本程序使用循環(huán)語句控制需要判斷的數(shù),在循環(huán)體中判斷該數(shù)是否為素數(shù),若是則存入數(shù)組xx中。國家二級C++機試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,使它能得出正確的結果。本程序要求屏幕輸出:n=99注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結構,錯誤的語句在∥********error********的下面。#include∥********error********classTestClasS(){public:∥********error********void~TestClass(){);TestClass(intn){cout<<’n’<<’:’<標準答案:(1)ClasSTestClasS(2)~TestClass(){);(3)};知識點解析:程序要求輸出n=99。從已給定源程序的main主函數(shù)開始入手,可以看出程序首先通過類TestClass中的TestClass構造函數(shù)實現(xiàn)題目要求的輸出。解題思路(1)第1個標識下的“classTestClass0”類的定義,根據(jù)C++中類的定義格式,類名后面是沒有括號的,所以第1個標識下應為“classTestClass”。(2)第2個標識下的“void~TestClass0{};”是析構函數(shù),根據(jù)C++中析構函數(shù)的格式中是沒有函數(shù)類型說明的,所以修改為“~TestClass(){};”。(3)根據(jù)C++中類的定義,第三個標識下類結束的“}”缺少分號,即修改為“};”。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,補充空出的代碼。函數(shù)convert(cha*des,char*str)實現(xiàn)的功能是:(1)如果字符串最后面有空格,則全部刪除;(2)轉(zhuǎn)換后的數(shù)據(jù)放到des,并且指針作為返回值返回。注意:不能修改程序的其他部分,只能補充convert()函數(shù)。#include#inciude#defineNAXLEN1024char*convert.(char*des,char*sir){}voidmain(){chardest;[NAXI,EN];char*string=“abcdef”;cout;<<string<<“<一一”<<endl;cout<標準答案:intlength=0;inti;for(1ength=0;str[1ength]!=NULL,length++),//求數(shù)組長度length—-;//下標從0一len一1,下標減1表示最后一個字符的下標值for(i=1ength,i>=0;i一一){if(str[i]!=--)//判斷結尾是否有空格,從后往前判斷直到不是不是空格了跳出循環(huán)break;}for(1ength=0;length<=i;length++){des[1ength]=str[length];//從前面開始,逐個將str中的字符拷貝到des數(shù)組中,不含最后面的空格}des[1ength]=NULL;//最后一個字符為NULLreturndes;知識點解析:(1)利用循環(huán)將字符串str的長度求出,然后從字符串的尾部開始檢索,用循環(huán)從字符串的最后一個字符往前面逐個檢查,如果該字符不是空格則退出循環(huán),這個時候就找到了最后一個非空格字符所在的下標位置,然后從下標0開始到該位置,逐個將s仃里面字符拷貝到des中。(2)程序當中使用了3次循環(huán):計算長度、尋找最后一個非空格字符和拷貝三個過程。三、綜合應用題(本題共1題,每題1.0分,共1分。)3、用VC6打開考生文件夾下的源程序文件modi3.cpp,其中定義了多個類,但類不能達到輸出要求,按照定義的輸出修改函數(shù),使得輸出如下:TestClass3TestClass2TestClass1其中定義的類并不完整,按照要求完成下列操作,將類的定義補充完整。(1)類TestClass2公共繼承于TestClassI,請在注釋∥********1********后添加適當?shù)恼Z句。(2)print函數(shù)為虛函數(shù),請在注釋∥********2********后添加適當?shù)恼Z句。(3)修改語句,使得P指定對象obj3,請在注釋∥********3********后添加適當?shù)恼Z句。(4)修改語句,利用P調(diào)用print()函數(shù),完成輸出信息,注釋∥********4********后添加適當?shù)恼Z句。注意:僅在函數(shù)指定位置添加語句,請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容。#include<10Stream>usingnamespacestd;classTestClassl{public:voidprint(){cout<<“TestClasSl”<標準答案:(1)將“classTestClass2”補充完整為:classTestClass2:publicTestClassl(2)將“voidprint()”補充完整為:virtualvoidprint()(3)將“p=obj3;”修改為:p=&obj3;(4)將“P.print();”修改為:P一>print();知識點解析:本題的功能是通過print虛函數(shù)將字符串輸出。在VC環(huán)境下打開程序,根據(jù)題干給出的幾條功能要求,對程序中給出注釋下的內(nèi)容逐個補全或修改。從已定源程序的main主函數(shù)開始入手,可以看出程序通過調(diào)用類和成員函數(shù)實現(xiàn)各種輸出操作。解題思路(1)題目1要求“類TestClass2公共繼承于TestClassl”。從已有的類產(chǎn)生一個新的子類,成為類的派生。聲明派生類的一般形式為:class派生類名:[繼承方式]基類名。根據(jù)題目中的要求以及派生類的一般形式,第1個標識下添加語句“classTestClass2:publicTestClass1”。(2)題目2要求“print函數(shù)為虛函數(shù)”。在C++中,用virtual聲明的函數(shù)為虛函數(shù),因此第2個標識下的語句修改為“vimlalvoidprint()”。(3)題目3要求“使得P指定對象obj3”。P為指針變量,obj3為類的對象,將一個指針變量指向另一個變量,只要把被指向的變量的地址賦給指針變量即可。取對象obj3地址的語句為&obj3,所以這里補全“p=&obj3;”。(4)題目4要求“利用P調(diào)用print()函數(shù)”。C++中用”-’>’運算符實現(xiàn)成員訪問,因此調(diào)用print()函數(shù),應將第4個標識下修改為“p->print0;”。國家二級C++機試(操作題)模擬試卷第9套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請使用VC6或使用【答題】菜單打開考生文件夾projl下的工程proj1。該工程中包含程序文件mmn.cpp,其中有類CDate(“日期”)和主函數(shù)main的定義。程序中位于每個“//ERROR****found****”之后的一行語句有錯誤,請加以改正。改正后程序的輸出結果應為:原日期:2005—9—25更新后的日期:2006—4—1注意:只修改每個“//ERROR****fould****”下的那一行,不要改動程序中的其他內(nèi)容。#include#includeusingnamespacestd;classCDate//日期類{//ERROR**********found***********protected:CDate(){};CDate(intd,intm,inty){//ERROR**********found***********SetDate(intday=d,intmonth=m,intyear=y);};voidDisplay();//顯示日期voidSetDate(intday,intmonth,intyear)//設置日期{m_nDay=day;mnNonth=month;mnYear=year;)private:intm_nDay;//日intmnNonth;//月intmnYear;//年};voidCDate::Display()//顯示日期{//ERROR**********found***********cout<標準答案:(1)public:(2)SetDate(d,m,y);(3)cout<知識點解析:本題考查CDate類,其中涉及構造函數(shù)和成員函數(shù)。判斷函數(shù)是公有成員還是保護成員,主要通過在主函數(shù)中函數(shù)的調(diào)用來確定,如果函數(shù)在主函數(shù)中被調(diào)用則說明是公有成員,否則為私有成員或者保護成員?!窘忸}思路】(1)通過主函數(shù)中成員函數(shù)的調(diào)用可知這里應該為公有成員,而且構造函數(shù)必須為公有繼承。(2)主要考查考生對成員函數(shù)的掌握,程序在這里調(diào)用成員函數(shù)SetDate,直接把形參代入即可。(3)題目要求輸出原日期:2005—9—25。可以知道輸出順序為:先輸出年,其次月,最后是日?!窘忸}寶典】主要考查考生對公有成員,成員函數(shù)的掌握,構造函數(shù)一般情況下肯定是公有成員,當涉及派生類時才會使用保護成員。二、簡單應用題(本題共1題,每題1.0分,共1分。)2、請使用VC6或使用【答題】菜單打開考生文件夾pmj2下的工程pmj2,其中定義了Employee類和Manager類。Em-ployee用于表示某公司的雇員,其屬性包括姓名(name)和工作部分(dept)。Msxmger是Employee的公有派生類,用于表示雇員中的經(jīng)理。除了姓名和工作部分之外,Manager的屬性還包括級別(1evel)。Employee類的成員函數(shù)print用于輸出雇員的信息Manager類的成員函數(shù)print負責輸出經(jīng)理的信息。請在橫線處填寫適當?shù)拇a,然后刪除橫線,以實現(xiàn)上述類定義。此程序的正確輸出結果應為:Name:SallySnlithDept:SaLlesLevel:2注意
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新能源儲能設施建設與租賃合同4篇
- 2025年度新能源汽車充電樁電工安裝與運營合同4篇
- 2025年度數(shù)據(jù)中心建設承包技師服務協(xié)議3篇
- 2025年度油氣儲罐環(huán)保改造項目合同范本4篇
- 2024版聯(lián)合開發(fā)合同(新能源技術)
- 2025年版產(chǎn)業(yè)園區(qū)招商引資代理服務合同6篇
- 2025年度快遞收派服務外包管理合同4篇
- 2025年度個人房地產(chǎn)投資融資委托服務協(xié)議4篇
- 2025年度行政效能監(jiān)察合作協(xié)議書2篇
- 2025年榆林神木精益化工有限公司招聘筆試參考題庫含答案解析
- 常見老年慢性病防治與護理課件整理
- 履約情況證明(共6篇)
- 云南省迪慶藏族自治州各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細
- 設備機房出入登記表
- 六年級語文-文言文閱讀訓練題50篇-含答案
- 醫(yī)用冰箱溫度登記表
- 零售學(第二版)第01章零售導論
- 大學植物生理學經(jīng)典05植物光合作用
- 口袋妖怪白金光圖文攻略2周目
- 光伏發(fā)電站集中監(jiān)控系統(tǒng)通信及數(shù)據(jù)標準
- 三年級下冊生字組詞(帶拼音)
評論
0/150
提交評論