![国家二级C++机试(操作题)模拟试卷2(共25题)_第1页](http://file4.renrendoc.com/view8/M00/3B/3C/wKhkGWbljFSATincAAKzrrTw0CE792.jpg)
![国家二级C++机试(操作题)模拟试卷2(共25题)_第2页](http://file4.renrendoc.com/view8/M00/3B/3C/wKhkGWbljFSATincAAKzrrTw0CE7922.jpg)
![国家二级C++机试(操作题)模拟试卷2(共25题)_第3页](http://file4.renrendoc.com/view8/M00/3B/3C/wKhkGWbljFSATincAAKzrrTw0CE7923.jpg)
![国家二级C++机试(操作题)模拟试卷2(共25题)_第4页](http://file4.renrendoc.com/view8/M00/3B/3C/wKhkGWbljFSATincAAKzrrTw0CE7924.jpg)
![国家二级C++机试(操作题)模拟试卷2(共25题)_第5页](http://file4.renrendoc.com/view8/M00/3B/3C/wKhkGWbljFSATincAAKzrrTw0CE7925.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C++机试(操作题)模拟试卷2(共9套)(共25题)国家二级C++机试(操作题)模拟试卷第1套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程序运行有问题,请改正main()函数中的错误,使该程序的输出结果正确。程序输出:88注意:错误的语句在/********found********/的下面。修改该语句即可,其他的语句不能修改。试题程序:#includeclassC0{public:/********error********/staticintn=0:C0(){n++:}~C0(){n--;}};/********error********/intC0::n;voidmain(){C0obj;C0obj2[7];C0*c=NULL;c=&obj:/********error********/cout<标准答案:(1)“staticintn=0”应改为“staticintn;”。(2)“intCO::n;”应改为“intCO::n=0;”。(3)“cout<<@C@n<n<知识点解析:本题要在屏幕上输出两个字符,首先要静态变量初始化,第1处应改为“staticintn;”,第2处要给n赋值,第3处输出时引用C的对象,应改为“cout<n<二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intn)的功能是在n行n列的矩阵中,每行都有最大的数,本程序求这n个最大数中的最小一个,并作为参数返回。注意:不能修改程序的其他部分,只能修改fun函数。试题程序:#include#defineN100inta[N][N];intfun(intn){}voidmain(){intn:cout<<"pleaseinputN:"<>n;for(inti=0;i(n;i++)for(intj=0;j>a[i][j];}cout<<"TheminOfmaxnumbersis"<标准答案:introw;intmax;intmin;intcol;for(row=0;row(n;row++)//外循环求行最大值中的最小值{for(max=a[row][0],col=l;col知识点解析:本题有两层循环,内层循环求每一行的最大值,外层循环求最小值。求最大值,首先将最大值赋值为每行第一列的元素,然后依次循环比较。将求出的第一个最大值赋值为第一个最小值,然后将以后求得的最大值依次与之比较,求出所有值的最小值。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。(1)基类People完成打印功能,定义其中的打印函数为虚函数,请在注释1后添加适当的语句。(2)类Boy继承于People,在构造函数中设置性别为1,请在注释2后添加适当的语句。(3)类Girl继承于People,在构造函数中设置性别为0,请在注释3后添加适当的语句。(4)实现函数fun,用于传递不同的类型,打印出性别,请在注释4后添加适当的语句。输出的内容如下:Sex=BoySex=Girl注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。试题程序:#includeclassPeople{public://********1********voidprint(){}intsex;};classBoy:publicPeople{publictBoy(){//********2********}voidprint(){cout<<"BOy"<标准答案:(1)将“voidprint(){};”补充完整为“virtualvoidprint(){};”。(2)应添加“sex=1;”。(3)应添加“sex=0;”。(4)应添加“voidfun(People&p)”。知识点解析:第1处要求“基类People完成打印功能,定义其中的打印函数为虚函数”。虚函数是函数的一种,定义虚函数,在函数名前声明virtual就可以了,所以将第1处的“voidprint(){}”语句修改为“virtualvoidprint(){}”。第2处要求“类Boy继承于People,在构造函数中设置性别为1”。基类People中变量sex用来存放性别,Boy继承People,所以Boy中性别的变量可以使用基类中的sex变量,设置性别为1,即“sex=1;”。第3处要求“类Girl继承于People,在构造函数中设置性别为0”。在第3处添加语句“sex=0;”。第4处要求“实现函数fun,用于传递不同的类型,打印出性别”。根据“p.print();”语句知道,fun函数的形参为指针p,由于它调用了基类People中的成员函数print,所以p的基类为People,即添加函数fun的定义为“voidfun(People&p)”。国家二级C++机试(操作题)模拟试卷第2套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正其中的错误,使程序正确运行,并且使程序输出的结果为OK注意:错误的语句在//******error******的下面,修改该语句即可。试题程序:#includeclassTC{public:TC(){a=b=0:}private:inta,b;};classTC1:publicTC{public:TC1(){}//******error******virtualvoidfunc();};classTC2:publicTC1{public:TC2(){a=0;b=0;}voidfunc(){//******error******cout<<"OK”rune();}标准答案:(1)应改为“virtualvoidfunc()=0;”。(2)应改为“cout<<"OK"<知识点解析:本题中TC1类中的func函数是纯虚函数,纯虚函数的定义格式为virtual(函数类型)(函数名)(<参数表>)=0”,因此第1处的语句应为“virtualvoidfunc()=0;”。func函数没有参数表。编译程序后发现第2处的语句有错误,cout流中的数据是用流插入运算符“<<”顺序加入的,因此“<”不正确,应改成“cout<<"OK"<二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC6打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数sum(intn)返回1,2,3,…,n的和。其中n大于0。程序要求使用递归实现上述功能。注意:不能修改程序的其他部分,只能补充sum函数。试题程序:#include#include(cmath)intsum(intn){}voidmain(){tout<<"1+2+3+…+100="<标准答案:return(n==1)?1:n+sum(n-1);知识点解析:本题主要考查三目运算符?:的使用和递归函数的编制。程序功能是计算前n个自然数的和,n为参数。程序的运算过程如下,不是一般性,假设n为3,首先执行sum(3),因为3不等于1,所以return语句返回的值为3+sum(3-1),然后执行sum(3-1)即sum(2),2不等于1,所以return语句返回的值为2+sum(2-1),然后执行sum(2-1)即sum(1),因为1等于1,所以return语句返回的值为1,即问号后的值,所以最终结果为3+2+1=6,而题中n为100,所以结果为5050。国家二级C++机试(操作题)模拟试卷第3套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为sizeof(s1)=5sizeof(s2)=10sizeof(s3)=1注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。(1)不能删除assert()语句。(2)只能修改后面的数字。提示:assert函数如果为假,则会产生一个中断异常。试题程序:#include#includevoidmain(){char*s1="abe";//******error******assert(sizeof(s1)==3);cout<<"sizeof(s1)=5"<标准答案:(1)应改为“assert(sizeof(s1)==4);”。(2)应改为“assert(sizeof(s2)==10);”。(3)应改为“assert(sizeof(s3)==1);”。知识点解析:assert函数如果为假,则会产生一个中断异常。所以要让它正常执行输出结果,那么assert函数只有为真,才不会产生中断异常。“assert(sizeof(s1)==3);”语句中“sizeof(s1)==3”为假,这会使程序产生异常,不能正常执行。因为str1的值为abc,但是它还有一个尾符,它的长度应该是4,而不是3,所以在第1处修改为“assert(sizeof(s1)==4);”。str2[10]说明,str2的空间为10,在第2处修改为“assert(sizeof(s2)==10);”。charstr3=23;语句说明23是字符,所占存储空间为1,所以修改为“assert(sizeof(s3)==1);”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intN[4])的功能是用4个数字,组成互不相同且无重复数字的3位数,并将满足所有条件的数字输出到屏幕,并且每输出一个3位数就换一行。程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是0,则也去掉。试题程序:#includevoidfun(intN[4]){}intmain(){intN[4]={1,2,3,0);fun(N);return0;}标准答案:inti,j,k;for(i=0;i<4;i++)//百位循环{for(j=0;j(4;j++)//十位循环for(k=0;k(4;k++)//个位循环{if(i!=j&&j!=k&&k!=i&&N[i]!=0)//当三位数不同,并且百位不为0{cout<知识点解析:本题利用3层循环,对3位数字是否相同进行判断。如果3位数不同,并且百位不为0,那么依次输出这3位数,即由3位数组成的数字。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整,使其输出的结果为TCATCBTCC(1)完成类B虚继承于A,请在注释1后添加适当的语句。(2)完成类C虚继承于A,请在注释2后添加适当的语句。(3)完成类D继承于B,C,请在注释3后添加适当的语句。(4)函数fun通过调用基类的fun,完成所输出的内容,请在注释4后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#includeclassTCA{public:voidfun(){cout<<"TCA"<标准答案:(1)将“classTCB:”补充完整为“classTCB:virtualpublicTCA”。(2)将“classTCC:”补充完整为“classTCC:virtualpublicTCA”。(3)将“classTCD:”补充完整为“classTCD:publicTCB,publicTCC”。(4)应添加“TCA::fun();TCB::fun();TCC::fun();”。知识点解析:本题中第1处要求“完成类B虚继承于A”。在C++中,声明虚基类的一般形式为:class派生类名:virtual继承方式基类名,由题目知道TCA为基类,TCB为派生类,所以第1处的语句修改为“classTCB:virtualpublicTCA”。根据第2处和第3处的要求将标识2和3下的语句修改为“classTCC:virtualpublicTCA”和“classTCD:publicTCB,publicTCC”。第4处要求“函数fun通过调用基类的fun,完成所输出的内容”。在C++中调用基类的成员函数,要使用作用域限定符“::”,类名A::函数fun,就是调用类A的函数fun,根据题目中的要求补全对类TCA、TCB以及TCC中的fun函数,即“TCA::fun();TCB::fun();TCC:!fun():”。国家二级C++机试(操作题)模拟试卷第4套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为150200注意:错误的语句在//******error******的下面,修改该语句即可。提示:定义Numl为一个整型数据位长的变量。试题程序:#include//********error********struct{//********error********intNum1:1;intNum2:}MyStruct;voidmain(){MyStructmstr;mstr.Num1=150:mstr.Num2=15;//********error********int*ptr=&mstr.Num1;cout<<*ptr<标准答案:(1)“typedefstruct”。(2)“intNum1:32;”或“intNum1;”。(3)“int*ptr=(int*)&mstr;”。知识点解析:第1处是定义结构体,结构体定义的一般形式为struct(结构体名){<成员列表>}<变量名列表>;程序当中定义结构体名放在后面,MyStruct为结构体变量类型,相当于typedef为已有的类型定义一个新的类型,第1处应改为“typedefstruct”。第2处是定义Num1为一个整型数据变量,整型数据位数为32(4字节),因此第2处应改成“intNum1:32;”或“intNum1;”。ptr为整型数据指针,mstr为MyStruct类型结构变量,两者类型不一致应该做强制类型转换,第3处应改成“int*ptr=(int*)&mstr;”,表示将mstr的地址给ptr,ptr指向MyStruct的第一个域Numl,Numl也是整形,类型一致,故可通过ptr指针来改变Num1的值。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intn)的功能是实现对一个整数的加密,具体的加密方法是一个4位长的整数,用每位数字加上3然后除以9的余数代替该数字,再将第1位和第4位交换,第2位和第3位交换,然后返回得到的密码。程序输出结果为18642075注意:不能修改其他部分的代码。试题程序:#include#include(cmath)intfun(intn){}intmain(){inti=1357;cout<标准答案:inti,a[4],t;a[0]=n%10;//取整型n的第1位数字a[1]=n%100/10;//取整型n的第2位数字a[2]=n%1000/100;//取整型n的第3位数字a[3]=n/1000;//取整型n的第4位数字for(i=0;i<=3;i++)//每位数字加3,取余{a[i]+=3;a[i]%=9;}t=a[0];//根据加密算法交换a[0]=a[3];a[3]=t;t=a[1];a[1]=a[2];a[2]=t;returna[3]*1000+a[2]*100-1-a[1]*10+a[0];//重组,返回加密数字知识点解析:本题首先取得要加密整数的每一位数字,并存入数组。根据加密算法,利用循环实现每位数字加3,再除以9取余。根据加密算法进行数字交换,最后重组,返回密码。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示坐标的类TC1,但类TC1的定义并不完整,按要求完成下列操作,将类的定义补充完整。(1)声明TC2类为TC1类的友元类,请在注释1后添加适当的语句。(2)完成类的构造函数,分别对成员变量赋值,请在注释2后添加适当的语句。(3)完成类的构造函数,分别对成员变量赋值,请在注释3后添加适当的语句。(4)完成计算平面上两点之间距离的函数JuL,计算的方法为X坐标之差的平方与Y坐标之差的平方之和的开方。请在注释4后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。试题程序:#include#include(cmath)usingnamespacestd;classTC1{//********1********public://********2********{X=a;Y=b:}//********3********{X=a:Y=0;}voidprint(){cout<<"x="<标准答案:(1)应添加“friendclassTC2;”。(2)应添加“TC1(floata,floatb)”。(3)应添加“TC1(floata)”。(4)应添加“result=sqrt((p.X-q.X)*(p.X-q.X)+(P.Y-q.Y)*(p.Y-q.Y));”。知识点解析:本题中第1处要求“声明TC2类为TC1类的友元类”。C+4-中声明友元类的一般形式为“friend类名;”,所以这里补全“friendclassTC2;”。第2处要求“完成类的构造函数,分别对成员变量赋值”。程序中TC1类的构造函数缺少定义,构造函数首部的一般格式为构造函数名(类型1形参1,类型2形参2,……),所以在第2处补全“TC1(floata,floatb)”。第3处要求“完成类的构造函数,分别对成员变量赋值”。同理,第3个标识下补全“TC1(floata)”。第4处要求“完成计算平面上两点之间的距离函数JuL”。题目中已经给出了计算方法,X坐标之差的平方与Y坐标之差的平方之和的开方。利用C++中的开方函数sqrt补全函数中的两点之间的距离。即“result=sqrt((p.X-q.X)*(p.X-q.X)+(p.Y-q.Y)*(p.Y-q.Y));”。国家二级C++机试(操作题)模拟试卷第5套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用Vc++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在//******error******的下面,修改该语句即可。试题程序:#include//******error******voidmain{//******error******intm=0142;//******error******intn=0X27:intq=32;cout<标准答案:(1)“voidmain()”。(2)“intm=0144;”。(3)“intn=0X25;”或“intn=0x25;”。知识点解析:本题主要考查了主函数定义及不同进制之间的转换,包括十进制到八进制,十进制到十六进制。主函数定义的定义形式为“main()”,函数名之后必须是一对括号,因此第1处应改为“voidmain()”。cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发现变量的初值不正确,十进制的100对应八进制的144,十进制的37对应十六进制的25,因此2和3应分别改成“intm=0144;”,“intn=0X25;”或“intn=0x25;”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(intx),该函数的功能是将X的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile将结果输出到2.txt文件中。例如x=6,6的二进制数为110,则输出到屏幕的数为110。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include(iostream)#include(fstream)#include(cmath)usingnamespacestd;voidWriteFile(char*str){ofstreamout1;out1.open("2.txt",ios_base::binary|ios_base::app);for(inti=0;str[i]!=0;i++)out1.put(str[i]);out1.close();}voidfun(intx){}voidClearFile(){ofstreamout1;out1.open("2.txt"):out1.close();}intmain(){ClearFile();fun(13);return0;}标准答案:charstr[32];inti;for(i=30;i>=0;i--)//计算二进制{if(x%2)str[i]=’1’;//求余,如果余不为零字符串str第i位为1elsestr[i]=’0’;//否则为0x>>=1:if(!x)break;}str[31]=’\0’;//串加尾符cout<<&str[i]<知识点解析:本题要求定义存放二进制的字符串str。利用for循环对十进制数字x进行取余运算,直到余数为0结束。如果取余结果为0,则二进制字符串这个字符位的值为0,否则为1。调用WriteFile,将运算结果存入文件。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用Vc++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。(1)完成TC的构造函数,请改正注释1后的错误。(2)完成func函数定义,请改正注释2后的错误。(3)初始化CmyClass的成员变量Num3为4,请改正注释3后的错误。(4)完成func函数,请改正注释4后的错误。输出的结果为Num1=12Num2=18Num3=16Num1=4Num2=2Num3=19注意:除在指定位置添加语句之外,不要改动程序中的其他内容。试题程序:#includeclassTC{public://********1********TC(inti,intj){Num1=i:Num3+=i:}voiddisplay(){cout<<"Num1="<标准答案:(1)将“TC(inti.intj)”补充完整为“TC(inti,intj):Num2(j)”。(2)应添加“friendvoidfunc();”。(3)应添加“intTC::Num3=4;”。(4)将“obj.AddNum()”补充完整为“obj.AddNum(2);”。知识点解析:本题在第1处完成类的构造函数初始化类的成员变量,常数据成员也必须初始化,并且不能被更新,常数据成员的初始化只能通过构造函数的成员初始化类表进行,因此第1处的语句应为“TC(inti,intj):Num2(j)”,i用来初始化Num1和Num3,j初始化Num2。第2处完成func的函数定义,由审题分析可知,函数fune为类的友元,故第2处的语句应为“friendvoidfunc();”。第3处的语句是静态成员的初始化,静态数据成员的初始化格式为“(数据类型)(类名)::(静态数据成员)一(初始值)”,因此第3处的语句应为“intTC::Num3=4;”。成员函数AddNum带有一个整型参数,因此调用此函数时必须有参数传入,可由程序运行结果分析得知传入的参数值的大小。在fun函数内,定义TCobj(1,2)后,ohj.Num1=1,obj.Num2=2,Num3=16+1=17,obj.Num1=4,Num1为4,obj.Num2为常数据成员,其值不会改变,N用AddNum函数后调用显示函数显示成员变量值,可知Num3为19,因此AddNum()的参数为19-17=2,即第4.处的语句应为“ohj.AddNum(2):”。国家二级C++机试(操作题)模拟试卷第6套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为m=-10n=-10p=0q=-10z=A注意:错误的语句在//******error******的下面,修改该语句即可。试题程序:#includevoidmain(){doublem=10:floatn=10;boolp=1;intq=10;charz=’a’;m=-m://******error******n=~n://******error******p=-p;//******error******q=~q0z=z-32:cout<<"m="<标准答案:(1)“n=-n;”。(2)“p=!p;”。(3)“q=-q;”。知识点解析:由题目要求的运行结果可知,第1个标识和第3处的语句是对变量n和q取反,求一个正数的相反数可以通过算数运算符“-”得到,第1处和第3处的语句应分别改为“n=-n;”和“q=-q;”,即只需要通过负号运算就可以实现。从题目要求输出的结果来分析,第2处的语句是对逻辑变量p取反,对一个逻辑变量求反,应该用取反运算符“!”,第2处的语句应改为“p=!p;”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。完成函数fun(char*s1,char*s2)的空出部分。函数fun(char*s1,char*s2)的功能是将在字符串s1中下标为偶数的字符,紧随其后重复出现一次,放在一个新串s2中,s2中字符按原字符串中字符的顺序排列。(注意0为偶数)例如:当s1中的字符串为“abcdef”时,s2中的字符串应为“aaccee”。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includevoidfun(char*s1,char*s2){}voidmain(){chars1[100],s2[100];cout<<"Pleaseenterstringstring:"<标准答案:inti;for(i=0;s1[i]!=0;i++)//循环判断每一个字符{if(i%2==0)//判断字符串中下标为偶数位置{s2[i]=s1[i];s2[i+1]=s1[i];s2[i+2]=’\0’;//新串添加尾符}}知识点解析:判断一个字符串中的某一字符下标i是否为偶数,可用“i%2==0”来判断。对串s1中各个字符串逐个进行考查,满足条件的字符就顺序放在新串s2中,否则就不存放。所有字符处理完成后,记得在新串s2的末尾加上结束符“’\0’”。三、综合应用题(本题共1题,每题1.0分,共1分。)3、用VC++6.0打开考生文件夹下的源程序文件3.cpp,这个工程完成输出到屏幕一些特定的信息,但工程有错误或者不完整,请完成以下功能:(1)初始化Num2的值为j,请在注释1后添加适当的语句。(2)补充全局函数fun使之能够调用类TC的成员变量,请在注释2后添加适当的语句。(3)初始化静态变量,请在注释3后添加适当的语句。(4)修改注释4后的语句。使得程序输出以下内容:Num1=7Num2=12Num3=-7Num1=6Num2=9Num3=-17注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。试题程序:#includeclassTC{public://********1********TC(inti,intj){Num1=i:Num3-=i:}voidPrint(){cout<<"Num1="<标准答案:(1)“TC(inti,intj)”应改为“TC(inti,intj):Num2(j)”。(2)应添加“friendvoidfun();”。(3)应添加“intTC::Num3=0;”。(4)“obj.Add();”应改为“obj.Add(5);”。知识点解析:本题考查了构造函数初始化列表、声明友元函数、初始化静态成员变量。第1处应该添加初始化Num2成员的语句,由于该成员为常成员,所以只能通过初始化列表初始化。第2处应添加将fun函数声明为TC类友元的语句。静态成员变量需要在类外初始化,就像定义类的成员函数一样。可以将静态成员变量看成全局变量。Add函数需要一个int型参数,从Add函数的定义来看,它将增加形参i的值。由于main函数中先调用了一次Print成员函数,已经输出了3行数据,然后再调用fun函数的,所以fun函数中调用Print是输出后3行数据。Num3在第1次输出时值为10,fun函数中创建obj对象时,又让其增加1,而希望它最终的值是16,所以不难得知,Add()中应传入5才能达到目的。国家二级C++机试(操作题)模拟试卷第7套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,使它能运行正确的结果。注意:不要改动其他语句,不得增行或删行,也不得更改程序的结构!本程序要求屏幕输出:i=12345注意:语句在/********error********/的下面。修改该语句即可,其他的语句不能修改。试题程序:#include/********error********/classTC(){public:/********error********/void~TC(){}TC(inti){tout<<’i’<<’=’<标准答案:(1)“classTC()”应改为“classTC”。(2)“void~TC(){}”应改为“~TC(){}”。(3)“}”应改为“};”。知识点解析:本题考查了考生对类的定义了解的情况。类定义类名后不能有括号,所以第1处应该是“classTC”。类的析构函数不能有返回类型,所以应改为“~TC(){}”。最容易忽略的地方,就是类定义之后必须跟一个分号。因为类的定义属于类型定义语句,就好像定义一个结构、用typedef关键字定义一个类型的别名一样,其后都要跟语句结束标志“;”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。函数num(char*str)用于返回字符串中非数字的个数。例如:abcl23abc45返回值为:6将函数num补充完整。注意:请勿改动主函数。试题程序:#includeintnum(char*str){}intmain(){charstr[1024];cout<<"pleaseinputastring:"<标准答案:intnumber=0:for(inti=0;str[i]!=0;i++)if(str[i]>’9’||str[i](’0’)//非数字字符number++:returnnumber:知识点解析:利用循环搜索数组str中的元素,循环变量从0开始,直到str[i]=0(到了字符数组末端),不断从str中读取元素。每读到一个元素就判断是否是非数字字符,即满足条件“str[i]>’9’||str[i](’0’”的字符为非数字字符,非数字字符个数加1,循环结束就得到了非数字字符的个数。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp,阅读下列程序说明和代码,功能如下:从屏幕输入数字,然后由大到小插入指定的链中。当输入0时,表示输出的数据已经输入完成,把数据打印到屏幕,并释放内存。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。(1)在父结点的Next中保存新插入的结点的指针,请在注释1后添加适当的语句。(2)把pNext的子结点赋给pNext本身,请在注释2后添加适当的语句。(3)判定p的子结点不为空,如果不为空,则打印p中的数据到屏幕,请在注释3后添加适当的语句。(4)用t1保存动态申请内存结点的链表头,请在注释4后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。试题程序:#includeclassTC{public:TC(intdata=0){this->data=data;this->next=NULL;}intdata:TC*next:};voidInsert(TC*p,intdata){TC*temp=newTC(data);TC*pParent=p;TC*pNext=p->next;while(pNext){if(data)pNext->data){//********1********temp->next=pNext:return:}else{pParent=pNext://********2********}}if(pNext==NULL){pParent->next=temp;return:}}voidprintf(TC*p){//********3********while(){cout<>data;if(data==0)break;Insert(&head,data);}while(1);printf(&head);Delete(&head);return;}}标准答案:(1)应添加“pParent->next=temp;”。(2)应添加“pNext=pNext->next;”。(3)将“while()”补充完整为“while(p->next!=NULL)”。(4)将“TC*t1=;”补充完整为“TC*t1=p->next;”。知识点解析:本题第1处要求“在父结点的Next中保存新插入的结点的指针”。对于指针的操作,pParent->next为pParent的子结点,在父结点的Next中保存新插入的结点的指针,即“pParent->next=temp;”。第2处要求“把pNext的子结点赋给pNext本身”。pNext->next为pNext的子结点,把pNext的子结点赋给pNext本身,即“pNext=pNext->next;”。注释3下是判定p的子结点不为空。p的子结点是p->next。程序中的“while()”缺乏p的子结点不为空的判断条件,所以修改为“while(p->next!=NULL)”。第4处要求“用t1保存动态申请内存结点的链表头”。p为链表,p->next为链表头。程序中的语句“TC*t1=:”中t1沿有被赋值,所以修改为“TC*t1=p->next;”国家二级C++机试(操作题)模拟试卷第8套一、基本操作题(本题共1题,每题1.0分,共1分。)1、使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使得程序输出:Hellotest注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//********error********的下面。试题程序:#include(iostream)//********error********templatevoidfun(boolt){std::cout<<<t?"Hello":"Hi")<标准答案:(1)应改为“template”。(2)删除“template(bool)”。(3)应改为“boolflag=true;”。知识点解析:C++中的模板类格式为tempiate,所以第1处的语句“template”应修改为“template”。在第2处的“Voidfun(bool)”函数中,t变量为布尔型变量,是C++中的基础变量,不是模板变量,没有使用到模板类,所以删除第2处的模板类型定义语句。第3处的“boolflag=TRUE;”是声明布尔型变量flag,并将其值赋为逻辑真。而TRUE并不是合法值,C++中区分大小写,所以逻辑真值应为true,即“boolflag=true;”。二、简单应用题(本题共1题,每题1.0分,共1分。)2、使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*strl,char*str2),此函数的功能是计算strl中出现str2的个数,当不出现时,则返回0。如strl为“asdfsfdfg”str2为“sf”则返回1str2为“df”则返回3注意:不能修改函数的其他部分。试题程序:#include//注意只能使用int类型,不能类型转换intfun(char*strl,char*str2){}voidmain(){charstrl[1024];charstr2[256];cout<<"pleaseinputastring:"<标准答案:intfun(char*str1,char*str2){intsize=0;intstr1len;intstr2len;for(str1len=0;strl[str1len]!=0;str1len++);for(str2len=0;str2[str2len]!=0;str2len++);for(inti=0;i(strllen;i++){intj=0;for(;j知识点解析:本题考查的是字符串查找算法。首先求出两个字符串的长度,然后循环遍历第1个字符串,再使用一个内循环遍历第2个字符串,判断两个字符串相应位置是否一致。如果遍历完第2个字符串,所有位置都一致,则记数值size增1,即找到一个子串。三、综合应用题(本题共1题,每题1.0分,共1分。)3、使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。(1)定义私有成员变量year、month、day,分别表示年、月、日,类型为int。请在注释1后添加适当的语句。(2)完成构造函数,分别给year、month、day赋值,请在注释2后添加适当的语句。(3)完成重载符号“+=”的定义,请在注释3后添加适当的语句。(4)完成函数print打印函数,如2005年1月5日到屏幕和文件out3.txt格式相同,请在注释4后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。试题程序:#include#include(fstream)#include(iomanip)#include(cmath)usingnamespacestd;voidWr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度装配式商业综合体主体结构劳务分包合同规范
- 2025年果园场农业科技研发与应用合作合同
- 2025年度智能建筑一体化工程分包施工合同
- 2025年度5G通信网络合股投资协议
- 2025年度智慧城市建设合同补充协议
- 2025年度创业孵化器股权投资与转让协议
- 2025年度绘画技能培训课程合同
- 2025年度疫苗生产原料采购合同
- 2025年度婚庆酒席场地租赁及婚庆车队租赁服务合同
- 2025年度金融数据共享保密协议范本
- 钢结构考试试题(含答案)
- 彭大军桥牌约定卡
- 新能源整车装配工艺培训的资料课件
- 房车露营地的研究课件
- 园艺疗法共课件
- DB33T 628.1-2021 交通建设工程工程量清单计价规范 第1部分:公路工程
- 医院-9S管理共88张课件
- 设立登记通知书
- 2022医学课件前列腺炎指南模板
- MySQL数据库项目式教程完整版课件全书电子教案教材课件(完整)
- 药品生产质量管理工程完整版课件
评论
0/150
提交评论