版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C++机试(操作题)模拟试卷46(共9套)(共27题)国家二级C++机试(操作题)模拟试卷第1套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为:sizeof(str1)=5sizeof(str2)=10sizeof(str3)=1注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。(1)不能删除assert()语句;(2)只能修改后面的数字。提示:assert()函数如果为假,则会产生一个中断异常。#include#includevoidmain(){char*str1="abc";//********error********assert(sizeof(Str1)==3);cout<<"sizeof(Str1)=5"<标准答案:(1)assert(sizeof(str1)==4);(2)assert(sizeof(str2)==10);(3)assert(sizeof(str3)==1);知识点解析:(1)assert()函数如果为假,则会产生一个中断异常。所以要让它正常执行输出结果,那么assert()函数就要为真,才不会产生中断异常。“assert(sizeof(strl)==3);”语句中“sizeof(str1)==3”为假,这个会使程序产生异常,不能正常执行。因为str1的值为abc但是它还有一个尾符,所以它的长度应该是4,而不是3,所以第1个标识下修改为“assert(sizeof(str1)==4);”。(2)同(1),str2[10]说明,str2的空间为10,第2个标识下修改为“assert(sizeof(str2)==10);”。(3)同(1),charstr3=23;语句说明23是字符,占空间为1,所以修改为“assert(sizeof(str3)==1);”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intn)的功能是在n行n列的矩阵中,每行都有最大的数,本程序求这n个最大数中的最小一个,并作为参数返回。注意:不能修改程序的其他部分,只能修改fun()函数。#include#defineN100inta[N][N];intfun(intn){}voidmain(){intn;cout<<"pleaseinputN:"<>n;for(inti=0;i>a[i][j];}cout<<"Theminofmaxnumbersis"<标准答案:introw;intmax;intmin;intcol;for(row=0;row知识点解析:(1)两层循环,内层循环求每一行最大值,外层循环求最小值。(2)求最大值,首先将最大值赋值为每行第一列的元素,然后依次循环比较。(3)将求出的第一个最大值赋值为第一个最小值,然后将以后求得的最大值依次与之比较,求出所有值的最小值。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)定义类的公有数据成员函数No、Name[32],其中No是int型的数据,Name[32]为字符型。请在注释//********1********后添加适当的语句。(2)完成函数set的定义,分别设置No和Name的值,请在注释//********2********后添加适当的语句。(3)完成函数print(),请在注释//********3********后添加适当的语句,打印的输出如下:No=111Name=Garfield(4)加缺省构造函数,设置No为0,Name为空,请在注释//********4********后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeclassTestClass{public://********1********//********2********{No=no;for(inti=0;strName[i]!=0;i++){Name[i]=strName[i];Name[i+1]=0;}}voidprint(){//********3********}TestClass(){//********4********}};intmain(){TestClassStu;stu.set(111,"Garfield");stu.print();return0;}标准答案:(1)添加语句:intNo;charName[32];(2)添加语句:voidSet(intno,char*StrName)(3)添加语句:cout<<"No="<知识点解析:(1)题目1要求“定义类的公有数据成员函数No、Name[32],其中No是int型的数据,Name[32]为字符型”。在已有程序中,类定义的public区域中,定义变量No,Name[32],即在第1个标识下添加语句“intNo;charName[32];”。(2)题目2要求“完成函数set的定义,分别设置No和Name的值”。第2个标识下说明函数set的语句中,应该包括变量no,strName的定义,然后在函数中将其值赋值给No,Name,即添加定义语句“voidSet(intno,char*strName)”。(3)题目3要求“完成函数print()”,根据输出结果,知道输出的是No和Name的值,所以这里补全cout<<"No="<国家二级C++机试(操作题)模拟试卷第2套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:Number=8注意:错误的语句在∥********error********的下面,修改该语句即可。#includeclassCMyClass{public:∥********error********void&Get(){return&Number;}voidSet(intm){Number=m;}voiddisplay(){cout<<“Number=”<标准答案:(1)void*Get()(2)添加语句:CMyClasst;(3)p=(int*)t.Get();知识点解析:程序中定义了类CMyClass,含有一个成员变量Number,Get()返回Number的地址(指针),Set(intm)函数可改变成员变量的值,display()函数在屏幕上打印Number的值。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。程序的功能是寻找1~500以内的亲和数并显示出来,函数amicableNum(intm,intn)判定两个数是否是亲和数。亲和数的定义为:两个数m和n,如果n的所有因子之和(因子除掉自身)等于m,且m的所有因子等于n,则m、n是互为亲和数。注意:不能修改程序的其他部分,只能补充amicableNum(intm,intn)函数。#includeintamicableNum(intn){intsum=0;for(inti=1;i标准答案:if(amicableNum(m)==n&&amicableNum(n)==m)return1;retumR0;知识点解析:函数amicableNum(intm,intn)判定两个数是否是亲和数,亲和数指两个数的因子(除去本身)和分别是对方,因此在判断亲和数时先求这两个数的因子和,然后比较便可知是否是亲和数。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示雇员的Employee类,但类Employee的定义并不完整。请按要求完成下列操作,将类CEmployee的定义补充完成。(1)定义私有数据成员name、street、city、zipcode和age分别用于表示姓名、街道、城市、邮编、年龄,除年龄是整型外其余都是char型的数据。请在注释∥********1********之后添加适当的语句。(2)完成默认构造函数CEmployee的定义,使其把参数传递给私有数据成员name、street、city、zipcode和age。请在注释∥********2********之后添加适当的语句。(3)完成成员函数alterName(char*newName)的定义。请在注释∥********3********之后添加适当的语句。(4)完成成员函数IsEqual(char*ename)的定义,实现当name相等时返回真,否则为假的功能,请在注释∥********4********之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include#include#deflneMAXLEN20classCEmployee{private:∥********1********intage;public:CEmployee(char*newName,zhar*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<<“”<标准答案:(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;知识点解析:程序中定义了一个表示雇员的类CEmployee,该类定义了私有数据成员name、street、city、zipcode和age分别用于表示姓名、街道、城市、邮编、年龄,同时定义了四个函数包括构造函数以及三个成员函数,分别实现更改雇员姓名,判断雇员姓名以及显示雇员信息功能。国家二级C++机试(操作题)模拟试卷第3套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:1063022注意:错误的语句在//********error********的下面,修改该语句即可。#includeclassCMyClass{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:CMyClass(){func[0]=CMyClass::Add;func[1]=CMyClass::Sub;func[2]=CMyClass::Mul;func[3]=CMyClass::Div;number=0;}intCallFunction(inti,intj){//********error********return(func[i])(j);}};Voidmain(){CMyClassmyobj;cout<标准答案:(1)typedefint(CMyClass::*FUNC)(int);(2)FUNCfunc[4];(3)return(this->*func[i])(j);知识点解析:(1)在类中定义函数指针须指定类名及指针定义运算符*,因此第1个标识下函数指针正确的定义为“typedefint(CMyClass::*FUNC)(int);”。(2)函数指针数组本身是数组类型,因此在定义时如果没有初始化,就必须指定数组大小,在本题中因为指针数组包含的指针变量需要指向四种算数运算,因此定义指针数组大小为4,即第2个标识下应改为“FUNCfunc[4];”。(3)func是指针数组,因此访问的时候需要有指针运算符“*”,第3个标识下应改成“return(this->*func[i])(j);”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分的程序。实现函数sort(intA[],intn),用冒泡法将数组排序。提示:所谓冒泡法,就是每次把相邻的两个数交换,较大的数交换到后面。这样下标从0到n-1的数与其后面相邻的数交换,可以把最大的数交换到数组的末端。进行n次下标从0到n-1的交换,则数组则会变成有序的,而且是由大到小的顺序。注意:不能修改程序的其他部分,并且不能删除其他的部分,也不能修改程序的结构。#include#defineN10voidsort(intA[N],intn){}intmain(){intA[N]={5,7,4,6,10,13,78,-4,9,20};sort(A,10);for(inti=0;i标准答案:inti,j,k,t;for(i=0;i知识点解析:(1)以数组“A[]={3,8,7,6,5,0,1,2,9,4}”为例来说明具体的排序过程,第一次选择:第一步从A[0]-A[9]中找最大值max及下标k,max=9,k=8;第二步交换a[0]与最大值a[8]的值;第一次结束后a[0]已存放了最大值,下一次比较就不必再经过它了,而从a[1]开始,如此循环。从例中可以看出10个元素要进行九次比较,n个元素要进行n-1次比较。设置两层循环,外层循环变量i从0到n-1,内层循环变量从i开始到n-1,在内层循环中找最大值,如果最大值的下标k和i不同,则交换,实现选择法排序。(2)在内层循环体内,如果最大值的下标k和i不同,则用一个临时变量记录第i个元素,然后将第k个元素赋值给第i个元素,临时变量值赋给第k个元素,如此完成两个元素的交换。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)定义类CPoint的带有两个参数的构造函数,两个变量为x、y都为int型,且缺省值为0。请在注释//********1********后添加适当的语句。(2)完成类CRectangle的构造函数,给pointl和point2进行赋值。请在注释//********2********后添加适当的语句。(3)完成类CRectangle的函数GetArea0,用来计算矩形面积。请在注释//********3********后添加适当的语句。(4)定义CRectangle类,拥有两个私有对象pointl和point2,类型为Point,请在注释//********4********后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include#includeClassCPoint{public://********1********{x=i;y=j;}intGetX(){returnx;}intGetY(){returny;}private:intx,y;};classCRectangle{public://********2********{}intGetArea(){//********3********intheight=pointl.GetY()-point2.GetY();return(width*height)?width*height:一width*height;}intGetGirth(){intwidth=abs(point1.GetX()-point2.GetX());intheight=abs(point1.GetY()-point2.GetY());return(2*(width+height));}private://********4********CPointpoint2;};intmain(){CRectanglerect(5,2,13,18);cout<标准答案:(1)添加语句:CPoint(inti=0,intj=0)(2)添加语句:CRectangle(inttop,intleft,int,right,intbottom):pointl(top,left),point2(right,bottom)(3)添加语句:intwidth=pointl.GetX()-point2.GetX();(4)添加语句:CPointpointl;知识点解析:(1)在第1个标识下添加构造函数定义,该构造带有两个参数x和y的构造函数,x、y都为int型,缺省值为0,因此第1个标识下应添加CPoint(inti=0,intj=0)。(2)第2个标识下通过Cpoint类的构造函数来完成Crectangle类成员的初始化,在函数体内没有任何函数语句,因此其初始化过程是在初始化列表里完成的,通过调用基类的构造函数来实现两个私有对象point1和point2的初始化,故第2个标识下应添加CRectangle(inttop,intleft,intright,intbottom):pointl(top,left),point2(right,bottom)。(3)面积为矩形的长宽之积,因此先计算矩形的长和宽,可由两个Cpoint对象的x坐标相减计算得到,CPoint对象的X坐标为私有成员,只能通过公有接口函数调用获得,因此第3个标识下为“intwidth=pointl.GetX()-point2.GetX0;”。(4)Crectangle类的成员变量为两个Cpoint对象成员pointl和point2,第4个标识下补充pointl的定义,故第4个标识下应添加“CPointpointl;”。国家二级C++机试(操作题)模拟试卷第4套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使得程序正常运行,并使程序输出的结果为:TestClass1TestClass2注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在∥********error********的下面。#include#includestructTestClas0{∥********error********virtualvoidfun();};classTestClassl:publicTestClass0{voidfun(){cout<<“TestClassl”<fun();∥********error********P=*obj2;P一>fun();return;}标准答案:(1)virtualvoidfun()=0;(2)p=&obj1;(3)p=&obj2;知识点解析:本题程序中的功能为输出字符串TestClassl和TestClass2。从已定源程序的main主函数开始入手,通过定义的类,实现题目中要求的输出结果。解题思路(1)如果在基类中并不使用这个虚函数,其返回值也是没有意义的,它应该被定义为纯虚函数。所以虚函数fun()应该是纯虚函数,也就是声明虚函数的时候初始化为0的函数。即第1个标识下的“virtualvoidfun()=0;”。(2)第2个标识下的p为指针变量,将对象objl赋值给p,实际上是p指向对象objl的地址,所以“p=*0bjl;”修改为“p=&obiil;”。(3)第3个标识下的“p=*ob.i2;”语句同(2),修改为“p=&obj2;”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。sum(intn)计算所有n的因子之和(不包括1和自身)。注意:不能修改程序的其他部分,只能补充sum()函数。#includeintsum(intn){)voidmain(){cout<标准答案:inta11=0;for(inti=2;i知识点解析:(1)数n的因子是指为整除n等于0的所有自然数的集合。(2)为了实现计算所有n的因子之和且不包含1和自身,函数中定义一个变量all用来保存求和结果,并为最终结果在函数结束时返回;(3)在循环中逐个寻找n的因子,为了在计算中排除掉l和n本身,因此循环变量i的变化范围为从2到n一1。(4)如果n%i==0,说明i是n的因子,因此将i加到all上。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。请完成以下部分,实现在屏幕上输出为:TestClass3TestClass2这个程序需要修改的部分,请按照以下部分实现。(1)类TestClass0不能被实例化,请定义一个纯虚函数print,在注释∥********1********后添加适当的语句。(2)类TestClassl私有虚继承类TestClass0,请在注释∥********2********后添加适当的语句。(3)类TestClass2公有继承类TestClass0,请在注释∥********3********后添加适当的语句。(4)类TestClass3公有继承类TestClass2与TestClassl,请在注释∥********4********后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。1#include2classTestClass03{4∥********1********56};7∥********2********8C1assTestClassl:9{10public:11voidprint()12{13cout<<”TestClassl”<标准答案:(1)添加语句:virtualvoidprint()=0;(2)将“classTestClasSl:”补充完整为:classTestClassl:virtualprivateTestClasS0(3)将“classTestClass2:”补充完整为:classTestClass2:publicTestClass0(4)将“classTestClass3:”补充完整为:classTestClass3:publicTestClass2,publicTestClassl知识点解析:在VC环境下打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。本题从题干要求入手,依次处理各个类,完成各个类的定义。解题思路(1)题目1要求“请定义一个纯虚函数print”。在C++中,虚函数在基类中用virtual声明成员函数为虚函数。纯虚函数是在声明虚函数时被“初始化”为0的函数,即“virtualvoidprint0=0;”。(2)题目2要求“类TestClassl私有虚继承类TestClass0”。在C++中声明一个派生类时将基类的继承方式指定为private的,称为私有继承。同(1),声明TestClassl虚继承类“:virtualTestClass0”,题目要求为私有,即“classTestClassl:virtualprivateTestClass0”。(3)题目3要求“类TestClass2公有继承类TestClass0。”同(2),公有继承是在定义一个派生类时将基类的继承方式指定为public的,称为公用继承。所以这里补全“classTestClass2:publicTestClass0”。(4)题目4要求“类TestClass3公有继承类TestClass2与TestClassl。”同(3),所以这里补全“classTestClass3:publicTestClass2,publicTestClassl”。国家二级C++机试(操作题)模拟试卷第5套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使程序正确运行,并且使程序输出的结果为:30130注意:错误的语句在//********error********的下面,修改该语句即可。#includeinta=10;ClassCObj{public:CObj(){a=b=0;}Voiddisplay(){//********error********cout<标准答案:(1)cout<a+=a;(3)a+=::a;知识点解析:(1)成员函数display()打印变量a和b的值,即cout输出a和b的值,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<”不正确,因此第1个标识下应改成cout<a+=a:”。(3)func2()函数虽然没有参数,但是成员变量a和全局变量a重名,第3个标识下“a+:a”也会有歧义,分不清楚是全局变量加倍还是类成员变量加倍或者其他情况,调用func2()函数后,输出“130”,说明a为l3,b为0,因此是成员变量与全局变量a的和赋给成员变量a,正确的写法是“a+=::a:”,“::a”表示是全局变量a。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*s1,char*s2),此函数的功能是计算s1中出现s2的个数,当不出现时,则返回0。如:s1为"1112223333aaaaeeffd"s2为"11"则返回1s2为"aa"则返回2注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#include//注意只能使用int类型,不能类型转换intfun(char*s1,char*s2){}voidmain(){chars1[1024];chars2[256];cout<<"pleaseinputastring:"<标准答案:intsize=0;//初始化字符串统计变量个数ints1len;ints2len;for(s1len=0;S1[s1lerl]!=0;s1len++);//第一个字符串循环for(s2len=0;s2[S2len]!=0;S2len++);//第二个字符串循环for(inti=0;i知识点解析:(1)size变量用来存放s1中出现s2的个数,初始值赋为0。(2)然后利用for循环对s2中的每一个字符与s1中的字符进行比较。(3)如果循环中有符合条件的字符串,就将变量size个数加1。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.epp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)定义纯虚类TestClass0,包含纯虚函数fun(),请在注释//********1********后添加适当的语句。(2)完成类TestClass1,以公有继承TestClass0,请在注释//********2********后添加适当的语句。(3)定义TestClass0对象指针P,请在注释//********3********后添加适当的语句。(4)把TestClass1的对象obj的指针赋给TestClass0指针p,请在注释//********4********后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#includeClassTestClass0{public://********1********};//********2********classTestClass1{public:Voidfun(){cout<<"fun"<fun();return0;}标准答案:(1)添加语句:virtualvoidfun()=0;(2)将“classTestClass1”补充完整为:classTestClass1:publicTestClass0(3)添加语句:TestClass0*p;(4)添加语句:p=&obj;知识点解析:(1)题目1要求“定义纯虚类TestClass0”。在C++中,虚函数在基类用virtual声明类为虚类。纯虚类是在声明虚类时被“初始化”为0的函数。所以第1个标识下应添加“virtualvoidfun()=0;”。(2)题目2要求“完成类TestClass1,以公有继承TestClass0”。公有继承是在定义一个派生类时将基类的继承方式指定为public的,称为公用继承。所以这里补全“classTestClass1:publicTestClass0”。(3)题目3要求“定义TestClass0对象指针P”。定义类的对象指针变量,一般的格式为:类名指针变量,所以这里添加“TestClass0*p;”。(4)题目4要求“把TestClass1的对象obi的指针赋给TestClass0指针p”。将指针指向的对象赋值给另一个指针,其实是将其地址指向另一个指针的地址,所以使用取地址运算符“&”,即在第四个符号下添加语句“p=&obj;”。国家二级C++机试(操作题)模拟试卷第6套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请补充程序中的丢失部分,使得程序运行。可以在修改处增加或者删除一条语句。本程序完成以下功能:(1)获得输入的两个数字x1,x2(例如x1=4,x2=2);(2)输出两个中较小的一个(例如输出2);(3)计算x1/x2如果x2等于0,返回-1(输出结果2);(4)输出x1+x2的结果(输出结果6);(5)输出x1+1的结果(输出结果5);(6)输出x2-1的结果(输出结果1)。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在∥********error********的下面。1#~nolude2voidmain()3{4intx1;5intx2;6intx3;7cout<<”pleaseinput:twonumber:”<>x1>>x2;9∥********error********10x3=(x1>x2)?x1:x2;11cout<<“Minnumberis:”<标准答案:(1)x3=(x1知识点解析:本题首先求输出两个数字中的最小值,然后计算两个数相除的值,然后求得第一个数与第二个数的和,最后输出“x1+1”和“x2—1”的值。解题思路主要是要从main()主函数入手,依次完成题干中要求的各个要求。解题思路(1)第1个标识下“x3=(x1>x2)?x1:x2;”语句是判断x1与x2其中哪个相对较小,并将其赋值给x3。条件运算符的格式:表达式1?表达式2:表达式3。执行顺序是先求解表达式1,若非则求解表达式3,此时表达式3的值就作为整个条件表达式值。所以求x1和x2中较小的一个,如果x1二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.epp。阅读下列函数说明和代码,完成空出部分的程序。实现函数sort(intA[],intn),用冒泡法将数组排序。提示:所谓冒泡法,就是每次把相邻的两个数交换,较大的数交换到后面。这样下标从0到n-1的数与其后面相邻的数交换,可以把最大的数交换到数组的末端。进行n次下标从0到n.1的交换,则数组则会变成有序的,而且是由大到小的顺序。注意:不能修改程序的其他部分,并且不能删除其他的部分,也不能修改程序的结构。#include<10Stream.h>#defineN10voidsort(intA[N],intn){}intmain(){intAIN]={5,7,4,6,i0,13,78,一4,9,20);sort(A,10);for(inti=0;i标准答案:inti,j,k,t;for(i=0;i知识点解析:(1)以数组“A[]={3,8,7,6,5,0,l,2,9,4}”为例来说明具体的排序过程,第一次选择:第一步从A[0]-A[9]中找最大值max及下标k,max:9,k=8;第二步交换a[0]与最大值a[8]的值;第一次结束后a[0]已存放了最大值,下一次比较就不必再经过它了,而从a[1]开始,如此循环。从例中可以看出10个元素要进行九次比较,n个元素要进行n-1次比较。设置两层循环,外层循环变量i从O到n.1,内层循环变量从i开始到n-1,在内层循环中找最人值,如果最大值的下标k和i不同,则交换,实现选择法排序。(2)在内层循环体内,如果最大值的下标k和i不同,则用一个临时变量记录第i个元素,然后将第k个元素赋值给第i个元素,临时变量值赋给第k个元素,如此完成两个元素的交换。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.clap。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)定义类CPoint的带有两个参数的构造函数,两个变量为x、y都为int型,且缺省值为0。请在注释∥********1********后添加适当的语句。(2)完成类CRectangle的构造函数,给pointl和pohat2进行赋值。请在注释∥********2********后添加适当的语句。(3)完成类CRectangle的函数GetArea(),用来计算矩形面积。请在注释∥********3********后添加适当的语句。(4)定义CRectanglc类,拥有两个私有对象pointl和point2,类型为Point,请在注释∥********4********后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include#includeclassCPoint{public:∥********1********{x=i;y=j,}intGetX(){returnx;}intGetY(){returny;}private:intx,y;};classCRectangle{public:∥********2********{}intGetArea(){∥********3********intheight=pointl.GetY()一point2.GetY();return(width*height)?width*height:一width*height;}intGetGirth(){intwidth=abs(pointl.GetX()一point2.GetX());intheight=abs(pointl.GetY()一point2.GetY());return(2*(width+height));}private:∥********4********CPointpoint2;};intmain(){CRectanglerect(5,2,13,18);cout<标准答案:(1)添加语句:CPoint(inti=0,intj=0)(2)添加语句:CRectangle(inttop,intleft,intright,intbottom):pointl(top,left),point2(right,bottom)(3)添加语句:intwidth:pointl.GetX()一point2.GetX();(4)添加语句:CPointDointl:知识点解析:(1)在第1个标识下添加构造函数定义,该构造带有两个参数X和Y的构造函数,X、Y都为int型,缺省值为0,因此第1个标识下应添加CPoint(inti=0,inti=0)。(2)第2个标识下通过Cpoint类的构造函数来完成Crectangle类成员的初始化,在函数体内没有任何函数语句,因此其初始化过程是在初始化列表里完成的,通过调用基类的构造函数来实现两个私有对象pointl和point2的初始化,故第2个标识下应添加CRectangle(inttop,intleft,intright,intbottom):point1(top,left),point2(right,bottom)。(3)面积为矩形的长宽之积,因此先计算矩形的长和宽,可由两个Cpoint对象的X坐标相减计算得到,CPoint对象的X坐标为私有成员,只能通过公有接口函数调用获得,因此第3个标识下为“intwidth=pointl.GetX().point2.GetX0;”。(4)Crectangle类的成员变量为两个Cpoint对象成员pointl和point2,第4个标识下补充pointl的定义,故第4个标识下应添加“CPointpoint1;”0国家二级C++机试(操作题)模拟试卷第7套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并且使程序输出的结果为:a=7,b=0a=8,b=10注意:错误的语句在//*****error******的下面,修改该语句即可。#includeclassCObj{public://*****error******friendvoidfunc(CObj&,int,int);voiddisplay(){//*****error******cout<<"a:"<标准答案:(1)添加语句:friendvoidfunc(CObj&,int);(2)cout<<"a="<知识点解析:(1)标识1处是声明一个友元函数,友元函数是在类声明中由关键字friend修饰的非成员函数,由friendvoidfunc(CObj&,int,int)可知,函数func()是CObj类的友元,由程序后面的具体实现可知该函数重载了,已经声明了友元函数friendvoidfunc(CObj&,int,int),另外一个友元函数func(CObj&obj,intt)没有声明,因此第1个标识下应添加“friendvoidfunc(CObj&,int);”。(2)display()函数打印类成员变量a和b的值,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<<<<”不正确,第2个标识下应改为“cout<<”a=”<<对象名>(<参数表>);,对象声明语句是一个完整的语句,应该以“;”结尾,因此第3个标识下应改为“CObjobj1;”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.epp。阅读下列函数说明和代码。函数show0的功能是将1、2、3、4四个数字,组成互不相同且无重复数字的四位数,并将这些数输出到屏幕,输出的内容如下:123412431324134214231432213421432314234124132431312431423214324134123421412341324213423143124321将函数show()补充完整。注意:请勿改动主函数。#includevoidshow(){}intmain(){show();return0;}标准答案:for(inti=1;i<5;i++)for(intj=1;j<5;j++)for(int1=1;1<5;1++)for(intk=1;k<5;k++){if(i!=j&&j!=k&&i!=k&&i!=1&&j!=1&&k!=1)//条件判断cout<知识点解析:(1)四重循环变量分别为i、i、l和k,分别从1变化至4,分别表示四位数的第一、第二、第三和第四位数。(2)在最内层循环内,如果i、J、k和1互不相同则i、j、k和1表示的四位数互不相同,把i、j、k和1打印在屏幕上。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成列操作,将类的定义补充完整,实现以下功能:(1)完成CBook类构造函数,对整型变量ID和作者Author进行赋值,请在注释//********1********后添加适当的语句。(2)完成类CBooks的析构函数,释放申请的内存,请在注释//********2********后添加适当的语句。(3)完成类CBooks的AddBookMember函数,请在注释//********3********后添加适当的语句。(4)完成CBooks类,用于由书的ID检索到作者的函数char*GetBookAuthor(intnID),请在注释//********4********后添加适当的语句。(5)程序的输出结果为:TomHarry注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。#include#includeclassCBook{public:intID;charAuthor[32];public:CBook(intID_Number,char*AuthorName){this->ID=ID_Number;//********1********}};classCBooks{private:classNode{public:Node*next;CBook*book;]*m_pBook;public:CBooks(){m_pBook=NULL;}~CBooks(){//********2********while(){Node*p=m_pBook->next;deletem_pBook->book;deletem_pBook;m_pBook=p;}}intAddBookMenber(intnID,char*Author){Node*p=m_pBook;Node*q=NULL;//********3********while(){if(nID==p->book->ID){return0;}q=p;p=p->next;}if(p==NULL){p=newNode;p->next=NULL;p->book=newCBook(nID,Author);}if(q==NULL){m_Book=p;}else{q->next=p;}return1;}Char*GetBookAuthor(intnID){Node*p=m_pBook;//********4********while(){if(p->book->ID==nID{returnp->book->Author;}p=p->next;}return0;}};intmain(){CBooksbooks1;books1.AddBookMenber(1,"Tom");books1.AddBookMenber(3,"Lee");books1.AddBookMenber(4,"Lily");bookS].AddBOOkMenber(5,”Harry”);cout<标准答案:(1)添加语句:strcpy(Author,Author_Name);(2)将“while()”补充完整为:while(m_pBook!=NULL)(3)将“while()”补充完整为:while(p!=NULL)(4)将“while()”补充完整为:while(p!=NULL)知识点解析:(1)第1个标识下完成CBook类的构造函数,对成员变量整ID和作者Author进行初始化,因此第1个标识下应添加“strcpy(Author,Author_Name);”,利用strcpy函数,将AuthorName数组内容拷贝到Author数组中。(2)~CBooks()为CBooks类的析构函数,由于CBooks类在运行过程中会动态申请内存空间,因此在析构函数中必须将这些内存释放。CBooks类是由Node对象组成的链表,因此可利用循环逐个搜索这个链表,逐个释放内存空间,故第2个标识下应改为while(mpBook!=NULL),在while循环体不断的搜索下一个节点直到m_pBook为空为止,删除所以节点。(3)AddBookMenber(intnID,char*Author)函数在链表的最后添加一个新的节点,因此必须先找到最后一个节点,同样利用循环寻找最后一个节点,故第3个标识下为while(P!=NULL)。(4)GetBookAuthor(intnID)返回某个Node节点的CBook对象的ID为nID的CBook对象的Author数组名,同样需要利用循环来查找各个节点CBook对象的ID是否为nID,故第4个标识下应为while(p!=NULL)。国家二级C++机试(操作题)模拟试卷第8套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:number1=4.8number2=93.6number3=0.9PRODUCT=404.352注意:错误的语句在//******error******的下面。修改该语句即可。其他的语句不能修改。#include<iostream>usingnamespacestd;intmain(){doublenumber1=4.8,number2=93.6,number3=0.9;//********error********product=number1*number2*number3;//********error********cout<<"number1="<<number1<’\t’<<"number2="<<number2<<’\t。’;//********error********cout<<"number3="<<number3<<’\t’;cout<<"PRODUCT="<<product(<endl;return0;}标准答案:(1)doubleproduct=number1*number2*number3;(2)cout<<"number1="<<number1<<’\t’<<"number2="<<number2<<’\t’;(3)cout<<"number3="<<number3<<’\t’<<endl;知识点解析:(1)C++要求变量在定义后才能使用,显然product变量没有定义,number1、number2和number3均为double型变量,product是这三个变量的乘积,因此product的数据类型是double型,因此第1个标识下应改为doubleproduct=number1*number2*number3。(2)cout流中的数据是用流插入运算符“<<”顺序加入的,第2个标识下是输出number1、number2和number3的值,各个数据之间用“<<”顺序加入,不能用“<”,第2个标识下应改为cout<<"number1="<<number1<<’\t’<<"number2="<<number2<<’\t’。(3)由于输出“PRODUCT=404.352”在“number1=4.8number2=93.6number3=0.9”下一行,因此输出“number3=0.9”后应换行,故第3个标识下应改为“cout<<"number3="<<number3<<’\t’<<endl;”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分的程序。函数func(intA[NUM],intn)实现的功能是将数组的内容进行一次重新排序。排序的方法是:给定n,则下标为i的数字与下标为n-i的数字交换。从0开始,交换N/2次,则最后的内容为排序后的结果。如果:A[8]={1,2,3,4,5,6,7,8},n=6,则结果:A[8]={7,6,5,4,3,2,1,8}。注意:不能修改其他代码。#include<iostream.h>#defineNUM8voidfunc(intA[NUN],intn){}intmain(){intA[NUN]={i,2,3,4,5,6,7,8};func(A,6);for(inti=0;i<sizeof(A)/sizeof(int);i++){cout<<A[i]<<’’;}cout<<endl;return0;}标准答案:for(inti=0;i<n/2;i++){inttemp=A[i];//交换A[i]=A[n-i];A[n-i]=temp;}知识点解析:(1)用循环来实现该过程,题目要求从0开始,交换N/2次,因此循环变量i的范围从0变化到N/2。(2)下标为0的元素与下标为n的元素交换,下标为1的元素与下标为n-1的元素交换,依此类推,在循环体内,用一个临时变量记录第一个元素,然后将第二个元素赋值给第一个元素,临时变量值赋给第二个元素,如此完成两个元素的交换。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:(1)声明类objAl,请在注释//********1********后添加适当的语句。(2)为类oNA0增加友元函数func(),请在注释//********2********后添加适当的语句。(3)为类obiAl增加友元函数func(),请在注释//********3********后添加适当的语句。(4)函数func()返回obiA1对象中的变量和obiA0的静态变量的乘积,请在注释//********4********后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#include<iostream.h>//********1********classobjA0{private:staticintmA0;//********2********};intobjA0::m_A0=10;classobjA1{private:intm_A1;//********3********public:objAl(inti){m_A1=i;}};intfunc(objAl&obj){//********4********}intmain(){objA1obj0(10);cout<<func(obj0)<<endl;return0;}标准答案:(1)添加语句:classobjAl;(2)添加语句:friendintfunc(objAl&obj);(3)添加语句:friendintfunc(objAl&obj);(4)添加语句:returnobj.mA1’objA0::mA0;知识点解析:(1)类的声明格式为:“class<类名>:”,因此第1个标识下应添加“classobjAl;”。(2)按照友元的定义格式,友元函数是在类声明中由关键字friend修饰的非成员函数,func函数在类外部给出了具体的实现形式,即“intfunc(objAl&obi)”,因此第2个标识下应添加“friendintfunc(objAl&obj);”,这里参数是objAl类对象obi。(3)第3个标识下和题目2要求一样,均是声明友元函数,因此第2标识下应添加“friendintfunc(obiAl&obj);”。(4)通过参数obj对象可以直接访问obi.mA1,obiA0的静态变量m_A0是所有对象的共享成员,其访问形式为:objA0::m_A0,因此第4个标识下应添加“returnobi.m_A1*ob{A0::mA0;}”。国家二级C++机试(操作题)模拟试卷第9套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC6打开考生文件夹下的源程序文件NOdil.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为:从键盘输入一个字符串,并将结果保存到文件modi1.txt中。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在∥********error********的下面。#include#include∥********error********usingstd;voidWriteFile(char*s){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅行活动策划方案6(3篇)
- 生日活动策划方案评价(3篇)
- 红色儿歌活动方案策划(3篇)
- 2025年企业财务管理与成本分析
- 2025年高职园林(园林工程造价)试题及答案
- 2025年中职工程计价管理(管理技术)试题及答案
- 2025年高职食品科学与工程技术(食品加工工艺)试题及答案
- 2025年大学广播电视编导(广播电视编导)试题及答案
- 2025年大学(中西医临床医学)中西医结合信息学试题及答案
- 2025年高职(宠物临床诊疗技术)宠物疾病诊断阶段测试题及答案
- 2026年宁夏贺兰工业园区管委会工作人员社会化公开招聘备考题库带答案详解
- 房地产售后服务及质量保证措施
- 国有企业采购管理规范 T/CFLP 0027-2020
- 国开2023年企业法务形考任务1-4答案
- 感应加热器安全操作规程
- 商业地产行业商业地产投资机会
- 两轮车控制器行业报告
- JSA临时用电作业安全分析表
- 2015-2022年北京卫生职业学院高职单招语文/数学/英语笔试参考题库含答案解析
- 赛肤润常见临床应用2010年
- 提高铝模板施工质量合格率
评论
0/150
提交评论