國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共27題)_第1頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共27題)_第2頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共27題)_第3頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共27題)_第4頁(yè)
國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共27題)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷1(共9套)(共27題)國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第1套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj1,此工程中包含了類(lèi)Pets(“寵物”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:Name:sonnyType:dogName:JohnType:dogName:DannyType:catName:JohnType:dog注意:只修改每個(gè)“//ERROR****found****”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;enumPetstype{dog,cat,bird,fish};classPets{private:char*name;Pets_typetype;public:Pets,constchar*name="sonny",Petstypetype=dog);Pets&operator=(constPets&s);~Pets();voidshow()conSt;};Pets::Pets(constchar*name,Pets_typetype)//構(gòu)造函數(shù){this->name=newchar[strlen(name)+1];strcpy(this->name,name);//ERROR*******found*******type=type;}Pets::~Pets()//析構(gòu)函數(shù),釋放name所指向的字符串{//ERROR*******found*******name=’/0’;}Pets&Pets::operator=(constPets&S){if(&s==this)//確保不要向自身賦值return*this;delete[]name;name=newchar[strlen(s.name)+1];//ERROR*******found*******strcpy(this->name,name);type=s.type;return*this;}voidPets::show()const{cout<<"Name:"<<name<<"Type:";switch(type){casedog:cout<<"dog";break;casecat:cout<<"cat";break;casebird:cout<<"bird";break;casefish:cout<<"fish";break;}cout<<endl;}intmain(){Petsmypet1,mypet2("John",dog);Petsyoupet("Danny",cat);mypet1.show();mypet2.show();youpet.show();youpet:mypet2;youpet.show();return0;}標(biāo)準(zhǔn)答案:(1)this->type=type;(2)delete[]name;(3)strcpy(this->name,s.name);知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,因?yàn)樾螀⒚皖?lèi)的私有成員名稱(chēng)都是type,為了避免混淆,所以規(guī)定類(lèi)的私有成員使用this指針調(diào)用,即:this->type=type;。(2)主要考查考生對(duì)析構(gòu)函數(shù)的掌握情況,題目中要求,釋放name所指向的字符串。要釋放name指針用delete語(yǔ)句,即delete[]name;。(3)主要考查考生對(duì)strcpy函數(shù)的掌握情況,Strcpy函數(shù)的形參為兩個(gè)字符串,而naille為指向字符串的指針,因此使用語(yǔ)句:strcpy(this_>name,s.name);。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj2,此工程中包含一個(gè)程序文件main.cpp,其中有“班級(jí)”類(lèi)Class和“學(xué)生”類(lèi)Student的定義,還有主函數(shù)main的定義。在主函數(shù)中定義了兩個(gè)“學(xué)生”對(duì)象,他們屬于同一班級(jí)。程序展示,當(dāng)該班級(jí)換教室后,這兩個(gè)人的教室也同時(shí)得到改變。請(qǐng)?jiān)跈M線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,然后刪除橫線(xiàn),以實(shí)現(xiàn)上述類(lèi)定義。此程序的正確輸出結(jié)果應(yīng)為:改換教室前:學(xué)號(hào):0789姓名:張三班級(jí):062113教室:521學(xué)號(hào):0513姓名:李四班級(jí):062113教室:521改換教室后:學(xué)號(hào):0789姓名:張三班級(jí):062113教室:311學(xué)號(hào):0513姓名:李四班級(jí):062113教室:311注意:只能在橫線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容。#include<iostream>usingnamespacestd;classClasS{//“班級(jí)”類(lèi)public:ClasS(constchar*id,constchar*room){strcpy(class_id,id);//*******found*******_______}constchar*getClassID()const{returnclass_id;}//返回班號(hào)//*******found*******constchar*getClasSroom()const{_______}//返回所在教室房號(hào)voidchangeRoomTo(constchar*new_room){//改換到另一個(gè)指定房號(hào)的教室strcpy(classroom,new_room);}private:charclass_id[20];//班號(hào)charclassroom[20];//所在教室房號(hào)},classStudent{//“學(xué)生”類(lèi)charmy_id[10];//學(xué)號(hào)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;}ClassgetClass()const{returnmy_class;}};voidshowStudent(Student*stu){cout<<"學(xué)號(hào):"<<stu->getID()<<"";cout<<"姓名:"<<stu->getName()<<"";cout<<"班級(jí):"<<stu->getClass().getClasSID()<<"";cout<<"教室:"<<stu->getClass().getClassroom()<<endl;}intmain(){Classcla("062113","521");StudentZhang("0789","張三",cla),Li("0513","李四",cla);cout<<"改換教室前:"<<endl;showStudent(&Zhang);showStudent(&Li);//062113班的教室由521改換到311//*******found*******cout<<"改換教室后:"<<endl;showStudent(&Zhang);showStudent(&Li);return0;}標(biāo)準(zhǔn)答案:(1)strcpy(classroom,room);(2)returnclassroom;(3)my_class(the_class)(4)cla.changeRoomTo("311");知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)strcpy函數(shù)的掌握情況,根據(jù)上一條語(yǔ)句:strcpy(class_id,id);可知,這條語(yǔ)句要復(fù)制字符串room,因此使用strcpy函數(shù)復(fù)制,即strcpyr(classroom,room);。(2)主要考查考生對(duì)函數(shù)返回值的掌握情況,根據(jù)函數(shù)要求:返回所在教室房號(hào)及函數(shù)要求返回的類(lèi)型為constchar*,可以得出這里直接使用return語(yǔ)句返回classroom即可。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握情況,先看函數(shù)體中:strepy(my_id,the_id);strcpy(my_name,the_name);可知只有參數(shù)Class&the_class未使用,因此在這里使用成員列表初始化給my_class賦初始值。(4)主要考查考生對(duì)成員函數(shù)調(diào)用的掌握,程序要求062113班的教室由521改換到311。在類(lèi)Class中已經(jīng)定義了函數(shù):voidchangeRoomTo(eonstchar*newroom),因此直接調(diào)用函數(shù)changeRoomTo即可。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj3,此工程中包含一個(gè)源程序文件proj3.cpp,其中定義了用于表示平面坐標(biāo)系中的點(diǎn)的類(lèi)MyPoint和表示矩形的類(lèi)MyRectangle;程序應(yīng)當(dāng)顯示:(0,2)(2,2)(2,0)(0,0)4但程序中有缺失部分,請(qǐng)按照以下提示,把缺失部分補(bǔ)充完整:(1)在“//**1******found****”的下方是構(gòu)造函數(shù)的定義,它用參數(shù)提供的左上角和右下角的坐標(biāo)對(duì)up_left和down_right進(jìn)行初始化。(2)在“//**2******found****”的下方是成員函數(shù)getDownLeft的定義中的一條語(yǔ)句。函數(shù)getDownLeft返回用MyPoint對(duì)象表示的矩形的左下角。(3)在“//**3******found****”的下方是成員函數(shù)area的定義,它返回矩形的面積。注意:只在指定位置編寫(xiě)適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“****found****”。//proj3.cpp#include<iostream>usingnamespacestd;classMyPoint{//表示平面坐標(biāo)系中的點(diǎn)的類(lèi)doublex;doubley;public:MyPoint(doublex,doubley){this->x=x;this->y=y;}doublegetX()const{returnx;}doublegetY()const{returny;}voidshow()const{cout<<’(’<<x<<’,’<<y<<’)’;}};classMyRectangle{//表示矩形的類(lèi)MyPointup_left;//矩形的左上角頂點(diǎn)MyPointdown_right;//矩形的右下角頂點(diǎn)public:MyRectangle(MyPointupleft,MyPointdownright);MyPointgetUpLeft()const{returnup_left;)//返回左上角坐標(biāo)MyPointgetDownRight()const{returndown_right;}//返回右下角坐標(biāo)MyPointgetUpRight()const;//返回右上角坐標(biāo)MyPointgetD0wnLeft()const;//返回左下角坐標(biāo)doublearea()const;//返回矩形的面積};//**1*********found******MyRectangle::MyRectangle(_______):up_left(p1),down_right(p2){}MyPointMyRectangle::getUpRight()const{returnMyPoint(downright.getX(),up_left.getY());}MyPointMyRectangle::getDownLeft()const{//**2*********found*******returnMyPoint(_______);)//**3*********found*******_______area()conSt{return(getUpLeft().getX()getDownRight().getX())*(getDownRight().getY()-getU-pLeft().getY());)intmsin(){MyRectangler(MyPoint(0,2),MyPoint(2,0));r.getUpLeft().show();r.getUpRight().show();r.getDownRight().show();r.getDownLeft().show();cout<<r.a(chǎn)rea()<<endl;return0;}標(biāo)準(zhǔn)答案:(1)MyPotntp1,MyPotntp2(2)up_left.getx(),down_r4ght.getY()(3)doubleMyRectangle::知識(shí)點(diǎn)解析:(1)考查構(gòu)造函數(shù),構(gòu)造函數(shù)中的參數(shù)要給私有成員賦值,在下句中up_left(p1),down_right(p2){}指出私有成員賦值要使用形參p1和p2,因此這里參數(shù)要定義為MyPointp1,MyPoirItp2。(2)主要考查成員函數(shù)的返回語(yǔ)句,MyPointMyRectangle::getDownLeft()const函數(shù)要求返回一個(gè)左下角的點(diǎn)坐標(biāo),因此使用語(yǔ)句MyPoint(up_left.getX(),down_right.getY());。(3)主要考查成員函數(shù)的定義,在MyRectangle類(lèi)中已經(jīng)聲明doublearea()const,因此此處只要添加doubleMyRectangle::即可。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第2套一、基本操作題(本題共1題,每題1.0分,共1分。)1、使用VC6打開(kāi)考生文件夾下的源程序文件modi1.clap,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使得程序正常運(yùn)行,并使程序輸出的結(jié)果為:TestClass1TestClass2注意:不要改動(dòng)main函數(shù),不能增行或刪行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。1#include<iostream.h>2#include<assert.h>3structTestClass04{5//********error********6virtualvoidfun();7};8classTestClass1:publicTestClass09{10voidfun()11{12cout<<’’TestClass1’’<<end1;13}14};15classTestClass2:publicTestClass016{17voidfun()18{19cout<<’’TestClass2’’<<end1;20}21};22voidmain()23{24TestClass0*p;25TestClass1obj1;26TestClass2obj2;27//********error********28p=*obj1;29p->fun();30//********error********31p=*obj2;32p->fun();33return;34}標(biāo)準(zhǔn)答案:(1)virtualvoidfun()=0;(2)p=&obj1;(3)p=&obj2;知識(shí)點(diǎn)解析:本題程序中的功能為輸出字符串TestClass1和TestClass2。從已定源程序的main主函數(shù)開(kāi)始入手,通過(guò)定義的類(lèi),實(shí)現(xiàn)題目中要求的輸出結(jié)果。(1)如果在基類(lèi)中并不使用這個(gè)虛函數(shù),其返回值也是沒(méi)有意義的,它應(yīng)該被定義為純虛函數(shù)。所以虛函數(shù)fun()應(yīng)該是純虛函數(shù),也就是聲明虛函數(shù)的時(shí)候初始化為0的函數(shù)。即第1個(gè)標(biāo)識(shí)下的“virtualvoidfun()=0;”。(2)第2個(gè)標(biāo)識(shí)下的p為指針變量,將對(duì)象obj1賦值給p,實(shí)際上是p指向?qū)ο髈bj1的地址,所以“p=*obj1;”修改為“p=&obj1;”(3)第3個(gè)標(biāo)識(shí)下的“p=*obj2;”語(yǔ)句同(2),修改為“p=&obj2;”。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、使用VC6打開(kāi)考生文件夾下的源程序文件modi2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函數(shù)fun(intN[4])的功能是用4個(gè)數(shù)字,組成互不相同且無(wú)重復(fù)數(shù)字的三位數(shù),并將滿(mǎn)足所有條件的數(shù)字輸出到屏幕,并且每輸出一個(gè)三位數(shù)字就換一行。程序分析:可填在百位、十位、個(gè)位的數(shù)字都是1、2、3、0。組成所有的排列后再去掉不滿(mǎn)足條件的排列。如果判定第一個(gè)數(shù)字是0則也去掉。1#include<iostream.h>2voidfun(intN[4])3{45}6intmain()7{8intN[4]={1,2,3,0);9fun(N);10return0;11}標(biāo)準(zhǔn)答案:1inti,j,k;2for(i=0;i<4;i++)//百位循環(huán)3{4for(j=0;j<4;j++)//十位循環(huán)5for(k=0;k<4;k++)//個(gè)位循環(huán)6{7if(i!=j&&j!=k&&k!=i&&N[i]!=0)//當(dāng)三位數(shù)不同,并且百位不為08{9cout<<N[i]<<N[j]<<N[k]<<end1;//輸出這三位數(shù)組成的數(shù)字10}11}12}知識(shí)點(diǎn)解析:(1)該程序功能是輸出百、十、個(gè)位都不相同的組合。它的解題思路,利用三層循環(huán),對(duì)百、十、個(gè)位數(shù)字是否相同進(jìn)行判斷。(2)從已給部分源程序的main主函數(shù)開(kāi)始入手,核心函數(shù)voidfun(intN[4])中的N[4]參數(shù)為存放輸入的四位數(shù)字的數(shù)組。(3)利用三層循環(huán),對(duì)要三位數(shù)字是否相同進(jìn)行判斷。(4)如果三位數(shù)不同,并且百位不為0。那么依次輸出這三位數(shù),即為三位數(shù)組成的數(shù)字。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、使用VC6打開(kāi)考生文件夾下的源程序文件modi3.cpp。其中定義的類(lèi)并不完整,按要求完成下列操作,將類(lèi)的定義補(bǔ)充完整。完成以下功能:(1)基類(lèi)Person完成打印功能,定義其中的打印函數(shù)為虛函數(shù),請(qǐng)?jiān)谧⑨專(zhuān)?*******1********后添加適當(dāng)?shù)恼Z(yǔ)句。(2)類(lèi)Man繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為1,請(qǐng)?jiān)谧⑨專(zhuān)?*******2********后添加適當(dāng)?shù)恼Z(yǔ)句。(3)類(lèi)Woman繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為0,請(qǐng)?jiān)谧⑨專(zhuān)?*******3********后添加適當(dāng)?shù)恼Z(yǔ)句。(4)實(shí)現(xiàn)函數(shù)fun(),用于傳遞不同的類(lèi)型,打印出性別,請(qǐng)?jiān)谧⑨專(zhuān)?*******4********后添加適當(dāng)?shù)恼Z(yǔ)句。輸出的內(nèi)容如下:Sex=ManSex=Woman注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。1#include<iostream.h>2classPerson3{4public:5//********1********6voidprint(){};7intsex;8};9classMan:publicPerson10{1public:12Man()13{14//********2********1516}17voidprint(){18cout<<’’Man’’<<end1;19};20};;21classWoman:publicPerson22{23public:24Woman()25{26//********3********2728}29voidprint(){30cout<<’’Woman’’<<end1;31};32};33//********4********3435{36cout<<’’Sex=’’;37p.print();38}39intmain()40{41Manm;42fun(m);43Womann;44fun(n);45return0;46}標(biāo)準(zhǔn)答案:(1)將“voidprint(){};”補(bǔ)充完整為:virtualvoidprint(){};(2)添加語(yǔ)句:sex=1;(3)添加語(yǔ)句:sex=0;(4)添加語(yǔ)句:voidfun(Person&p)知識(shí)點(diǎn)解析:在VC環(huán)境下打開(kāi)程序,根據(jù)題干給出的幾條功能要求,對(duì)程序中給出注釋下的內(nèi)容逐個(gè)補(bǔ)全或修改。從已定源程序的main主函數(shù)開(kāi)始入手,可以看出程序通過(guò)調(diào)用類(lèi)的成員函數(shù)實(shí)現(xiàn)各種輸出操作。(1)題目1要求“基類(lèi)Person完成打印功能,定義其中的打印函數(shù)為虛函數(shù)”。虛函數(shù)是函數(shù)的一種,定義虛函數(shù),在函數(shù)名前聲明virtual就可以了,所以第1個(gè)標(biāo)識(shí)下的“voidprint(){};”語(yǔ)句修改為“virtualvoidprint(){};”。(2)題目2要求“類(lèi)Man繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為1”?;?lèi)Person中變量sex是用來(lái)存放性別的,Man繼承Person,所以Man中性別的變量可以使用基類(lèi)中的sex變量,設(shè)置性別為1,即“sex=1:”。(3)題目3要求“類(lèi)Woman繼承于Person,在構(gòu)造函數(shù)中設(shè)置性別為0”。同(2),在第三個(gè)標(biāo)識(shí)下添加“sex=0;”。(4)題目4要求“實(shí)現(xiàn)函數(shù)fun(),用于傳遞不同的類(lèi)型,打印出性別"。根據(jù)“p.print();”語(yǔ)句知道,fun()函數(shù)的形參為指針p,由于它調(diào)用了基類(lèi)Person中的成員函數(shù)print(),所以p的基類(lèi)為Person,即添加函數(shù)fun()的定義為“voidfun(Person&p)”。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第3套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj1,此工程中含有一個(gè)源程序文件proj1.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Constructorcalled.Thevalueis10Maxnumberis20Destructorcalled.注意:只能修改注釋“//ERROR****found****”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#include<iostream>usingnamespacestd;classMyClasS{public://ERROR********found********voidMyClass(inti){value=i;cout<<"Constructorcalled."<<endl;}intMax(intx,inty){returnx>y?x:y;}//求兩個(gè)整數(shù)的最大值//ERROR********found********intMax(intx,inty,intz=0)//求三個(gè)整數(shù)的最大值{if(x>y)returnx>z?x:z;elSereturny>z?y:z;}intGetValue()const{returnvalue;}~MyClass(){cout<<"Destructorcalled."<<endl;}private:intvalue;};intmain(){MyClassobj(10);//ERROR*******found*******cout<<"Thevalueis"<<value()<<endl;cout<<"Maxnumberis"<<o(jì)bj.Max(10,20)<<endl;return0;}標(biāo)準(zhǔn)答案:(1)MyClass(inti)(2)intMax(intx,inty,intz)(3)cout<<"Thevalueis"<<o(jì)bj.GetValue()<<endl:知識(shí)點(diǎn)解析:(1)考查構(gòu)造函數(shù),構(gòu)造函數(shù)前不加void或其他任何類(lèi)型名,直接使用MyClass(inti)即可。(2)主要考查函數(shù)重載,在intMax(intx,inty){returnx>y?x:y;}中兩個(gè)形參變量都是int型,而語(yǔ)句intMax(intx,inty,intz=0)的前兩個(gè)形參也都是int型,第三個(gè)形參定義默認(rèn)值,那么這兩個(gè)Max函數(shù)在調(diào)用時(shí)它們的參數(shù)個(gè)數(shù)和參數(shù)類(lèi)型都一樣,因?yàn)楹瘮?shù)重載要求形參類(lèi)型或形參個(gè)數(shù)不同,所以要把intz=0改為intz,才能構(gòu)成函數(shù)重載。(3)主要考查成員函數(shù)的調(diào)用,因?yàn)関alue是私有成員,所以不能被類(lèi)外函數(shù)直接調(diào)用,而且value()的用法也是錯(cuò)誤的,可以使用成員函數(shù)obj.GetValue()得到value的值。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開(kāi)考生文件夾下的解決方案文件pmj2,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類(lèi)XBase和XDerived,以及主函數(shù)main。程序文本中位于每行"//**********found**********下面的一行內(nèi)有一處或多處下劃線(xiàn)標(biāo)記,請(qǐng)?jiān)诿總€(gè)下劃線(xiàn)標(biāo)記處填寫(xiě)合適的內(nèi)容,并刪除掉下劃線(xiàn)標(biāo)記。經(jīng)修改后運(yùn)行程序,得到的輸出結(jié)果為:s=25#include<iostream>usingnamespacestd:classXBase{private:intmem1,mem2;public://*******found*******XBase(intm1=0,intm2=0):mem1(m1),_______{}//*******found*******virtualint_______};//*******found*******classXDerivred:_______{private:intmem3;public:XDerired():XBase(),mem3(0){}//*******found*******XDerired(intm1,intm2,intm3):_______{}intsum(){returnXBase::sum()+mere3;}};voidmain(){XDerivedb(3,4,5);XBasea(6,7),*pb=&b;ints=pb->sum()+a.sum();cout<<"s="<<s<<endl;}標(biāo)準(zhǔn)答案:(1)ment2(m2)(2)sum(){returnmem1+mem2;}(3)publicXBase(4)XBase(m1,m2),mem3(m3)知識(shí)點(diǎn)解析:(1)題意要求使用m1和m2初始化數(shù)據(jù)成員mem1和mem2,同mem1的初始化一樣,需要在成員初始化列表中完成mem2的初始化。(2)sum函數(shù)的定義需要返回mem1和mem2之和。(3)XDerired公有繼承xBase類(lèi),在繼承列表中使用public。(4)在成員初始化列表中初始化基類(lèi)成員時(shí),需要調(diào)用基類(lèi)的構(gòu)造函數(shù),初始化mem3時(shí),可以直接初始化。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj3,其中包含了類(lèi)Integers和主函數(shù)main的定義。一個(gè)Integers對(duì)象就是一個(gè)整數(shù)的集合,其中包含0個(gè)或多個(gè)可重復(fù)的整數(shù)。成員函數(shù)add的作用是將一個(gè)元素添加到集合中,成員函數(shù)remove的作用是從集合中刪除指定的元素(如果集合中存在該元素),成員函數(shù)sort的作用是將集合中的整數(shù)按升序進(jìn)行排序。請(qǐng)編寫(xiě)這個(gè)sort函數(shù)。此程序的正確輸出結(jié)果應(yīng)為:528245327527663152824532752766316528245327527663161952845327527663161952845327527663161942344556192728316675要求:補(bǔ)充編制的內(nèi)容寫(xiě)在“//********333********”與“//********666********”之間。不得修改程序的其他部分。注意:相關(guān)文件包括:main.cpp、Integers.h。程序最后調(diào)用writeToFile函數(shù),使用另一組不同的測(cè)試數(shù)據(jù),將不同的運(yùn)行結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)編譯為obj文件。//Integers.h#ifndefINTEGERS#defineINTEGERS#include<iostream>usingnamespacestd;constintMAXELEMENTS=100;//集合最多可擁有的元素個(gè)數(shù)classIntegers{intelem[MAXELEMENTS];//用于存放集合元素的數(shù)組intcounter;//用于記錄集合中元素個(gè)數(shù)的計(jì)數(shù)器public:Integers():counter(0){}//創(chuàng)建一個(gè)空集合Integers(intdata[],intsize);//利用數(shù)組提供的數(shù)據(jù)創(chuàng)建一個(gè)整數(shù)集合VOidadd(intelement);//添加一個(gè)元素到集合中voidremove(intelement);//刪除集合中指定的元素intgetCount()const{returncounter;}//返回集合中元素的個(gè)數(shù)intgetElement(inti)const{returnelem[i];}//返回集合中指定的元素voidsort();//將集合中的整數(shù)按由小到大的次序進(jìn)行排序voidshow()const;//顯示集合中的全部元素};voidwriteTOFile(constchar*path);#endif//main.cpp#include"Integers.h"#include<iomanip>Integers::Integers(intdata[],intsize):counter(0){for(inti=0;i<size;i++)add(data[i]);}voidIntegers::add(intelement){if(counter<MAXELEMENTS)elem[counter++]=element;}voidIntegers::remove(intelement){intj;for(j=counter-1;j>=0;j--)if(elem[j]==element)break;for(inti=j;i<counter-1;i++)elem[i]=elem[i+1];counter--;}voidIntegers::sort(){//********333********//********666********}voidIntegers::show()const{for(inti=0;i<getCount();i++)cout;<<seLw(4)<<getElemerit;(i);tout;<<endl;}intmain(){intd[]={5,28,2,4,5,3,2,75,27,66,31};Integerss(d,11);s.show();s.a(chǎn)dd(6);S.ShOW();s.a(chǎn)dd(19);s.show();s.remove(2);s.show();s.a(chǎn)dd(4);s.show();s.sort();s.show();writeToFile("");return0;}標(biāo)準(zhǔn)答案:for(inti=0;1<counter;i++)//遍歷數(shù)組elemfor(intj=counter-1;j>i;j-)//從最后一位到i到前一位遍歷elemif(elem[i]>elem[j])//如果elem[i]大于elem[j],則兩值替換{inttemp=elem[i];//定義整形變量temp并賦值為elem[i];elem[i]=elem[j];//給elem[i]賦值elem[i]elem[j]=temp;//給elem[j]賦值temp}知識(shí)點(diǎn)解析:主要考查考生對(duì)排序算法的掌握,要排序的數(shù)組為elem,元素個(gè)數(shù)為counter,在這里使用下標(biāo)i和j進(jìn)行比較,當(dāng)elem[i]>elem[j]時(shí),數(shù)組元素通過(guò)中間變量temp進(jìn)行交換。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第4套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj1,該工程含有一個(gè)源程序文件proj1.cpp。其中位于每個(gè)注釋“//ERROR****found****”之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Thevalueis10注意:只修改注釋“//ERROR****found***”的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#include<iostream>usingnamespacestd;classMyClass{intvalue;public://ERROR******found******voidMyClass(intval):value(val){}intGetValue()const{returnvalue;}voidSetValue(intval);};//ERROR******found******inlinevoidSetValue(intval){value=val;)intmain(){MyClassobj(0);obj.SetValue(10);//ERROR********found********下列語(yǔ)句功能是輸出。bj的成員valme的值tout<<”Thevalueis”<<o(jì)bj.value<<endl;return0;}標(biāo)準(zhǔn)答案:(1)MyClass(intval):value(val){}(2)voidMyClass::SetValue(intval){value=val;}(3)cout<<"Thevalueis"<<o(jì)bj.GetValue()<<endl:知識(shí)點(diǎn)解析:(1)考查構(gòu)造函數(shù),定義構(gòu)造函數(shù)時(shí)不能使用void,直接使用MyClass(intval)即可。(2)主要考查成員函數(shù)定義,類(lèi)的成員函數(shù)定義時(shí)要使用前綴MyClass,而inline是內(nèi)聯(lián)函數(shù)的關(guān)鍵字,在此是錯(cuò)誤的,應(yīng)該刪掉inline并在函數(shù)名前加上前綴MyClass,即voidMyClass::SetValue(intval){value=val;}。(3)考查成員函數(shù)調(diào)用,value是私有成員,在主函數(shù)中不能直接調(diào)用value,可以使用成員函數(shù)GetValue()來(lái)得到value的值。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj2,此工程包含一個(gè)源程序文件proj2.cpp。其中定義了Score類(lèi)。Score是一個(gè)用于管理考試成績(jī)的類(lèi)。其中,數(shù)據(jù)成員一S指向存儲(chǔ)成績(jī)的數(shù)組,_n表示成績(jī)的個(gè)數(shù);成員函數(shù)Sort使用冒泡排序法將全部成績(jī)按升序進(jìn)行排列。請(qǐng)?jiān)诔绦蛑械臋M線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,然后刪除橫線(xiàn),以實(shí)現(xiàn)Score類(lèi)的成員函數(shù)Sort。注意:只在指定位置編寫(xiě)適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。//proj2.cpp#include<iostream>#include<cstdlib>#include<ctime>usingnamespacestd;classScore{public:Score(double*s,intn):_s(s),_n(n){}doubleGetScore(inti)const{return_s[i];}voidSort();private:double*_s;int_n;};voidScore::Sort(){//********found********for(inti=0;i<n一1;___________)//********found********for(intj=__________;j>i;j--)if(_s[j]<_s[j一1]){//交換_s[j]和_s[j一1]doublet=_s[j];//********found********_____________;//********found********___________;}}intmain(){constintNUN=10;doubles[NUM];srand(time(0));for(inti=0;i<NUN;i++)s[i]=double(rand())/RAND_MAX*100;Scoress(s,NUM);ss.Sort();for(intj=0;J<NUM;j++)cout<<ss.GetScore(j)<<endl;return0;}標(biāo)準(zhǔn)答案:(1)i++(2)_n一1(3)_s[j]=_s[j—1](4)_s[j—1]=t知識(shí)點(diǎn)解析:(1)主要考查for循環(huán)語(yǔ)句,從題目要求可知循環(huán)變量i要從0到一n一2,因此i要遞增操作,即i++。(2)主要考查考生對(duì)冒泡排序的掌握,這里要求從后往前掃描,比較相鄰兩個(gè)元素,若后者小則交換,因此在這里下標(biāo)j要從最后開(kāi)始,即intj=_n—1。(3)考查交換算法,在if語(yǔ)句中一s[j]<_s[j—1]滿(mǎn)足條件,則實(shí)現(xiàn)交換。因?yàn)橐呀?jīng)把_s[j]的值賦給了中間變量t,所以這里要把_s[j一1]的值賦給_s[j],即_s[j]=_s[j一1];。(4)考查交換算法,這里只需把中間變量t中的值賦給_s[j一1]即可。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj3,此工程包含一個(gè)源程序文件proj3.cpp,其中定義了用于表示二維向量的類(lèi)MyVector;程序應(yīng)當(dāng)顯示(6,8)。但程序中有缺失部分,請(qǐng)按照以下提示,把缺失部分補(bǔ)充完整:(1)在“//**1******found****”的下方是構(gòu)造函數(shù)的定義,它用參數(shù)提供的坐標(biāo)對(duì)x和y進(jìn)行初始化。(2)在“//**2******found****”的下方是減法運(yùn)算符函數(shù)定義中的一條語(yǔ)句。兩個(gè)二維向量相減生成另一個(gè)二維向量:其X坐標(biāo)等于兩向量X坐標(biāo)之差,其Y坐標(biāo)等于兩向量Y坐標(biāo)之差。(3)在“//**3******found****”的下方,語(yǔ)句的功能是使變量v3獲得新值,它等于向量v1與向量v2之和。注意:只在指定位置編寫(xiě)適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“****found****”。//proj3.cpp#include<iostream>usingstd::ostream;usingstd::cout;usingstd::endl;classMyVector{//表示二維向量的類(lèi)doublex;//X坐標(biāo)值doubley;//Y堅(jiān)標(biāo)值public:MyVector(doublei=0.0,doublej=0.0);//構(gòu)造函數(shù)MyVectoroperator+(MyVectorj);//重載運(yùn)算符+friendMyVectoroperator一(MyVectori,MyVectorj);//重載運(yùn)算符-friendostream&operator<<(ostream&os,MyVectorv);//重載運(yùn)算符<<};//**1*********found*******___________(doublei,doublej):x(i),y(j){}MyVectorMyvector::operator+(MyVectorj){returnMyVector(x+j.x,y+j.y);}MyVectoroperator一(MyVectori,MyVectorj){//**2*********found*******returnMyVector(___________);}ostream&operator<<{ostream&os,MyVectorv){os<<’(’<<v.x<<’,’<<v.y<<’)’;//輸出向量v的坐標(biāo)returnos;}intmain(){MyVectorv1(2,3),v2(4,5),v3;//**3*********found*******v3=_____________;cout<<v3<<endl;return0;}標(biāo)準(zhǔn)答案:(1)MyVector::MyVector。(2)i.x—j.x,i.y—i.y(3)v1+v2知識(shí)點(diǎn)解析:(1)主要考查的是構(gòu)造函數(shù),在類(lèi)外定義構(gòu)造函數(shù)時(shí)要使用類(lèi)名和作用域,即MyVector::MyVector。(2)主要考查重載運(yùn)算符“一”的返回語(yǔ)句,返回值應(yīng)為向量i和j的差,即MyVector(i.x—j.x,i.y—j.y);。(3)主要考查重載運(yùn)算符“+”的使用,由題目可知v3是v1和v2的和,前面我們已經(jīng)重新定義了運(yùn)算符“+”,所以在這里直接使用語(yǔ)句v3=v1+v2;即可。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第5套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj1,其中在編輯窗口內(nèi)顯示的主程序文件中定義有類(lèi)AAA和主函數(shù)main。程序文本中位于每行“//ERROR****found****”下面的一行有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:8am=60注意:只修改每個(gè)“//ERROR****found****”下面的一行,不要改動(dòng)程序中的其他任何內(nèi)容。#include<iostream>usingFtamespacestd;classAAA{inta[10];intn;//ERROR*******found*******private:AAA(intaa[],intnn):n(nn){//ERROR*******ound*******for(inti=0;i<n;i++)aa[i]=a[i];}intGeta(inti){returna[i];}};intmain(){inta[6]={2,5,8,10,15,20};AAAx(a,6);intsum=0;//ERROR*******found*******for(inti=0;i<6;i++)sum+=x.a(chǎn)[i];cout<<"slim="<<sum<<endl;return0;}標(biāo)準(zhǔn)答案:(1)publk::(2)for(inti=0;i<n;i++)a[i]=aa[i];(3)for(inti=0;i<6;i++)sum+=x.Geta(i);知識(shí)點(diǎn)解析:(1)構(gòu)造函數(shù)肯定是公有成員,所以應(yīng)使用public。(2)主要考查考生對(duì)賦值語(yǔ)句的掌握,因?yàn)閿?shù)組a是私有成員,因此a應(yīng)該在左邊,而數(shù)組aa是形參,要賦值給數(shù)組a。(3)主要考查考生對(duì)成員函數(shù)調(diào)用的掌握,數(shù)組a是類(lèi)的私有成員,因此不能被main函數(shù)直接調(diào)用,要通過(guò)成員函數(shù)Geta來(lái)調(diào)用數(shù)組a。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj2,其中定義了Employee類(lèi)和Manager類(lèi)。Emp]oyee用于表示某公司的雇員,其屬性包括姓名(name)和工作部分(dept)。Manager是Employee的公有派生類(lèi),用于表示雇員中的經(jīng)理。除了姓名和工作部分之外,Manager的屬性還包括級(jí)別(level)。Employee類(lèi)的成員函數(shù)print用于輸出雇員的信息;Manager類(lèi)的成員函數(shù)print負(fù)責(zé)輸出經(jīng)理的信息。請(qǐng)?jiān)跈M線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,然后刪除橫線(xiàn),以實(shí)現(xiàn)上述類(lèi)定義。此程序的正確輸出結(jié)果應(yīng)為:Name:SallySmithDept:SalesLevel:2注意:只能在橫線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。#include<iostream>#include<string>usingnamespacestd;classEmployee{public:Employee(stringname,stringdept)://**********found**********_________{}virtualvoidprint()const;stringdept()const//返回部門(mén)名稱(chēng){//**********found**********_____________}virtual~Employee(){}private:stringname_;stringdept_;};classNanager:publicEmployee{public:Manager(siringname,stringdept,intlevel)://**********found**********_______________{}virtualvoidprint()const;private:intlevel_;};voidEmployee::print()const{cout<<"Name:"<<name_<<endl;cout<<"Dept:"<<dept<<endl;}voidHanager::print()const{//**********found**********________________cout<<"Level:"<<level_<<endl;}intmain(){Employee*emp=newNanager("SallySmith","Sales",2);emp一>print();deleteemp;return0;}標(biāo)準(zhǔn)答案:(1)name_(name),dept_(dept)(2)returndept_;(3)Employee(name,dept),level_(Ievel)(4)Employee::print();知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,這里使用成員列表初始化法對(duì)私有成員初始化。(2)主要考查考生對(duì)成員函數(shù)的掌握,題目要求返回部門(mén)名稱(chēng),因此這里是一條返回語(yǔ)句。函數(shù)要求返回的類(lèi)型為string,因此直接返回dept_即可。(3)主要考查考生對(duì)構(gòu)造函數(shù)的掌握,因?yàn)镸anager類(lèi)是Employee類(lèi)的派生類(lèi),因此它的構(gòu)造函數(shù)要先對(duì)基類(lèi)初始化,應(yīng)使用成員列表初始化。(4)主要考查考生對(duì)虛函數(shù)的掌握,因?yàn)镸anager類(lèi)是Employee類(lèi)的派生類(lèi),因此它的print函數(shù)可以先調(diào)用基類(lèi)的print函數(shù),再輸出自身要輸出的數(shù)據(jù),故為Employee::print();。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj3,此工程包含一個(gè)源程序文件proj3.cpp,其功能是從文本文件in.dat中讀取全部整數(shù),將整數(shù)序列存放到intArray類(lèi)的對(duì)象myArray中,然后對(duì)整數(shù)序列按非遞減排序,最后由函數(shù)writeToFile選擇序列中的部分?jǐn)?shù)據(jù)輸出到文件out.dat中。文件in.dat中的整數(shù)個(gè)數(shù)不大于300個(gè)。要求:補(bǔ)充編制的內(nèi)容寫(xiě)在“//*********333**********”與“//********666********”兩行之間。實(shí)現(xiàn)對(duì)整數(shù)序列按非遞減排序,并將排序結(jié)果在屏幕上輸出。不得修改程序的其他部分。注意:程序最后已將結(jié)果輸出到文件out.dat中。輸出函數(shù)writeToFile已經(jīng)給出并且調(diào)用。//proj3.cpp#include<iostream>#include<fstream>#include<cstring>usingnamespacestd;classintArray{private:int*array;//整數(shù)序列首地址intlength;//序列中的整數(shù)個(gè)數(shù)public://構(gòu)造函數(shù),從文件中讀取數(shù)據(jù)用于初始化新對(duì)象。參數(shù)是文件名intArray(char*filename);voidsort();//對(duì)整數(shù)序列按非遞減排序~intArray();voidwriteToFile(char*filename);};intArray::intArray(char*filename){ifstreammyFile(filename);intlen=300;array=newint[len];length=0;while(myFile>>array[length++]);length--;myFile.close();}voidintArray::sort(){//*************333***********//*************666***********}intArray::一intArray(){delete[]array;}voidintArray::writeToFile(char*filename){intstep=0;ofstreamoutFile(filename);for(inti=0;i<length;i=i+step){outFile<<array[i]<<endl;step++;}outFile.close();}voidmain(){intArraymyArray("in.dat");myArray.sort();myArray.writeToFile("out.dat");}標(biāo)準(zhǔn)答案:for(inti=0;i<length;++i)//遍歷整個(gè)數(shù)組for(intj=i;j<length;++j)//從i++遍歷整數(shù)組if(array[i]>array[j])//如果arrag[i]>array[j],把a(bǔ)rray[i]與array[i]進(jìn)行對(duì)換{inttemp;//定義一個(gè)臨時(shí)變量temptemp=array[i];//把a(bǔ)rray[i]值放到變量temparray[i]=array[j];//把a(bǔ)rray[j]值賦給array[i]array[j]=temp;//把變量temp存放在值array[j]中}for(inta=0;a<length;++a)//遍歷數(shù)組,把數(shù)組中的所有元素打印到控制臺(tái)上cout<<array[a]<<"";知識(shí)點(diǎn)解析:題目要求對(duì)整數(shù)序列按非遞減排序,要排序就必須要有比較,因此定義兩個(gè)下標(biāo)i和j,按題目非遞減排序要求,當(dāng)atTay[i]比array[j]大時(shí)就交換其值,利用中間變量temp來(lái)實(shí)現(xiàn)。國(guó)家二級(jí)C++機(jī)試(操作題)模擬試卷第6套一、基本操作題(本題共1題,每題1.0分,共1分。)1、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj1,此工程中含有一個(gè)源程序文件proj1.cpp。其中位于每個(gè)注釋"//ERROR****found****"之后的一行語(yǔ)句存在錯(cuò)誤。請(qǐng)改正這些錯(cuò)誤,使程序的輸出結(jié)果為:Theextensionis:CPP注意:只修改注釋"//ERROR****found****"的下一行語(yǔ)句,不要改動(dòng)程序中的其他內(nèi)容。//proj1.cpp#include<iostream>usingnamespacestd;classMyClass{char*p;public:MyClass(charc){p=newchar;*p=c;}//ERROR********found********MyClass(constMyClasscopy){p=newchar;*p=*(copy.p);}//ERROR********found********下列析構(gòu)函數(shù)用于釋放字符指針~MyClass(){freep;}MyClass&operator=(constMyClass&rhs){if(this==&rhs)return*this;*p=*(rhs.p);//ERROR********found********returnthis;}charGetChar()const{return*p;}};intmain(){MyClassobj1(’C’),obj2(’P’);MyClassobj3(obj1);obj3=obj2;cout<<"Theextensionis:"<<o(jì)bj1.GetChar()<<o(jì)bj2.GetChar()<<o(jì)bj3.GetChar()<<endl;return0;}標(biāo)準(zhǔn)答案:(1)MyClass(constMyClass©){p=newchar;*p=*(copy.p);}(2)~MyClass(){deletep;}(3)return*this;知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)拷貝構(gòu)造函數(shù)的掌握,拷貝構(gòu)造函數(shù)的形參是引用調(diào)用。(2)主要考查考生對(duì)析構(gòu)函數(shù)的掌握,析構(gòu)函數(shù)使用delete語(yǔ)句釋放指針。(3)主要考查考生對(duì)this指針的掌握,函數(shù)要求返回MyClass,可知要返回的是this指針指向的當(dāng)前類(lèi),而非this指針。二、簡(jiǎn)單應(yīng)用題(本題共1題,每題1.0分,共1分。)2、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj2,此工程中含有一個(gè)源程序文件proj2.cpp,其中定義了Array類(lèi)。在C++程序中訪(fǎng)問(wèn)數(shù)組元素時(shí),如果索引值(下標(biāo))小于0或者大于元素個(gè)數(shù)減1,就會(huì)產(chǎn)生越界訪(fǎng)問(wèn)錯(cuò)誤。Array是一個(gè)帶有檢查越界訪(fǎng)問(wèn)功能的數(shù)組類(lèi),其成員列表如下:公有成員函數(shù)功能GetValue獲取指定元素的值SetValue將指定元素設(shè)置為指定值GetLength獲取元素個(gè)數(shù)私有成員函數(shù)功能IsOutOfRange檢查索引是否越界私有數(shù)據(jù)成員功能_p指向動(dòng)態(tài)分配的整型數(shù)組的指針_size存放元素個(gè)數(shù)Array類(lèi)的構(gòu)造函數(shù)會(huì)動(dòng)態(tài)分配一個(gè)int類(lèi)型數(shù)組,以存儲(chǔ)給定數(shù)量的元素。在公有成員函數(shù)GetValue和SetValue中,首先調(diào)用私有成員函數(shù)IsOutOfRange檢查用于訪(fǎng)問(wèn)數(shù)組元素的索引是否越界,只有當(dāng)索引值在有效范圍內(nèi)時(shí),才能進(jìn)行元素訪(fǎng)問(wèn)操作。請(qǐng)?jiān)跈M線(xiàn)處填寫(xiě)適當(dāng)?shù)拇a,然后刪除橫線(xiàn),以實(shí)現(xiàn)Array類(lèi)的功能。此程序的正確輸出結(jié)果應(yīng)為:1,2,3,4,5,6,7,8,9,10注意:只在指定位置編寫(xiě)適當(dāng)代碼,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)//********found********"。//proj2.cpp#include<iostream>usingnamespacestd;classArray{public:Array(intsize)//構(gòu)造函數(shù){//********found********下列語(yǔ)句動(dòng)態(tài)分配一個(gè)int類(lèi)型數(shù)組_p=__________;_size=size;}~Array(){delete[]_p;}//析構(gòu)函數(shù)voidSetValue(intindex,intvalue)//設(shè)置指定元素的值{if(IsOutOfRange(index)){cerr<<"Indexoutofrange!"<<endl;return;}//********found********__________;}intGetValue(intindex)const//獲取指定元素的值{if(IsOutOfRange(index)){cerr<<"Indexoutofrange!"<<endl;return-1;}//********found********__________;}intGetLength()const{return_size;}//獲取元素個(gè)數(shù)private:int*_p;int_size;boolIsOutOfRange(intindex)const//檢查索引是否越界{//********found********if(index<0||__________)returntrue;elsereturnfalse;}};intmain(){Arraya(10);for(inti=0;i<a.GetLength();i++)a.SetValue(i,i+1);for(intj=0;j<a.GetLength()-1;j++)cout<<a.GetValue(j)<<",";cout<<a.GetValue(a.GetLength()-1)<<endl;return0;}標(biāo)準(zhǔn)答案:(1)newint[size](2)_p[index]=value(3)return_p[index](4)index>_size-1知識(shí)點(diǎn)解析:(1)主要考查考生對(duì)動(dòng)態(tài)分配的掌握,題目要求分配一個(gè)int類(lèi)型數(shù)組,數(shù)組長(zhǎng)度為size,應(yīng)使用new語(yǔ)句分配空間,因此為newint[size]。(2)主要考查考生對(duì)成員函數(shù)的掌握,先看函數(shù)功能:設(shè)置指定元素的值。index為指定的下標(biāo),value為指定的值,因此使用語(yǔ)句:p[index]=value;。(3)主要考查考生對(duì)成員函數(shù)的掌握,函數(shù)功能為獲取指定元素的值,index為要求返回的元素的下標(biāo),直接使用retum語(yǔ)句返回?cái)?shù)組元素即可。(4)主要考查考生對(duì)if語(yǔ)句的掌握,函數(shù)功能是檢查索引是否越界,當(dāng)index<0或者index>size-1時(shí).index越界.返回true。三、綜合應(yīng)用題(本題共1題,每題1.0分,共1分。)3、請(qǐng)打開(kāi)考生文件夾下的解決方案文件proj3,此工程中包含一個(gè)源程序文件proj3.cpp,補(bǔ)充編制C++程序proj3.cpp,其功能是讀取文本文件in.dat中的全部?jī)?nèi)容,將文本存放到doc類(lèi)的對(duì)象myDoc中。然后分別統(tǒng)計(jì)26個(gè)英文字母在文本中出現(xiàn)的次數(shù),統(tǒng)計(jì)時(shí)不區(qū)分字母大小寫(xiě)。最后將統(tǒng)計(jì)結(jié)果輸出到文件out.dat中。文件in.dat長(zhǎng)度不大于1000字節(jié)。要求:補(bǔ)充編制的內(nèi)容寫(xiě)在//**********333**********與//********666********之間。實(shí)現(xiàn)分別統(tǒng)計(jì)26個(gè)英文字母在文本中出現(xiàn)的次數(shù),并將統(tǒng)計(jì)結(jié)果在屏幕上輸出。統(tǒng)計(jì)時(shí)不區(qū)分字母大小寫(xiě),輸出不限格式。不得修改程序的其他部分。注意:程序最后將結(jié)果輸出到文件out.dat中,輸出函數(shù)writeToFile已經(jīng)給出并且調(diào)用。//proj3.cpp#include<iostream>#include<fstream>#include<cstring>usingnamespacestd;classdoc{private:char*str;//文本字符串首地址intcounter[26];//用于存放26個(gè)字母的出現(xiàn)次數(shù)intlength;//文本字符個(gè)數(shù)public://構(gòu)造函數(shù),讀取文件內(nèi)容,用于初始化新對(duì)象。filename是文件名字符串首地址。doc(char*filename);voidcount();//統(tǒng)計(jì)26個(gè)英文字母在文本中出現(xiàn)的次數(shù),統(tǒng)計(jì)時(shí)不區(qū)分大小寫(xiě)。~doc();voidwriteToFile(char*filename);};doc::doc(char*filename){ifstreammyFile(filename);intlen=1001,tmp;str=newchar[len];length=0;while((tmp=myFile.get())!=EOF){str[length++]=tmp;}str[length]=’\0’;myFile.close();for(inti=0;i<26;i++)counter[i]=0;}//*************333***********//**********666*********doc::~doc(){delete[]str;}voiddoc::writeToFile(char*filename){ofstreamoutFile(filename);for(inti=0;i<26;i++)outFile<<counter[i]<<endl;outFile.close();}voidmain(){docmyDoc("in.dat");myDoc.count();myDoc.writeToFile("out.dat");}標(biāo)準(zhǔn)答案:voiddoc::count(){for(inti=0;i<length;i++){if(str[i]>=’a’&&str[i]<=’z)counter[str[i]-’a’]++;if(str[i]>=’A’&&str[i]<=’Z)counter[str[i]-’A’]++;}for(intindex=0;index<26;++index)cout<<(char)(index+65)<<"or"<<(char)(index+97)<<"出現(xiàn)的次數(shù)是:"<<counter[index]<<endl;}知識(shí)點(diǎn)解析:主要考查考生對(duì)統(tǒng)計(jì)字母的掌握,首先要判斷該字符是否為字母,即為字符的ASCII碼大于等于a,小于等于z時(shí),為小寫(xiě)字母,當(dāng)大于等于A,小于等于Z時(shí),為大寫(xiě)字母,則用于計(jì)量該字母出現(xiàn)次數(shù)的元素值加1。如何確定計(jì)量字母次數(shù)的元素下標(biāo)是本題的難點(diǎn),當(dāng)字母為小寫(xiě)字母時(shí),用該字母的ASCII碼減于a的ASCII碼,當(dāng)字母為大寫(xiě)時(shí),用該字母的ASCII碼減于A的ASCII碼,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論