国家二级C++机试(操作题)模拟试卷1(共27题)_第1页
国家二级C++机试(操作题)模拟试卷1(共27题)_第2页
国家二级C++机试(操作题)模拟试卷1(共27题)_第3页
国家二级C++机试(操作题)模拟试卷1(共27题)_第4页
国家二级C++机试(操作题)模拟试卷1(共27题)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级C++机试(操作题)模拟试卷1(共9套)(共27题)国家二级C++机试(操作题)模拟试卷第1套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用Vc++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为Number=7Number=12注意:错误的语句在//******error******的下面,修改该语句即可。试题程序:#includeclassTC{public://******error******TC(inti):Number=i{//******error******returnNumber;}voidset(inti){Number=i:}voiddisplay(){cout<<"Number="<display();p->set(12);p->display();return;}标准答案:(1)应改为“TC(inti):Number(i)”。(2)应删除“returnNumber;”。(3)应改为“TC*p=newTC(7);”。知识点解析:本题第1处是声明构造函数,并使用初始化列表完成成员变量的初始化,可知第1处的初始化列表错误,正确的应该是“TC(inti):Number(i)”。构造函数不能有返回值,不能用return来返回值,故第2处应将“returnNumber;”删除。类实例在不指定构造函数的情况下,调用的是默认无参数的构造函数,此时成员变量Number是不确定的,在定义对象时,应使用已定义的构造函数,根据输出结果可知,p指向的对象的Number初始化值为7,故第3处应改为“TC*p=newTC(7);”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。使sum(intn)能计算所有n的因子之和(不包括1和自身)。注意:不能修改程序的其他部分,只能补充sum函数。试题程序:#ineludeintsum(intn){}voidmain(){cout<标准答案:intall=0;for(inti=2;i知识点解析:为了实现计算所有n的因子之和且不包含1和自身,在函数中定义一个变量all来保存求和结果,并为最终结果在函数结束时返回。在循环中逐个寻找n的因子,为了在计算中排除掉1和n本身,因此循环变量i的变化范围为2~n-1。如果n%i==0,说明i是n的因子,因此将i加到all上。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。(1)定义类CPoint的带有两个参数的构造函数,两个变量为x、y,都为int型,且缺省值为0。请在注释1后添加适当的语句。(2)完成类CRectangle的构造函数,给pointl和point2赋值。请在注释2后添加适当的语句。(3)完成类CRectangle的函数GetArea,用来计算矩形面积。请在注释3后添加适当的语句。(4)定义CRectangle类,它拥有两个私有对象pointl和point2,类型为Point,请在注释4后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。试题程序:#include#include(cmath)classCPoint{public://********1********{x=i:y=j;}intGetX(){returnx:}intGetY(){returny;}private:intx,y;};classCRectangle{public://********2********{}intGetArea(){//********3********intheight=point1.GetY()-point2.GetY();return(width*height)?width*height:-width*height;}private://********4********CPointpoint2;};intmain(){CRectanglerect(0,0,1,1);tout<标准答案:(1)应添加“CPoint(inti=0,intj=0)”。(2)应添加“CRectangle(inttop,intleft,intright,intbottom):point1(top,left),point2(right,bottom)”。(3)应添加“intwidth=point1.GetX()-point2.GetX();”。(4)应添加“CPointpoint1;”。知识点解析:本题中在第1处添加构造函数定义,该构造带有两个参数x和Y的构造函数,x、y都为int型,默认值为0,因此第1处应添加“CPoint(inti=0,intj=0)”0第2处通过Cpoint类的构造函数来完成Crectangle类成员的初始化,在函数体内没有任何函数语句,因此其初始化过程是在初始化列表里完成的,通过调用基类的构造函数来实现两个私有对象point1和point2的初始化,故第2处应添加“CRectangle(inttop,intleft,intright,intbottom):pointl(top,left),point2(right,bottom)”。面积为矩形长宽的乘积,因此先计算矩形的长和宽,可由两个Cpoint对象的z坐标相减计算得到,CPoint对象的z坐标为私有成员,只能通过公有接口函数调用获得,因此第3处的语句为“intwidth=pointl.GetX()-point2.GetX();”。Creetangle类的成员变量为两个Cpoint对象成员point1和point2,在第4处补充point1的定义,故第4处应添加语句“CPointpointl;”。国家二级C++机试(操作题)模拟试卷第2套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6,0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为1063022注意:错误的语句在//******error******的下面,修改该语句即可。试题程序:#includeclassTC{private:intnumber;intAdd(inti){returnnumber+=i:}intSub(inti){returnnumber-=i:}intMul(inti){returnnumber*=i:}intDiv(inti){if(i!=0){returnnumber/=i;}elsereturnnumber;}//******error******typedefint(FUNC)(int);//******error******FUNCfunc[];public:TC(){func[0]=TC::Add;fune[1]=TC::Sub;func[2]=TC::Mul;func[3]=TC::Div;number=0;}intCallFunction(inti,intj){//******error******return(fune[i])(j);}};voidmain(){TCmyobj;cout<标准答案:(1)“typedefint(TC::*FUNC)(int);”。(2)“FUNCfunc[4];”。(3)“return(this-)*func[i])(j);”。知识点解析:在类中定义函数指针须指定类名及指针定义运算符*,因此第1处函数指针正确的定义为“typedefint(TC::*FUNC)(int);”。函数指针数组本身是数组类型,因此在定义时如果没有初始化,就必须指定数组大小,在本题中因为指针数组包含的指针变量需要指向4种算数运算,因此定义指针数组大小为4,即第2处应改为“FUNCfunc[4];”。func是指针数组,因此访问时需要有指针运算符“*”,第3处应改成“return(this->*func[i])(j);”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。函数sort(int&m,int&n,int&1)实现将3个整数m,n,1由大到小输出。m最大,1最小。程序实现时,可以把最大的数放到m上,先将m与n进行比较,如果m<n,则将m与n的值进行交换,然后再用m与1进行比较,如果m<1,则将m与1的值进行交换,这样能使m最大,然后再将n与l进行比较,若n<1,则将n与1的值互换,互换后1最小。将函数sort(int&m,int&n,int&1)补充完整,实现3个数的排序。注意:请勿改动主函数。试题程序:#includevoidsort(int&m,int&n,int&1){}intmain(){intx=9:inty=13;intz=-3:sort(x,y,z);cout<标准答案:intt;if(m(n){t=m;m=n;n=t;}//*交换x,y的值*/if(m(1){t==m;m=1;1=t;}//*交换x,z的值*/if(n(1){t=n;n=1;1=t;}/*交换z,y的值*/知识点解析:由审题分析可知,3次比较便可将m、n、1排序。先将m与n进行比较,如果m三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示雇员的Employee类,但类Employee的定义并不完整。请按要求完成下列操作,将类TC的定义补充完整。(1)定义私有数据成员name、street、city、zipcode和age分别用于表示姓名、街道、城市、邮编、年龄,除年龄是整型外,其余都是char型的数据。请在注释1之后添加适当的语句。(2)完成默认构造函数TC的定义,使其把参数传递给私有数据成员name、street、city、zipcode和age。请在注释2之后添加适当的语句。(3)完成成员函数alterName(char*newName)的定义。请在注释3之后添加适当的语句。(4)完成成员函数IsEqual(char*ename)的定义,实现当name相等时返回真,否则返回假的功能。请在注释4之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。试题程序:#include#include#defineMAXLEN20classTC{private://********1********intage;public:TC(char*newName,char*newStreet,char*newCt,char*newZp,intnewAge);voidalterName(char*newName);voiddisplay();boolIsEqual(char*ename);};TC::TC(char*newName,char*newStreet,char*newCt,char*newZp,intnewAge){//********2********age=newAge;}voidTC::alterName(char*newName){//********3********}boolTC::IsEqual(char*ename){//********4********}voidTC::display(){cout<标准答案:(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处要求补充类TC的私有数据成员name、street、city、zipcode和age的定义,分别用于表示姓名、街道、城市、邮编、年龄,除年龄是整型外,其余都是char型的数据,由主函数内的对象数组可知,name、street、city、zipcode均为字符数组,故第1处应添加“charname[MAXLEN],street[MAXLEN],city[MAXLEN],zipcode[MAXLEN];”。构造函数完成成员变量的初始化,这里需要给name、street、city、zipcode赋初值,可利用字符串拷贝函数将参数字符串复制到成员变量中,第2处应添加“strcpy(name,newName);strcpy(street,newStreet);strcpy(city,newCt);strcpy(zipcode,newZp);”。函数aherName(char*newName)是改变成员变量name的值,即将参数复制给name,可利用字符串拷贝函数strcpy完成复制任务,故第3处应添加“strcpy(name,newName);”。IsEqual(char*ename)函数是比较name成员变量和参数newName是否相同,可使用字符串比较函数strcmp,第4处应添加“returnstrcmp(name,ename)==0;”。国家二级C++机试(操作题)模拟试卷第3套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为TC1TC2注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#include#includestructTC0{//******error******virtualvoidfun();};classTC1:publicTC0{voidfun(){cout<<"TC1"<标准答案:(1)应改为“virtualvoidfun()=0;”。(2)应改为“p=&obj1;”。(3)应改为“p=&obj2;”。知识点解析:如果在基类中不使用这个虚函数,其返回值也是没有意义的,它应该被定义为纯虚函数。所以虚函数fun应该是纯虚函数,也就是声明虚函数时初始化为0的函数。即第1处的“virtualvoidfun()=0;99。第2处的P为指针变量,将对象obj1赋值给p,实际上是P指向对象obj1的地址,所以将“p=*obj1;”修改为“p=&obj1;”。第3处的“p=*obj2;”修改为“p=&obj2;”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*s),使其具有以下功能:(1)把S中的大写字母转换成小写字母,把其中的小写字母转换成大写字母,并且在函数中调用写函数WriteFile()将结果输出到2.txt文件中。例如:s="helloWORLD",则结果为“s="HELLOworld"”。(2)完成函数WriteFile(char*s),把字符串输入文件中。提示:打开文件使用的第二参数为“ios_base::binary|ios_base::app”。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#inelude(iostream)#include(fstream>#include(cmath)usingnamespacestd;voidWriteFite(char*s){}voidfun(char*s){}voidClearFile(){ofstreamout1;out1.open("2.txt");out1.close();}intmain(){ClearFile();chars[102];cout<<"pleaseinputastring:"<标准答案:(1)voidWriteFile(char*s)中的命令语句:ofstreamout1;out1.open("2.txt",ios_base::binary/ios_base::app);//打开文件2.txtout1<知识点解析:在WriteFile(char*s)函数中,利用标准流ofstream实现字符串写入文件2.txt。在fun函数中,利用for循环逐个判断字符是大写还是小写。如果是大写,那么加上32实现大-g转换为小写。否则就减去32,实现小写到大写的转换。最后调用前面实现的WriteFile函数,将字符串写入文件。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整。请按要求完成下列操作,将类Date的定义补充完成。(1)定义私有数据成员year、month和day,分别用于表示年、月和日,它们都是int型的数据。请在注释1之后添加适当的语句。(2)完成默认构造函数Date的定义,使Date对象的默认值为year=1,month=1,day=1,请在注释2之后添加适当的语句。(3)完成重载构造函数Date(inty,intm,intd)的定义,把数据成员year、month和day分别初始化为参数y、m和d的值,请在注释3之后添加适当的语句。(4)完成成员函数print的类外定义,使其以“年-月-日”的格式将Date对象的值输出到屏幕上,例如1949-10-1。请在注释4之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。试题程序:#includeclassDate{public://********1********Date(intY,intm,intd){//********2********}voidprint()const;private://datamember//********3********};voidDate::print()const{//********4********}intmain(){DateOlympic_BJ(2008,8,8);Olympic_BJ.print();return0;}标准答案:(1)应添加“Date(){year=1;month=1;day=1;}”或“Date():year(1),month(1),day(1){}”。(2)应添加“year=y;month=m;day=d;”。(3)应添加“intyear,month,day;”。(4)应添加“cout<知识点解析:本题考查了类的定义。根据题意,此处应定义3个int型数据成员year、month和day。根据题意,第2处应添加默认构造函数,并初始化3个变量,这里既可以使用赋值语句来实现,也可以使用初始化列表。第3处只能通过赋值语句初始化3个成员,因为注释3位于函数中,无法在此处使用初始化列表。添加输出语句,注意题目头包含的头文件是iostream.h,不能添加std::前缀。国家二级C++机试(操作题)模拟试卷第4套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,使其输出结果为:n=0注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//********error********的下面。试题程序:#include//********error********classTC(){public://********error********void~TC(){}TC(intn){cout<<’n’<<’=’<标准答案:(1)应改为“classTC”。(2)应改为“~TC(){}”。(3)应改为“};”。知识点解析:本题第1处的“classTC()”为类的定义,根据C++中类的定义格式,类名后面是没有括号的,所以第1处应为“classTC”。第2处的“void~TC(){}”是析构函数,C++中析构函数的格式中是没有函数类型说明的,所以修改为“~TC(){}”。根据C++中类的定义,第3个标识下类结束的“}”缺少分号,即修改为“};”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数IsPalindromes(char*string)实现的功能是判定给定的字符串是否构成回文字符串,如果是则返回1,否则返回0。例如:abcdcba或者1234321都认为是回文字符串。如果串为空或一个字母时,均认为是回文字符串。注意:不能修改程序的其他部分,只能补充IsPalindromes函数。试题程序:#include#defineMAXLEN1024boolIsPalindromes(char*string){}voidmain(){charstr[MAXLEN];cout<<"请输入一行文字"<标准答案:intlen=0;for(;string[len]!=NULL;len++)//获取字符串的长度;len--;//下标从0开始到len-1for(inti=0;i(len;i++,1e13--)//第一个和最后一个比较,第二个和倒数第二个比较{if(string[i]!=string[len])//不等说明不同,返回0return0;}return1;知识点解析:本题由于字符串的长度是未知的,先利用循环求出字符串的长度,循环变量从0开始,直到数组的末尾,string[len]==NULL为循环结束条件,如此便得到了数组的长度len。知道长度后就可以判断对称位置的元素是否相同,比如第一个元素和最后一个元素,第二个元素和倒数第二个元素,如此比较下去直到到了最中间的元素为止。可以利用循环来比较是否对称,设置另一个循环变量i,i从0开始表示从数组的头部开始读数,len从数组的尾部开始读数,如果string[i]!=string[len],则跳出循环返回0,如果循环结束还没发现不同,则返回1。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整,使得程序的输出结果为21。(1)增加静态私有变量Num,类型为int,请在注释1后添加适当的语句。(2)增加静态变量Num并初始化为10,请在注释2后添加适当的语句。(3)完成静态函数get的定义,请在注释3后添加适当的语句。(4)完成对象obj对静态函数get的调用,使得输出结果为21,请在注释4后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#includeclassTC{//********1********intOwn:public:TC(inti){Own=i:}//********2********{returnNum+obj->Own;}};//********3********intmain(){TCobj(11);//********4********cout<<<标准答案:(1)应添加“staticintNum;”。(2)应添加“intTC::Num=10;”。(3)应添加“staticintget(TC*obj)”。(4)将“cout<<<知识点解析:第1处要求“增加静态私有变量Num,类型为int,”。静态变量的定义格式为static类型变量名称,本题只要在类的private区域定义int型的静态变量Num,即在第1处添加“staticintNum;”。第2处要求“增加静态变量Num并初始化为10”。第2个标识的位置在类TC的外部,在C++中,使用“::”作用域运算符声明定义的变量属于哪个类。由题干知道,Num属于类TC,根据C++的作用域运算符,在第2处添加语句“intTC::Num=10;”。第3处要求“完成静态函数get的定义”。根据第3个标识下的“returnNum+obj->Own”语句知道,get函数具有形参obj指针。obj调用Own变量,说明它是TC类型,并且静态函数的定义只要在其前面声明static就可以了,即在第3处添加语句“staticintget(TC*obj)”。第4处要求“完成对象obj对静态函数get进行调用,使得输出21到屏幕上”。程序中第4处的“cout<<<国家二级C++机试(操作题)模拟试卷第5套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,即使程序在屏幕输出以下类似内容:0012FF681OOl2FF3C50012FF6C20012FF4440012FFT030012FF4C30023FF7440012FF5420012FF7850012FF5C1006AFDCC~006AFDEF数据可能因为机器的不同,程序输出的内容会有差异。只要相差为4的连续地址即可。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#includeusingnamespacestd;intmain(){int*p,a[5]={1,2,3,4,5};double*q,b[5]={5.0,4.0,3.0,2.0,1.0};intx;P=a:q=b;//********error********for(x=0;x<=5;x++)//********error********cout<标准答案:(1)应改为“for(x=0;x(5;x++)”。(2)应改为“cout<知识点解析:本题中根据数组a、b的定义,它们都有5个元素,而第1处的“for(x=0;x<=5;x++)”循环了6次,应该是5次,所以在第1处将其修改为“for(x=0;x(5;x++)”;第2处的p变量为指针型变量,p+x为指向数组中第x个元素的地址,这里要输出的是存储单元的内容,所以使用“*”指针元素符,即修改为“cout<二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用Vc++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(intx)的定义,该函数功能是判定X的所有约数,并且在函数中调用写函数WriteFile将结果输出到2.txt文件中。例如:x=100的约数为124510202550100。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include(iostream)#include(fstream)#include(cmath)usingnamespacestd;voidWriteFile(intc){ofstreamout1;outl.open("2.txt",ios_base::binary|ios_base::app);out1<标准答案:for(inti=1;i(=x;i++){if(x%i==0)//如果x被i整除,那么i为x的约数{WriteFile(i);//将约数i存入文件}}知识点解析:本题中由1到x,循环判断其中是否有x的约数。如果x被i整除,那么i为x的约数。最后调用WriteFile函数,将约数i存入文件。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp,要求编写一个CMyShape类,含有求面积、周长等的纯虚函数,然后编写一个CRectangle类和CCircle类继承CMyShape,并实现求面积、周长的两个函数。在main函数中测试得到下面的结果:在CMyShape类构函数造内在CCircle类构造函数内在CMyShape类构造函数内在CRectangle类构造函数内myCircle:Area=314.159Girth=62.8319myRectangle:Area=900Girth=120具体要求如下:(1)定义求面积的纯虚函数,请在注释1后添加适当的语句。(2)定义求周长的纯虚函数,请在注释2后添加适当的语句。(3)请在注释3和注释4后添加适当的语句。注意:除在指定位置添加语句之外,不要改动程序中的其他内容。试题程序:#include#include#definePI3.1415926classCMyPoint{public:intx,y;CMyPoint(inttx,intty):x(tx),y(ty){}};classCMyShape{public:CMyShape(){cout<<"在CMyShape类构造函数内"<标准答案:(1)应添加“virtualdoubleGetArea()=0;”。(2)应添加“virtualdoubleGetGirth()=0;”。(3)应添加“myShape=myCircle;”。(4)应添加“myShape=myRectangle;”。知识点解析:本题在第1处声明纯虚函数,纯虚函数的定义格式为“virtual<函数类型><函数名>(<参数表>)=0”,由程序后面的函数体实现可知求面积纯虚函数的函数名称为GetArea,因此第1处应添加“virtualdoubleGetArea()=0;”。声明格式和1)相同,由求周长的函数具体实现可知该函数的名称为GetGirth,因此第2处应添加“virtualdoubleGetGirth()=0;”。主函数中定义了CMyShaPe类对象指针myShape,CCircle类对象指针myCircle,CRectangle类对象指针myRectangle。由类继承关系知,在调用子类的构造函数时,编译器会自动调用父类的默认构造函数来初始化父类,因此在实例化类CRectangle和类CCircle的实例时,抽象父类CMyShape的默认构造函数会先被调用,因此在屏幕上先输出“在CMyShape类构造函数内”,然后输出“在CCircle类构造函数内”,实例化CRectangle对象的过程也是如此。同时由纯虚函数的性质知.抽象基类不需要实现纯虚函数,它的实现是在子类中完成的,但通过周子类实例隐式转换成基类实例,可以使得基类实例具有子类实例的特性,因此可以访问子类的成员函数,myShape是基类指针,其虚函数GetArea和GetGirth没有实现,要求程序输出的面积值和周长值,只可能是myShape指向子类对象,调用子类的函数GetArea和GetGirth打印输出,显然在第3处是myShape指向子类CCirele对象,即“myShape=myCircle;”。同理第4处myShape指向子类CRectangle对象,即第4处应添加“myShape=myRectangle;”。国家二级C++机试(操作题)模拟试卷第6套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件3.cpp,其中定义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公有派生。(1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//********1********”之后添加适当的语句。(2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传入。请在注释“//********2********”之后添加适当的语句。(3)定义类A2的构造函数,该构造函数有3个整型的参数x,y和z,在构造函数中请将x赋值给数据成员c,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//********3********”之后添加适当的语句。(4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类书局成员a和b及类A2自身的数据成员c的值,上述3个值在输出时以空格隔开。请在注释“//********4********”之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。程序输出结果如下:73738注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。试题程序:#includeclassA{inta;public://********1********intgeta(){returna;}};classA1:publicA{intb;public://********2********intgetb(){returnb;}};classA2:publicA1{intc;public://********3********voidshow(:){//********4********});voidmain(){A2a(8,3,7);cout<标准答案:(1)应改为“cout<知识点解析:成员函数display打印变量a和b的值,即cout输出a和b的值,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<”不正确,第1处的语句应改成“cout<二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*str,charch)的定义,本函数采用二分法,在已按字母次序从小到大排序的字符数组str中,查找字符ch,若ch在数组中,函数返回字符ch在数组中的下标,否则返回1。二分法查找的思想是初始查找区间的下界为0,上界为len-1,查找区间的中部后,k=(下界+上界)/2;若list[k]等于ch,查找成功;若1ist[k]>ch,则新的查找区间的下界不变,上界改为k-1;否则新的查找区间的下界改为k+1,上界不变。在新区间内继续用二分法查找。注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填人所编写的若干语句。试题程序:#includeintfun(char*str,charch){}voidmain(){charstr[]={’a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’,’k’};charch;cout<<"请输入一个字符:"<>ch:cout<<"输入字符的位置是:"<标准答案:intlow=0;//初始查找区间的下界inthigh;intk;for(high=0;str[high]!=0.high++)//求字符串长度while(low(high)//循环判断字符位置{k=(low+high)/2:if(str[k]==ch)returnk;elseif(str[k]>ch)high=k-1;elselow=k+1:}if(str[low]==ch)returntow;return-1;知识点解析:本题首先初始查找区间的下界为0,然后求得字符串长度len,上界为len-1,查找区间的中部后,k=(下界+上界)/2;若tist[k]等于ch,查找成功。若list[k])ch,则新的查找区间的下界变,上界改为k-1;否则新的查找区间的下界改为k+1,上界不变。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示个人基本信息的类PInfo,但类Plnfo的定义并不完整。请按要求完成下列操作,将类Plnfo的定义补充完成:(1)定义私有数据成员bloodType用于表示血型,血型为char型的数据。请在注释1之后添加适当的语句。(2)完成构造函数的定义,要求具有默认值,默认值为身高175,体重70,血型A。请在注释2之后添加适当的语句。(3)完成类Pinfo外成员函数Setlnfo的定义。请在注释3之后添加适当的语句。(4)在主函数中调用成员函数Setlnfo,把对象d2的3个私有数据成员分别设定为身高170,体重64,血型B。请在注释4之后添加适当的语句。‘注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。试题程序:#includeclassPlnfo{private:intheight;intweight;//********1********public://********2********:height(ht),weight(Wt),bloodType(bt){};PInfo(PInfo&h1):height(h1.height),weight(h1.weight),bloodType(h1.bloodType){}intGetHeight(){returnheight;}intGetWeight(){returnweight;}intGetBloodType(){returnbloodType;}voidSetlnfo(intht,intwt,charbt);voidDisplay();};//********3********{height=ht;weight=wt:bloodType=bt;}voidPlnfo::Display(){tout<<"Humanlnfo:";eout"height<<"cm,"<标准答案:(1)应添加“charbloodType;”。(2)应添加“Plnfo(intht=175,intwt=70,charbt=’A’)”。(3)应添加“voidPlnfo::Setlnfo(intht,intwt,charbt)”。(4)应添加“h2.Setlnfo(170,64,’B’);”。知识点解析:本题第1处定义私有数据成员为char型的bloodType,故第1处应添加“charhloodType;”。构造PInfo()完成3个成员的初始化,并且带有默认值参数,默认值为身高175,体重70,血型A,由函数体语句可知参数名分别为ht、wt和bt,因此第2处应添加“Plnfo(intht=175,intwt=70,charbt=’A’)”。第3处的语句在类外完成成员函数SetInfo的定义,在类外定义成员函数的格式为“(返回值类型)<类名>::<成员函数>(<参数表>)”,故第3处应添加“voidPInfo::SetInfo(intht,intwt,charbt)”。调用函数Setlnfo需要3个参数,程序要求把对象d2的3个私有数据成员分别设定为身高170,体重64,血型为B,即把这3个值传入函数Setlnfo,因此第4处应添加“h2.SetInfo(170,64,’B’);”。国家二级C++机试(操作题)模拟试卷第7套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//********error********的下面。试题程序:#includevoidmain(){inti=0:charstr[120];cout<<"Enterastringendwith’?’."<标准答案:(1)应改为“cin.getline(str,120,’?’);”。(2)应改为“while(str[i])”。(3)应改为“if(str[i])=’a’&&str[i](=’z’)”。知识点解析:本题中要求以输入字符“?”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符个数,终止标志字符)”,所以第1处改为“cin.getline(str,120,’?’);”。第2处的“while(str)”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换。所以应该修改为“while(str[i])”。第3处"if(str[i])=’a’)”语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于’a’,但是小写字符应该是’a’到’z’,所以修改为“if(st[i]>=’a’&&str[i](=’z’)”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*data),此函数的功能是找出字符串数组中最大的ASCII值,如果有相同变量,则输出最后一个所在的位置;如果字符串为空,则返回-1;或者不存在时也返回-1。注意:不能修改函数的其他部分。计算数字如果第一个字母最大,则返回0。依次增加。试题程序:#includeintfun(char*data){}voidmain(){charsource[1024];cout<<"请输入一行英文字符串:\n";cin.getline(source,1024);cout<<"最大的字母出现在距离头部"<标准答案:intfun(char*data){intMaxPos=0;if(data==NULL)return-1:charMaxData=data[0];if(MaxData==0)return-1;for(inti=1;data[i]!=0;i++)if(data[i])=MaxData){MaxData=data[i];MaxPos=i:}returnMaxPos;}知识点解析:本题考查的是查找最大值算法。根据题意,首先检查传入参数的合法性,如不合法或为空串,则返回-1,然后通过for循环遍历整个字符串,将最大值字符保存到MaxData内,并将最大位置保存给MaxPos,最后返回MaxPos。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件3.cpp,其中定义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公有派生。(1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//********1********”之后添加适当的语句。(2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传入。请在注释“//********2********”之后添加适当的语句。(3)定义类A2的构造函数,该构造函数有3个整型的参数x,y和z,在构造函数中请将x赋值给数据成员c,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//********3********”之后添加适当的语句。(4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类书局成员a和b及类A2自身的数据成员c的值,上述3个值在输出时以空格隔开。请在注释“//********4********”之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。程序输出结果如下:73738注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。试题程序:#includeclassA{inta;public://********1********intgeta(){returna;}};classA1:publicA{intb;public://********2********intgetb(){returnb;}};classA2:publicA1{intc;public://********3********voidshow(:){//********4********});voidmain(){A2a(8,3,7);cout<标准答案:(1)“A(intx){a=x;}”。(2)“A1(intx,inty):A(y){b=x;}”。(3)“A2(intx,inty,intz):A1(y,z){c=x;}”。(4)“cout<知识点解析:本题第1处要求定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a,构造函数没有返回值类型,所以应填“A(intx){a=x;)”。第2处第3处根据继承中对象的初始化语法规则可知。第4处要求调用基类成员函数,由于都是公有继承,geta()、getb()都是自身类的公有函数,所以根据继承规则,在对象A2中,依然是公有的可以通过对象A2直接调用。国家二级C++机试(操作题)模拟试卷第8套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出为10TC1注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//********error********的下面。试题程序:#include(iostream)classTC1{public:TC1(){}//********error********private:virtual~TC1(){usingnamespacestd;cout<<"TC1"<标准答案:(1)删除“private:”语句。(2)应改为“TC2(inti)”。(3)应改为“std::cout<知识点解析:本题中第1处的“virtual~TC1()”语句是TC1析构函数,不是私有函数,所以删除“private:”。“explicitTC2(inti)”构造函数语句中的“explicit”是禁止隐式转换。程序中无法实现对类TC2的直接使用,所以这里应该将其删除。即“TC2(inti)”o在第3处实现fun函数中m_i的标准输出,即在屏幕上输出10。在程序中用到C++标准库时,要使用std标准命名空间进行限定。cout为标准库函数,所以要声明cout是在命名空间std中定义的流对象,即“std::cout<二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。函数func(intd[],intn)的功能是将长度为num的数组d中的奇数扩大1倍,并存储到数组d中。例如:2,15,6,-3,8,-11,9,24,50返回4,30,12,-6,16,-22,18,48,100将func(intd[],intnum)函数补充完整。注意:请勿改动主函数。试题程序:#includevoidfunc(intd[],intnum){}intmain(){intData[]={2,15,6,-3,8,-11,9,24,50);func(Data,9);for(inti=0;i(sizeof(Data)/sizeof(int);i++){cout<标准答案:for(inti=0;i(num;i++){if(d[i]%2!=o)d[i]=2*d[i];}知识点解析:由审题分析可知,利用循环来逐个判断d[]中的元素,d[]中元素个数为num,因此循环变量从0变化至num。在循环内,用if语句判断该元素是不是奇数,即if(d[i]%2!=0),将满足条件的d[i]扩大一倍。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示矩形的CRect类,但类CRect的定义并不完整。请按要求完成下列操作,将类CRect的定义补充完整。(1)定义私有数据成员leftPoint、topPoint、rightPoint、bottomPoint,分别用于表示矩形左上角及右下角的点的坐标,它们都是double型的数据。请在注释1之后添加适当的语句。(2)完成默认构造函数CRect的定义,指定默认实参为0,它们都是double型的数据。请在注释2之后添加适当的语句。(3)定义函数体为空的析构函数。请在注释3之后添加适当的语句。(4)在main函数中定义CRect类的实例rect2,并把rect1的值赋给rect2。请在注释4之后添加适当的语句。注意:除在指定位置添加语句之外,不要改动程序中的其他内容。试题程序:#includeclassCRect{private://********1********public://********2********//********3********voidSetPoints(double,double,double,double);voidSetLeftPoint(doublem){1eftPoint=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("<<1eftPoint<<","<标准答案:(1)应添加“doubleleftPoint,topPoint,rightPoint,bottomPoint;”。(2)应添加“CRect(doubleleftPoint=0,doubletopPoint=0,doublerightPoint=0,doublebottomPoint=0);”。(3)应添加“~CRect(){}”。(4)应添加“CRecreet2(rect1);”。知识点解析:本题在第1处完成私有数据成员leftPoint、topPoint、rightPoint、bottomPoint的定义,均为double型的变量,故第1处应添加“doubleleftPoint,topPoint,rightPoint,bottomPoint;”。构造函数完成成员变量的初始化,类CRect的默认构造函数初始化double型私有数据成员leftPoint、topPoint、rightPoint、bottomPoint为0,故第2处应添加“CRect(doubleleftPoint=0,doubletopPoint=0,doublerightPoint=0,doublebottomPoint=0);”。析构函数名和类名一致,并在前面加“~”以和构造函数区别,该析构函数体为空,故第3处应添加“~CRect(){}”,虽然该函数体为空,但“{}”必须保留。主函数中类CRect的对象rect2是通过复制构造函数将rect1的值赋值给它实现初始化的,而rect1的初始化直接调用自定义构造函数,第4处应添加“CRectrect2(rect1);”。国家二级C++机试(操作题)模拟试卷第9套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用vC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论