國家二級C++機(jī)試(操作題)模擬試卷30(共26題)_第1頁
國家二級C++機(jī)試(操作題)模擬試卷30(共26題)_第2頁
國家二級C++機(jī)試(操作題)模擬試卷30(共26題)_第3頁
國家二級C++機(jī)試(操作題)模擬試卷30(共26題)_第4頁
國家二級C++機(jī)試(操作題)模擬試卷30(共26題)_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級C++機(jī)試(操作題)模擬試卷30(共9套)(共26題)國家二級C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,但該程序運(yùn)行時有錯,請改正程序中的錯誤,使程序輸出的結(jié)果為:1003732注意:錯誤的語句在∥********error********的下面,修改該語句即可。#include∥********error********voidmain({∥********error********intm=0142;∥********error********intn=0X27;intq=32;cout<標(biāo)準(zhǔn)答案:(1)voidmsin()(2)intm=0144;(3)intn=0×25;或intn=0×25;知識點解析:主函數(shù)main()中,定義了三個變量,分別賦初值為八進(jìn)制、十六進(jìn)制和十進(jìn)制數(shù),并利用cout輸出。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。請完成函數(shù)fun(char*data),此函數(shù)的功能是,找出字符串?dāng)?shù)組中最小的ASCⅡ值,如果有相同變量,則輸出最后一個所在的位置;如果字符串為空,則返回一1;或者不存在時也返回一1。注意:請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。計算數(shù)字如果第一個字母最小,則返回0。依次增加。#includeintfun(char*data){}Voidmsin(){charstr[1024];cout<<“請輸入一行英文字符串:\n”;cin.getline(str,1024);cout<<”最小的字母出現(xiàn)在距離頭部”<標(biāo)準(zhǔn)答案:intMinPos=0;//初始化最小值位置if(data==NULL)//判斷輸入字符串是否為空return一1;charMinData=data[0];//設(shè)置字符串第一個字符為最小值if(MinData==0)//判斷第一個字符是否存在return一1;for(inti=1;data[i]!=0;i++){if(data[i]<=MinData){MinData=data[i];//逐個判斷每個字母是否小于標(biāo)記字符MinPos=i;//最小值位置)}returnMinPos;知識點解析:(1)該程序功能是找出字符串?dāng)?shù)組中最小的ASCⅡ值。它的解題思路,用最小值變量標(biāo)記第一個待找字符,把所有待找字符和標(biāo)記字符逐個進(jìn)行比較,并標(biāo)記其當(dāng)前最小值及其所在位置,從而找出最小值。(2)從己給部分源程序的main主函數(shù)開始入手,核心函數(shù)intfun(char*data)中的data參數(shù)為輸入的字符串?dāng)?shù)組,其中MinPos為最小值位置。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示人基本信息的類CHumanlnfo,但類CHumanln的定義并不完整。請按要求完成下列操作,將類CHumanInfo的定義補(bǔ)充完成:(1)定義私有數(shù)據(jù)成員bloodType用于表示血型,血型為char型的數(shù)據(jù)。請在注釋“∥********1********之后添加適當(dāng)?shù)恼Z句。(2)完成構(gòu)造函數(shù)的定義,要求具有缺省值,缺省值為身高175,體重70,血型A。請在注釋“∥********2********之后添加適當(dāng)?shù)恼Z句。(3)完成類外CHumanlnfo成員函數(shù)Setlnfo的定義。請在注釋“∥********3********”之后添加適當(dāng)?shù)恼Z句。(4)在主函數(shù)中調(diào)用成員函數(shù)SetInfo,把對象d2的三個私有數(shù)據(jù)成員分別設(shè)定為身高170,體重64,血型為B。請在注釋“∥********4********,,之后添加適當(dāng)?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。#includeClassCHumanInfo{private:intheight;intweight;∥********1********public:∥********2********:height(ht),weight(wt),bloodType(bt){};CHumanlnfo(CHumanInfo&hi):height(h1.height),weight(h1.weight),bloodType(h1.bloodType){);intGetHeight(){returnheight;}intGetWeight(){returnwelght;}intGetBloodType(){returnbloodType;}voidSetInfo(intht,intwt,charbt);voidDisplay();};∥********3********{height=ht;weight=wt;bloodType=bt;}voidCHumanInfo::Display(){cout<<“HumanInfo:”;cout<標(biāo)準(zhǔn)答案:(1)添加語句:charbloodType;(2)添加語句:CHumanInfo(intht=175,intwt=70,charbt:’A’)(3)添加語句:voidCHumanInfo::SetInfo(intht,intwt,charbt)(4)添加語句:h2.SetInfo(170,64,’B’);知識點解析:類CHumanlnfo有3個成員變量:用于表示血型的bloodType、表示身高的height和表體重的weight,成員函數(shù)GetHeight()返回height值,GetWeight()返回weight值,GetBloodType()返回bllodType值,Setlnfo(intht,intwt,charbt)可改變bloodType、height和weight值,成員函數(shù)Display()在屏幕上打印三個成員變量值。國家二級C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi.cpp,該程序運(yùn)行時有錯誤,請改正錯誤,使得程序正常運(yùn)行,并且要求最后一個catch()必須拋出執(zhí)行的任何異常。程序通過拋出異常輸出:error0ERROR注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//********error********的下面。#includeintmain(){try{throw("error");}//********error********catch(chars){cout<標(biāo)準(zhǔn)答案:(1)catch(char*s)(2)catch(inti)(3)catch(…)知識點解析:(1)第1個標(biāo)識前的異常拋出語句為“throw("error");”,其中的類型為字符串。所以對應(yīng)的異常捕捉語句catch中應(yīng)該符合這個類型,而程序中給出的語句“catch(chars)”是字符型的,所以第2個標(biāo)識下的語句修改為“catch(char*s)”。(2)第2個標(biāo)識前的異常拋出語句為“throw((int)0);”,其中的類型為int。所以對應(yīng)的異常捕捉語句catch中應(yīng)該符合這個類型,所以補(bǔ)充catch子句中的類型,否則找不到匹配的catch塊,那么系統(tǒng)就會調(diào)用一個系統(tǒng)函數(shù),使程序終止運(yùn)行。即第1個標(biāo)識下的語句修改為“catch(inti)”。(3)如果在catch子句中沒有指定異常信息的類型,那么就用刪節(jié)號“…”表示它可以捕捉任何類型的異常信息,即修改為“catch(…)”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。請完成以下函數(shù):intfactorial(intn):求出n的階乘,必須使用遞歸調(diào)用。如果n小于1則返回0。注意:不能修改函數(shù)的其他部分。#include#includeintfactorial(intn){}voidmain(){cout<標(biāo)準(zhǔn)答案:if(n<1){return0;}elseif(n==1){return1;}else{returnn*factorial(n-1);}知識點解析:(1)先考慮最簡單的情況,n為1(或小于1)時返回值應(yīng)該為1,即factorial(1)=1,這是遞歸結(jié)束條件,如果n大于1則遞歸調(diào)用自己。(2)n>1時,此時遞歸函數(shù)調(diào)用自己,即factorial(n)=n*factorial(n-1),此時的函數(shù)的返回值是n*factorial(n-1),如此來實現(xiàn)遞歸調(diào)用。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)完成構(gòu)造函數(shù),設(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ù)islnclude(intn)的定義,該函數(shù)檢查參數(shù)n是否在類的數(shù)據(jù)成員數(shù)組elems中,如果在返回1,否則返回0。請在注釋//********4********之后添加語句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。#include#defineMAXLENGTH500classCArray{public:CArray(){//********1********}intAddMember(intn){for(inti=0;i標(biāo)準(zhǔn)答案:(1)添加語句:length=0;(2)將“if(Array[i]=n)”補(bǔ)充完整為:if(Array[i]==n)或if(n==Array[i])(3)將“if()”補(bǔ)充完整為:if(i知識點解析:(1)使length的初始化為0,因此添加語句:“l(fā)ength=0;”。(2)第2個標(biāo)識下是檢查n是否已經(jīng)在數(shù)組當(dāng)中存在,用if語句來判斷,即if(A盯ay[i]==n)或if(n==Atray[i])。(3)DelMember(intn)函數(shù)刪除指定的元素,由于元素在數(shù)組當(dāng)中的位置未知,因此必須先查找該元素的位置,在該函數(shù)的實現(xiàn)過程當(dāng)中通過for循環(huán)來完成,即第一個for循環(huán)查找n在數(shù)組中的位置。如果n存在于數(shù)組中,那么if中的break語句就會執(zhí)行跳出循環(huán),此時循環(huán)變量i的值會小于length,即通過判斷i的值是否小于length值可以知道n是否存在數(shù)組中,如果存在數(shù)組中接下來進(jìn)行刪除操作。即第3個標(biāo)識下應(yīng)改為if(i國家二級C++機(jī)試(操作題)模擬試卷第3套一、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)1、請使用菜單命令或:直接用VC6打開考生文件夾下的工程proj2,實現(xiàn)一個自定義的字符串類MyString,重載取下標(biāo)操作符([]),使類的對象能夠通過下標(biāo)取字符串的某位元素。如果下標(biāo)越界,則返回第一個元素的值。請在程序中//**********found**********之下一行的橫線處填寫適當(dāng)?shù)拇a,并刪除橫線,使程序完整、正確。輸出結(jié)果為:st1#include2#include3usingnamespacestd;4classMyString5{6private:7char*str;8public:9MyString(char*s)10{11//**********found**********12str=new______;13strcpy(str,s);14}15~MyString()16{17//**********found**********18______;19}20char&operator[](inti);21};22char&MyString::operator[](inti)23{24//**********found**********25if(_____)26returnstr[i];27//**********found**********28return______;29}30intmain()31{32MyStringtest("teststring");33cout<標(biāo)準(zhǔn)答案:(1)char[strlen(s)+1](2)delete[]str(3)i知識點解析:(1)主要考查構(gòu)造函數(shù)中成員變量的賦值、動態(tài)內(nèi)存的分配和字符串長度函數(shù)的使用,成員變量str是字符串指針,賦值時使用new[]分配內(nèi)存空間,為了存放字符串尾部的空字符,需要分配的容量為字符串str長度+1,另外使用strlen獲取str的長度。(2)主要考查考生對析構(gòu)函數(shù)定義的掌握和動態(tài)內(nèi)存的釋放,MyString類的成員str是在構(gòu)造函數(shù)中使用new[]分配的,所以在析構(gòu)函數(shù)中需要使用delete[]釋放。(3)主要考查考生對字符串庫函數(shù)調(diào)用的掌握,使用strlen獲取str的長度,判斷下標(biāo)i是否越界。(4)如果下標(biāo)i越界,根據(jù)題意返回第一個元素str[0]。二、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請使用菜單命令或直接用VC6打開考生文件夾下的工程proj3,其中聲明了Date類,它是一個用于表示日期的類。成員函數(shù)isLessThan用以比較兩個日期的大?。寒?dāng)?shù)谝粋€日期早于第二個日期時,返回true,否則返回false。請補(bǔ)充完整函數(shù)isLessThan。在main函數(shù)中給出了一組測試數(shù)據(jù),此情況下程序的輸出應(yīng)該是:2007-06-21<2007-07-032007-06-21>=2007-06-192007-06-21<2010-01-01注意:只需在函數(shù)isLessThan的//********333********和//********666********之間填入若干語句,不要改動程序中的其他內(nèi)容。1#include"Date.h"2intmain(){3Datedatel(2007,6,21),date2(2007,7,3),date3(2007,6,19),date4(2010,1,1);4datel.show();5datel.isLessThan(date2)?cout<<"<¨:cout<<">=";6date2.show();cout<=";9date3.show();cout<=";12date4.show();cout<3#include4usingnamespacestd;5classDate{6intyear;7intmonth;8intday;9public:10Date(inty,intm,int.d):year11(y),month(m),day(d){}intgetYear()const{returnyear;}12intgetMonth()const{returnmonth;}13intgetDay()const{returnday;}14voidshow(ostream&os:cout);15booloperator=:(Datedate)const{16returnyear==date.year&&month17==date.month&&day==date.day;}18boolisLessThan(Datedate)const;19};20voidwriteToFile(constchar*path);標(biāo)準(zhǔn)答案:1boolless=false:2if(year知識點解析:主要考查考生對成員函數(shù)、關(guān)系運(yùn)算符和邏輯運(yùn)算符的掌握,成員函數(shù)isLessThan是將該對象本身與參數(shù)date進(jìn)行比較,返回是否小于的布爾值。為了比較isLessThan的調(diào)用對象與date的大小,需要依次比較year、month、day三個整數(shù),由于date的year、month、day都是私有成員,所以不能在islessThan中直接使用date的私有成員,而是應(yīng)該使用date的共有成員函數(shù)來返回這些值,再將本身的成員與返回值比較,同時,為了比較時間大小,應(yīng)該首先將year進(jìn)行比較,接著是month,最后是day,并將比較結(jié)果暫存布爾變量less中,最后返回。國家二級C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時有錯,請改正程序中的錯誤,使程序輸出的結(jié)果為:m=-10n=-10p=0q=-10z=A注意:錯誤的語句在//******error******的下面,修改該語句即可。#include<iostream.h>voidmain(){doublem=10;floatn=10;boolp=1;intq=10;charz=’a’;m=-m;//******error******n=~n;//******error******p=-p;//******error******q=~q;z=z-32;cout<<"m="<<m<<endl;cout<<"n="<<n<<endl;cout<<"p="<<p<<endl;cout<<"q="<<q<<endl;cout<<"z="<<z<<endl;return;}標(biāo)準(zhǔn)答案:(1)n=-n;(2)p=!p;(3)q=-q;知識點解析:(1)程序中定義了多個變量,并做了一些基本的運(yùn)算處理。(2)由題目要求的運(yùn)行結(jié)果可知,第1個標(biāo)識下和第3個標(biāo)識下是對變量n和q取反,求。個正數(shù)的相反數(shù)可以通過算數(shù)運(yùn)算符“-”得到,第1個標(biāo)識下和第3個標(biāo)識下應(yīng)分別改為“n=-n;”和“q=-q;”,即只需要通過負(fù)號運(yùn)算就可以實現(xiàn)。(3)從題目要求輸出的結(jié)果來分析,第2標(biāo)識下是對邏輯變量p取反,對一個邏輯變量求反應(yīng)該用取反運(yùn)算符“!”,第2個標(biāo)識下應(yīng)改為“p=!p”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,補(bǔ)充空出的代碼。程序的功能是尋找1~500以內(nèi)的親和數(shù)并顯示出來,函數(shù)amicableNum(intm,intn)判定兩個數(shù)是否是親和數(shù)。親和數(shù)的定義為:兩個數(shù)m和n,如果n的所有因子之和(因子除掉自身)等于m,且m的所有因子等于n,則m、n是互為親和數(shù)。注意:不能修改程序的其他部分,只能補(bǔ)充amicableNum(intm,intn)函數(shù)。#include<iostream.h>intamicableNum(intn){intsum=0;for(inti=1;i<n;i++){if(n%i==0){sum+=i;}}returnsum;}boolamicableNum(intm,intn){}voidmain(){cout<<"1~500以內(nèi)的親和數(shù)有:"<<endl;for(inti=1;i<500;i++){for(intj=i+1;j<500;j++){if(i!=j){if(amicableNum(i,j)==1){cout<<i<<’’<<j<<endl;}}}}return;}標(biāo)準(zhǔn)答案:if(amicableNUm(m)==n&&amicableNum(n)==m)return1;return0;知識點解析:(1)程序中定義了兩個amicableNum()函數(shù),由于參數(shù)個數(shù)不同重載了amicableNum()函數(shù),函數(shù)amicableNum(intn)返回n的因子和,而函數(shù)amicableNum(intm,intn)則是判斷m和n是不是親和數(shù),兩個函數(shù)功能并不相同。(2)在amicableNum(intm,intn)函數(shù)中,可調(diào)用amicableNum(intn)函數(shù)求m和n的因子和,然后比較兩個因子和,如果兩個因子和相同則返回真,否則返回假。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示矩形的CRect類,但類CRect的定義并不完整。請按要求完成下列操作,將類CRect的定義補(bǔ)充完成。(1)定義私有數(shù)據(jù)成員lefiPoint、topPoint、rightPoint、bottomPoint,分別用于表示矩形左上角及右下角的點的坐標(biāo),它們都是double型的數(shù)據(jù)。請在注釋//********1********之后添加適當(dāng)?shù)恼Z句。(2)完成默認(rèn)構(gòu)造函數(shù)CRect的定義,指定缺省實參為0,都是double型的數(shù)據(jù)。請在注釋//********2********之后添加適當(dāng)?shù)恼Z句。(3)定義函數(shù)體為空的析構(gòu)函數(shù)。請在注釋//********3********之后添加適當(dāng)?shù)恼Z句。(4)在main()函數(shù)中定義CRect類的實例rect2,并把rectl的值賦給rect2。請在注釋//********4********之后添加適當(dāng)?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。#include<iostream.h>classCRect{private://********1********public://********2********//********3********voidSetPoints(double,double,double,double);voidSetLeftPoint(doublem){leftPoint=m;}voidSetRightpoint(doublem){rightPoint=m;}voidSetToppoint(doublem){topPoint=m;}voidSetBottomPoint(doublem){bottomPoint=m;}voidDisplay();};CRect::CRect(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=r;bottomPoint=b;}voidCRect::SetPoints(double1,doublet,doubler,doubleb){leftPoint=1;topPoint=t;rightPoint=r;bottomPoint=b;}voidCRect::Display(){cout<<"left-toppointis("<<leftPoint<<","<<topPoint<<")"<<’\n’;cout<<"right-bottompointis("<<rightPoint<<","<<bottomPoint(<")"<<’\n’;}voidmain(){CRectrect0;rect0.Display();rect0.SetPoints(20,20.6,30,40);rect0.Display();CRectrectl(0,0,150,150);rectl.SetTopPoint(10.5);rectl.SetLeftPoint(10.5);//********4********rect2.Display();}標(biāo)準(zhǔn)答案:(1)添加語句:doubleleftPoint,topPoint,rightpoint,bottomPoint;(2)添加語句:CRect(doubleleftPoint=0,doubletopPoint=0,doublerightPoint=0,doublebottomPoint=0);(3)添加語句:~CRect(){};(4)添加語句:CRectrect2(rect1);知識點解析:(1)第1個標(biāo)識下完成私有數(shù)據(jù)成員lefiPoint、topPoint、rightPoint、bottomPoint的定義,均為double型的變量,故第1個標(biāo)識下應(yīng)添加“doubleleftPoint,topPoint,rightPoint,bottomPoint;”。(2)構(gòu)造函數(shù)完成成員變量的初始化,類CRect的默認(rèn)構(gòu)造函數(shù)并初始化double型私有數(shù)據(jù)成員leftPoint、topPoint、rightPoint、bottomPoint為0,故第2個標(biāo)識下應(yīng)添加“CRect(doublelettPoint=0,doubletopPoint=0,doublerightPoint=0,doublebottomPoint=0);”。(3)析構(gòu)函數(shù)名和類名一致,并在前面加“~”以和構(gòu)造函數(shù)區(qū)別,該析構(gòu)函數(shù)體為空,故第3個標(biāo)識下應(yīng)添加“~CRect(){};”,雖然該函數(shù)體為空,但是“{}”必須保留。(4)主函數(shù)中類CRect的對象rect2是通過復(fù)制構(gòu)造函數(shù)將rect1的值賦值給它實現(xiàn)初始化的,而rect1的初始化直接調(diào)用自定義構(gòu)造函數(shù),第4個標(biāo)識下應(yīng)添加“CRectrect2(rect1);”。國家二級C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,該程序運(yùn)行時有錯,請改正其中的錯誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:sizeof(str1)=5sizeof(str2)=10sizeoffstr3)=1注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//********error********的下面。(1)不能刪除assert()語句;(2)只能修改后面的數(shù)字。提示:assert()函數(shù)如果為假,則會產(chǎn)生一個中斷異常。#include#includeVoidmain(){char*str1="abc";//********error********assert(sizeof(str1)==3);cout<<"sizeof(str1)=5"<標(biāo)準(zhǔn)答案:(1)assert(sizeof(str1)==4);(2)assert(Sizeof(str2)==10);(3)assert(Sizeof(str3)==1);知識點解析:(1)assert()函數(shù)如果為假,則會產(chǎn)生一個中斷異常。所以要讓它正常執(zhí)行輸出結(jié)果,那么assert()函數(shù)就要為真,才不會產(chǎn)生中斷異常?!癮ssen(sizeof(str1)==3);”語句中“sizeof(str1)==3”為假,這個會使程序產(chǎn)生異常,不能正常執(zhí)行。因為str1的值為abc但是它還有一個尾符,所以它的長度應(yīng)該是4,而不是3,所以第1個標(biāo)識下修改為“assert(sizeof(str1)==4);”。(2)同(1),str2[10]說明,str2的空間為10,第2個標(biāo)識下修改為“assert(sizeof(str2)==10);”。(3)同(1),charstr3=23;語句說明23是字符,占空間為1,所以修改為“assert(sizeof(str3)==1);”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,補(bǔ)充空出的代碼。函數(shù)IsPalindromes(cha*string)實現(xiàn)的功能是判定給定的字符串是否構(gòu)成回文字符串,如果是則返回1,否則返回0。如:1234554321或者1234321都認(rèn)為是回文字符串。如果串為空或一個字母時,均認(rèn)為是回文字符串。注意:不能修改程序的其他部分,只能補(bǔ)充IsPalindromes()函數(shù)。#include#defimeMAXLEN1024boolIsPalindromes(char*string){}Voidmain(){charstr[MAXLEN];cout<<"請輸入一行文字"<標(biāo)準(zhǔn)答案:intlen=0:for(;string[len]!=NULL;len++)//獲取字符串的長度;len--;//下標(biāo)從0開始到len-1for(inti=0;i知識點解析:(1)由于字符串的長度是未知的,先利用循環(huán)求出字符串的長度,循環(huán)變量從0開始,直到數(shù)組的結(jié)束,string[len]==NUL為循環(huán)結(jié)束條件,如此便得到了數(shù)組的長度len。(2)知道長度后就可以判斷對稱位置的元素是否相同,比如第一個元素和最后一個元素,第二個元素和倒數(shù)第二個元素,如此比較下去直到到了最中間的元素為止。(3)可以利用循環(huán)來比較是否對稱,設(shè)置另一個循環(huán)變量i,i從0開始表示從數(shù)組的頭開始讀數(shù),len從數(shù)組的尾部開始讀數(shù),如果string[i]!=string[len],則跳出循環(huán)返回0,如果循環(huán)結(jié)束還沒發(fā)現(xiàn)不同則返回1。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp,其中定義了用于表示雇員的Employee類,但類Employee的定義并不完整。請按要求完成下列操作,將類CEmployee的定義補(bǔ)充完成。(1)定義私有數(shù)據(jù)成員name、street、city、zipcode和age分別用于表示姓名、街道、城市、郵編、年齡,除年齡是整型外其余都是char型的數(shù)據(jù)。請在注釋//********1********之后添加適當(dāng)?shù)恼Z句。(2)完成默認(rèn)構(gòu)造函數(shù)CEmployee的定義,使其把參數(shù)傳遞給私有數(shù)據(jù)成員name、street、city、zipcode和age。請在注釋//********2********之后添加適當(dāng)?shù)恼Z句。(3)完成成員函數(shù)alterName(char*newName)的定義。請在注釋//********3********之后添加適當(dāng)?shù)恼Z句。(4)完成成員函數(shù)IsEqual(char*ename)的定義,實現(xiàn)當(dāng)name相等時返回真,否則為假的功能,請在注釋//********4********之后添加適當(dāng)?shù)恼Z句。注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。#include#include#defiReMAXLEN20classCEmployee{private://********1********intage;public:CEmployee(char*newName,char*newstreet,char*newCt,char*newZp,intnewAge);voidalterName(char*newName);Voiddisplay();boolIsEqual(char*ename);};CEmployee::CEmployee(char*newName,char*newstreet,char*newCt,char*newZp,intnewAge){//********2********age=newAge;}voidCEmployee::alterName(char*newName){//********3********}boolCEmployee::IsEqual(char*ename){//********4********}voidCEmployee::display(){cout<<name<<""<<street<<"";cout<<city<<""<<zipcode<<""<標(biāo)準(zhǔn)答案:(1)添加語句:charname[MAXLEN],street[MAXLEN],city[MAXLEN],Zipcode[MAXLEN];(2)添加語句:strcpy(name,newName);strcpy(street,newstreet);strcpy(city,newCt);strcpy(zipcode,newZp);(3)添加語句:strcpy(name,newName);(4)添加語句:returnstrcmp(name,ename)==0;知識點解析:(1)第1個標(biāo)識下要求補(bǔ)充類CEmployee的私有數(shù)據(jù)成員name、street、city、zipcode和age的定義,分別用于表示姓名、街道、城市、郵編、年齡,除年齡是整型外其余都是char型的數(shù)據(jù),由主函數(shù)內(nèi)的對象數(shù)組可知,name、street、city、zipcode均為字符數(shù)組,故第1個標(biāo)識下應(yīng)添加“charname[MAXLEN],street[MAXLEN],city[MAXLEN],zipcode[MAXLEN];”。(2)構(gòu)造函數(shù)完成成員變量的初始化,這里需要給name、street、city、zipcode賦初值,可利用字符串拷貝函數(shù)將參數(shù)字符串拷貝到成員變量中,第2個標(biāo)識下應(yīng)添加“strcpy(name,newName);strcpy(street,newstreet);strcpy(city,newCt);strcpy(zipcode,newZp);”。(3)函數(shù)alterName(char*newName)是改變成員變量name的值,即將參數(shù)拷貝給name,可利用字符串拷貝函數(shù)strcpy()完成拷貝任務(wù),故第3個標(biāo)識下應(yīng)添加“strcpy(name,newName);”。(4)IsEqual(char*ename)~數(shù)是比較name成員變量和參數(shù)newName是否相同,可使用字符串比較函數(shù)strcmp0,第4個標(biāo)識下應(yīng)添加“returnstrcmp(name,ename)==0;”。國家二級C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modil.cpp,該程序運(yùn)行時有錯誤,請改正程序中的錯誤,使得程序輸出:number1=4.8number2=93.6number3=0.9PRODUCT=404.352注意:錯誤的語句在//******error******的下面。修改該語句即可。其他的語句不能修改。#includeusingnamespacestd;intmain(){doublenumber1=4.8,number2=93.6,number3=0.9;//******error******Droduct=number1*number2*number3;//******error******cout<<"number1="<標(biāo)準(zhǔn)答案:(1)doubleproduct=number1*number2*number3;(2)cout<<"number1:"<二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼,完成空出部分的程序。函數(shù)func(intA[NUM],intn)實現(xiàn)的功能是將數(shù)組的內(nèi)容進(jìn)行一次重新排序。排序的方法是:給定11,則下標(biāo)為i的數(shù)字與下標(biāo)為n-i的數(shù)字交換。從0開始,交換N/2次,則最后的內(nèi)容為排序后的結(jié)果。如果:A[8]={1,2,3,4,5,6,7,8},n=6,則結(jié)果:A[8]={7,6,5,4,3,2,1,8}。注意:不能修改其他代碼。#include#defineNUM8voidfunc(intA[NUM],intn){}intmain(){intA[NUM]={1,2,3,4,5,6,7,8);func(A,6);for(inti=0;i標(biāo)準(zhǔn)答案:for(inti=0;i知識點解析:(1)用循環(huán)來實現(xiàn)該過程,題目要求從0開始,交換N/2次,因此循環(huán)變量i的范圍從0變化到N/2。(2)下標(biāo)為0的元素與下標(biāo)為n的元素交換,下標(biāo)為1的元素與下標(biāo)為n-1的元素交換,依此類推,在循環(huán)體內(nèi),用一個臨時變量記錄第一個元素,然后將第二個元素賦值給第一個元素,臨時變量值賦給第二個元素,如此完成兩個元素的交換。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。其中定義的類并不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。完成以下功能:(1)聲明類objA1,請在注釋//********1********后添加適當(dāng)?shù)恼Z句。(2)為類objA0增加友元函數(shù)func(),請在注釋//********2********后添加適當(dāng)?shù)恼Z句。(3)為類objA1增加友元函數(shù)func(),請在注釋//********3********后添加適當(dāng)?shù)恼Z句。(4)函數(shù)func()返回objA1對象中的變量和objA0的靜態(tài)變量的乘積,請在注釋//********4********后添加適當(dāng)?shù)恼Z句。注意:增加代碼,或者修改代碼的位置已經(jīng)用符號表示出來。請不要修改其他的程序代碼。#include//********1********classobjA0{private:staticintm_A0;//********2********};intobjA0::m_A0=10;classobjA1{private:intm_A1;//********3********public:objA1(inti){m_A1=i;}};intfunc(objA1&obj){//********4********}intmain(){objA1obj0(10);cout<標(biāo)準(zhǔn)答案:(1)添加語句:classobjA1;(2)添加語句:friendintfunc(objA1&obj);(3)添加語句:friendintfunc(objA1&obj);(4)添加語句:returnobj.m_A1*objA0::m__A0;知識點解析:(1)類的聲明格式為:“class<類名>;”,因此第1個標(biāo)識下應(yīng)添加“classobjA1;”。(2)按照友元的定義格式,友元函數(shù)是在類聲明中由關(guān)鍵字friend修飾的非成員函數(shù),func函數(shù)在類外部給出了具體的實現(xiàn)形式,即“intfunc(objA1&obj)”,因此第2個標(biāo)識下應(yīng)添加“friendintfunc(objA1&obj);”,這里參數(shù)是obiA1類對象obj。(3)第3個標(biāo)識下和題目2要求一樣,均是聲明友元函數(shù),因此第2標(biāo)識下應(yīng)添加“friendintfunc(objA1&obj);”。(4)通過參數(shù)obj對象可以直接訪問obj.m_A1,objA0的靜態(tài)變量m_A0是所有對象的共享成員,其訪問形式為:objA0::m_A0,因此第4個標(biāo)識下應(yīng)添加“returnobj.m_A1*objA0::m_A0;”。國家二級C++機(jī)試(操作題)模擬試卷第7套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi1.cpp,但該程序運(yùn)行時有錯,請改正程序中的錯誤,使程序輸出的結(jié)果為:Number=8注意:錯誤的語句在//********error********的下面,修改該語句即可。#includeclassCMyClass{public://********error********void&Get(){return&Number;}VoidSet(intm){Number=m;}voiddisplay(){cout<<"Number="<標(biāo)準(zhǔn)答案:(1)void*Get()(2)添加語句:CMyClasst;(3)P=(int*)t.Get();知識點解析:(1)Get()的返回的是“return&Number;”,即返回Number的地址,主函數(shù)中P為整型指針,但是“P=t.Get();”有錯誤,因為Get()函數(shù)返回的不是整型指針,而應(yīng)該是空指針(void),空指針可強(qiáng)制類型轉(zhuǎn)換成其他類型的指針,第1個標(biāo)識下應(yīng)改為“void*Get()”。(2)由于Get()函數(shù)返回空指針(void),要使P指向Get()函數(shù)的返回值,必須做強(qiáng)制類型轉(zhuǎn)化,即第3個標(biāo)識下應(yīng)改為“P=(int*)t.Get():”。(3)變量t可以使用Get()函數(shù),說明t為CMyClass類對象。即第2個標(biāo)識下應(yīng)添加對象定義,故第2個標(biāo)識下添加“CMyclasst;”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生牛文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說明和代碼。函數(shù)num(char*str)實現(xiàn)返回字符串中非數(shù)字的個數(shù)。例如:abc123abc45返回輸出:6將函數(shù)num()%b充完整。注意:請勿改動主函數(shù)。#includeintnum(char*str){}intmain(){charstr[1024];cout<<"pleaseinputastring:"<標(biāo)準(zhǔn)答案:intnlamber=0:for(inti=0;str[i]!=0;i++)if(str[i]>’9’||str[i]<’0’)//非數(shù)字字符number++;returnnumber;知識點解析:(1)利用循環(huán)搜索數(shù)組str中的元素,循環(huán)變量從0開始,直到str[i]=0(到了字符數(shù)組的尾),不斷地讀取str中讀取元素。(2)每讀到一個元素判斷是否是非數(shù)字字符,即滿足條件“str[i]>’9’‖str[i]<’0’”的字符為非數(shù)字字符,非數(shù)字字符個數(shù)加1,循環(huán)結(jié)束就得到了非數(shù)字字符的個數(shù)。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、用VC6打開考生文件夾下的源程序文件modi3.cpp,這個程序完成輸出到屏幕一些特定的信息,但工程有錯誤或者不完整,請完成以下功能:(1)初始化mNurn2的值為i,請在注釋//********1********后添加適當(dāng)?shù)恼Z句。(2)補(bǔ)充全局函數(shù)fun()使之能夠調(diào)用類TestClass的成員變量,請在注釋//********2********后添加適當(dāng)?shù)恼Z句。(3)初始化靜態(tài)變量,請在注釋//********3********后添加適當(dāng)?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){mNum1=i;mNum3+=i;}voidPrint(){cout<<"mNum1="<標(biāo)準(zhǔn)答案:(1)添加語句:TestClass(inti,intj):mNum2(j)(2)添加語句:friendvoidfun();(3)添加語句:intTestClass::mNum3=0;(4)將“Num.Add();”補(bǔ)充完整為:Num.Add(5);知識點解析:(1)根據(jù)“constintmNum2;”語句知道m(xù)Num2為類TestClass中的私有數(shù)據(jù),另外,C++定義構(gòu)造函數(shù)的初始化數(shù)據(jù)成員的方法中可以在原有函數(shù)末尾加一個冒號,然后列出參數(shù)的初始化表實現(xiàn),即“TestClass(inti,intj):rnNum2(j)”。(2)在C++中,如果在本類以外的其他地方定義了一個函數(shù),在類體中是用friend對該函數(shù)進(jìn)行聲明的,此函數(shù)稱為本類的友元函數(shù),并且能夠調(diào)用本類中的成員變量。程序中fun()在類TestClass以外的地方定義的,為了實現(xiàn)其對類TestClass中成員變量的調(diào)用,在類TestClass中補(bǔ)全“friendvoidfun();”,即聲明fun()為類TestClass的友元函數(shù)。(3)在C++中,初始化類中數(shù)據(jù)成員的格式可以是“<類型>類名class::參數(shù)=”,其中<類型>為要初始化參數(shù)的類型,“::”為作用域符號,說明參數(shù)是class中的參數(shù),所以這里補(bǔ)全“intTestClass::mNum3=0;”。(4)函數(shù)fun()中“Num.Add();”語句應(yīng)該是調(diào)用類“TestClass”中的成員函數(shù)“voidAdd(inti)”。其定義中存在參數(shù)inti,所以注釋下修改的語句缺少參數(shù)。主函數(shù)首先調(diào)用“Num.Print();”,即實現(xiàn)題目中輸出的前三條語句,而“funn();”語句實現(xiàn)后面三條語句的輸出,即“mNum3=7”才是調(diào)用Num.Add的輸出結(jié)果,即“mNum3+=i:”的計算結(jié)果?!癟estClassNum(1,2);”中將i的值初始化為1,“mNum3”的值在上一次“Num.Print();”調(diào)用中為1,如果計算結(jié)果為7,那么Add(inti)中i的初始化值為5,即“Num.Add(5);”。國家二級C++機(jī)試(操作題)模擬試卷第8套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi.cpp,該程序運(yùn)行時有錯,請改正其中錯誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:CTest注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//********error********的下面。1#include2voidmain()3{4//********error********5charc="c";6cout<標(biāo)準(zhǔn)答案:(1)charc=’c’;(2)intb=1024;(3)b+=1024;知識點解析:本題的功能是輸出字符c和字符串Test。因為本題程序中不存在復(fù)雜的結(jié)構(gòu),解題思路,從已定源程序的main主函數(shù)依次處理錯誤提示下的語句即可。[解題思路](1)打開modil.cpp,調(diào)試程序,顯示錯誤提示為第一標(biāo)識下“odi1.cpp(5):errorC2440:’initializing’:cannotconvertfrom’char[2]’tto’char’”。變量c的類型為字符型,字符型值應(yīng)該是用單引號,雙引號是字符串型。所以這里修改為“charc=’c’;”。(2)根據(jù)第3個標(biāo)識下的語句知道,b的值加上1024,然后判斷b的值是否為2048,所以這里b的類型應(yīng)該是整型,而不是字符型,所以修改為““int=1024;”。(3)顯示第3個標(biāo)識下的語句“b+=1024;”的錯誤提示。modil.cpp(10):errorC2018:unknowncharacter’0xa3’,因為語句中的“;”為中文輸入法下的輸入,并不是英文下的“:”,所以修改為“b+=1024;”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。請完成函數(shù)fun(char*s),該函數(shù)完成以下功能:(1)把S中的大寫字母轉(zhuǎn)換成小寫字母,把其中的小寫字母轉(zhuǎn)換成大寫字母。并且在函數(shù)中調(diào)用寫函數(shù)WriteFile()將結(jié)果輸出到modi2.txt文件中。例如:s="helloTEST",則結(jié)果為:s="HELLOtest"(2)完成函數(shù)WriteFile(char*s),把字符串輸入文件中。提示:打開文件使用的第二參數(shù)為ios_base::binary|ios_base::app。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。1#include2#include3#include4USingnamespacestd;5voidWriteFile(char*S)6{78}9voidfun(char*S)10{1112}13VoidClearFile()14{15ofstreamoutl;16outl.open("modi2.txt");17outl.Close();18}19intmein()20{21ClearFile();22chars[1024];23cout<<"pleaseinputastring:"<標(biāo)準(zhǔn)答案:(1)voidWriteFile(char*S)中的命令語句:1ofStreamoutl;2outl.open("modi2.txt",ios_base::binaryIios—base::app);//打開文件modi23outl<=’A’&&s[i]<=’Z’)//如果是大寫字符,轉(zhuǎn)換為小寫字符4{5S[i]=s[i]-’A’+’a’;//-s[i]-’A’+’a’等于字符s[i]+32’6}7Elseif(s[i]>=’a’&&s[i]<=’z’)//如果是小寫字符,轉(zhuǎn)換為大寫字符8{9S[i]=S[i]-’a’+’A’;//S[i]-’a’+’A’’等于字符S[i]-3210}11}12WriteFile(S);知識點解析:(1)本題要求實現(xiàn)兩個函數(shù)的功能,其中WriteFile(char*s)實現(xiàn)把字符串輸入到文件中;fun(char*s)函數(shù)實現(xiàn)大寫字母轉(zhuǎn)換成小寫字母,把其中的小寫字母轉(zhuǎn)換成大寫字母。其中大小寫字母之間的ASCII碼差為32。(2)從已給部分源程序的main主函數(shù)開始入手,首先實現(xiàn)WriteFile函數(shù),然后再實現(xiàn)fun函數(shù),并在其中調(diào)用WriteFile函數(shù)。[解題思路](1)在WriteFile(char*s)函數(shù)中,利用標(biāo)準(zhǔn)流ofstream實現(xiàn)字符串寫入文件modi2.txt。(2)在fun函數(shù)中,利用for循環(huán)逐個判斷字符是大寫還是小寫。(3)如果是大寫,那么加上32實現(xiàn)大寫轉(zhuǎn)換為小寫。否則,就減去32,實現(xiàn)小寫到大寫的轉(zhuǎn)換。最后調(diào)用前面實現(xiàn)的WriteFile函數(shù),將字符串寫入文件。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開考生文件夾下的源程序文件modi3.cpp。學(xué)校教務(wù)處要為任課老師開發(fā)一個學(xué)生管理系統(tǒng),需求如下:(1)學(xué)生的信息是要受到嚴(yán)密保護(hù)和限制的,包括姓名、五個英文字符的學(xué)號,以及精確到小數(shù)點后一位的一科成績,只有任課老師可以修改,如果學(xué)生升學(xué)了,比如由本科升到研究生,原來的信息還有效,而只需添加研究生的必要信息,不過現(xiàn)在不必馬上實現(xiàn),但應(yīng)當(dāng)有所考慮。(2)學(xué)生的所有信息可以查看,但也只有學(xué)生自己才有這個權(quán)利。(3)學(xué)生的信息可以從文件中讀取來構(gòu)造信息庫,需要把信息輸出到屏幕以便核實,但這需要任課老師來完成。(4)老師能提供所教學(xué)生的完整信息列表,同時可按成績高低排序。(5)為了便于學(xué)校評定獎學(xué)金,需要單獨查找成績最高的同學(xué)(一般不采用把成績單全部排列后來選取,可能這比較耗費時間,雖然要求不太合理,但要按用戶的需求操作,同時需要指出的是,如果成績最高者有數(shù)名,需要一一列出)。(6)由于學(xué)校的機(jī)器比較老,內(nèi)存嚴(yán)重不足,每個老師帶的學(xué)生數(shù)不一樣,但也不會超過50人。以上功能的程序框架已經(jīng)形成,考生需要按照需求來逐個實現(xiàn)。(1)請在注釋//********1********之后添加適當(dāng)?shù)恼Z句,以便實現(xiàn)功能需求(1)。(2)請在注釋//********2********處添加適當(dāng)?shù)恼Z句,成績單排序功能。(3)請在注釋//********3********處實現(xiàn)查找成績最高學(xué)生名單。無需修改main()主函數(shù),當(dāng)?shù)玫较旅娴慕Y(jié)果,該系統(tǒng)可能被采用。輸入的學(xué)生信息:姓名學(xué)號成績周華000178.5李強(qiáng)000298劉星000389賀蘭000478周紅000576.5趙邦000685高俊000798排序后的學(xué)生信息:姓名學(xué)號成績李強(qiáng)000298高俊000798劉星000389趙邦000685周華000178.5賀蘭000478周紅000576.5查詢成績最高的學(xué)生信息:高俊000798李強(qiáng)000298注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。1#include2#5nc]11de3#include4#defineNMAX505C1assTeacher;6C1assStudent7{8public:9Student(char*name="未知",char*number="00000",doublemark=0.0)10{.11intlen=strlen(name);12mname=newchar[1en+1];13strcpy(m—name,name);14strcpy(m_number,number);15mmark=mark;16}17~Student()18{19delete[]mname;20}21voidDisplayMsg()22{23cout<>name;63in>>number;64in>>mark;65m_count++;66m_pstu[i]=newStudent(name,number,mark);67cout<m-mark>m_pstu[index]->m_mark)79index=j;80}81//********2********82if()83{84Student*ps=m_pStu[i];85m_pStu[i]=m_pstu[index];86m_pstu[index]=ps;87}88}89}90voidTeacher::Display()91{92cout<<"姓名\t"<<"學(xué)號\t"<<"成績\t"<DisplayMsg();96}97}98intTeacher::BestScore(Student*pS[])99{100intindex=0;101intcount=1;102//********3********103104for(intJ=1;Jm_mark>m_pStu[index]->m_mark)107{108count=1;109index=j;110ps[count++]=m_pstu[index];111}112elseif(m_pStu[j卜>m_mark==mpStu[index]->mmark)113{114index=j;115pS[count++]=m_pstu[index];116}117}118returncount;119}120voidmain()121{122TeacherTeacher;123Student*pStudent[NMAX];124cout<<"輸入的學(xué)生信息."<DisplayMsg();134}135}標(biāo)準(zhǔn)答案:(1)添加語句:friendclassrreacher;(2)將“if()”補(bǔ)充完整為:if(index!=j)(3)添加語句:pS[0]=mpStu[0];知識點解析:類Student含有三個成員變量:姓名、五個英文字符的學(xué)號和精確到小數(shù)點后一位的一科成績,類Teacher含有Student對象數(shù)組的指針Student*m_pStu[NMAX]、m_average和m_count三個成員變量,類Teacher有多個成員函數(shù),完成學(xué)生數(shù)據(jù)輸入、排序、查找最好成績和打印等功能。[解題思路](1)學(xué)生的信息受到嚴(yán)密保護(hù)和限制,任課老師可以修改學(xué)生數(shù)據(jù),比如本科升到研究需要修改學(xué)號等信息,因此老師類(Teacher)可以訪問學(xué)生類(Student),故老師類是學(xué)生類友元類,故第1個標(biāo)識下應(yīng)添加“friendclassTeacher;”。(2)SortScore()成員函數(shù)是實現(xiàn)按成績高低的排序,函數(shù)結(jié)構(gòu)是二重循環(huán),采用的是選擇法排序,每次在內(nèi)層循環(huán)中尋找成績最高的元素的下標(biāo),如果找到的最高成績的元素的下標(biāo)和現(xiàn)在的位置(外層循環(huán)變量i+l的值)不同則兩者交換,故第2個標(biāo)識下的判斷條件為“if(index!=j)”。(3)BestScore(Student*pS[])實現(xiàn)查找成績最高學(xué)生名單,即利用循環(huán)查找數(shù)組中的每個元素的成績值,先假設(shè)第一個元素的成績最高,然后再循環(huán)中逐個比較,如果有成績更高的,那么將更高的成績保存下來,搜索整個數(shù)組就能找到成績最高的學(xué)生,即第3標(biāo)識下應(yīng)添加“pS[0]=mpStu[0];”。國家二級C++機(jī)試(操作題)模擬試卷第9套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開考生文件夾下的源程序文件modi.cpp,該程序運(yùn)行時有錯,請改正其中錯誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:cTest注意:不要改動main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯誤的語句在∥********error********的下面。#includevoidmain(){∥********error********charC=“C”;cout<標(biāo)準(zhǔn)答案:(1)charc=‘c’;(2)intb=1024;(3)b+=1024;知識點解析:本題的功能是輸出字符c和字符串。Test。因為本題程序中不存在復(fù)雜的結(jié)構(gòu),解題思路,從已定源程序的main主函數(shù)依次處理錯誤提示下的語句即可。解題思路(1)打開modil.cpp,調(diào)試程序,顯示錯誤提示為第一標(biāo)識下“odi1.cpp(5):errorC2440:‘initializing’:cannotconveafrom’char[2]‘to’char”。變量c的類型為字符型,字符型值應(yīng)該是用單引號,雙引號是字符串型。所以這里修改為“charc=‘c’:”。(2)根據(jù)第3個標(biāo)識下的語句知道,b的值加上1024,然后判斷b的值是否為2048,所以這里b的類型應(yīng)該是整型,而不是字符型,所以修改為“intb=1024;”。(3)顯示第3個標(biāo)識下的語句“b+=1024;”的錯誤提示modil.cpp(10):errorC2018:unknowncharacter’0xaY,因為語句中的“;”為中文輸入法下的輸入,并不是英文下的“;”,所以修改為“b+=1024;”。二、簡單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開考生文件夾下的源程序文件modi2.cpp。完成函數(shù)fun(char*str,char*s)空出部分。函數(shù)fun(char*str,char*s)的功能是:將在字符串str中下標(biāo)為偶數(shù)位置上的字符,緊隨其后重復(fù)出現(xiàn)一次,放在一個新串S中,S中字

溫馨提示

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

評論

0/150

提交評論