




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023年陕西省宝鸡市全国计算机等级考试C++语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________
一、1.选择题(10题)1.假设person是一个类,p1是该类的一个对象,p2是一个指向p1的指针,getname()是其中的一个函数,则下面对象的使用不正确的是()。
A.person.getname();
B.p1.getname();
C.p1.person::getname();
D.p2->getname();
2.如果表达式a>=b中的“>=”是作为非成员函数重载的运算符,则可以等效地表示为()。A.a.operator>=(b)
B.b.operatotr>=(a)
C.operator>=(a,b)
D.operator>=(b,a)
3.cin代表______。
A.标准输入B.标准输出C.标准错误D.显示器
4.面向对象程序设计将数据和什么放在一起,作为一个相互依存、不可分割的整体来处理?
A.对数据的操作B.信息C.数据隐藏D.数据抽象
5.类A是类B的友元,类B是类C的友元,则下列说法正确的是()。
A.类B是类A的友元B.类C是类A的友元C.类A是类C的友元D.以上都不对
6.下列对模板的声明中,正确的是()。
A.template<T>
B.template<classT1.T2>
C.template<classT1.classT2>
D.template<classT1;classT2>
7.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。
A.插入排序B.选择排序C.快速排序D.堆排序
8.若有如下程序:#include<iostream>usingnamespacestd;ClassTestClass1{private:inta;public:TestClassl(inti){a=i;}voiddisp(){cout<<a<<“,”;}};ClassTestClass2{private:intb;public
A.10,10,10B.10,12,14C.8,10,12D.8,12,10
9.只能作为成员函数重载的是
A.=B.++C.*D.new
10.已知函数f的原型是voidf(int*a,long&B);,变量v1、v2的定义是:intv1:longv2:下列调用语句中正确的是
A.f(v1,&v2);
B.f(v1,v2);
C.f(&vl,&v2);
D.f(&vl,v2);
二、单选题(13题)11.下列程序的运行结果是()。#include<iostream.h>classLoeation{private:intX,Y;public:voidinit(int=0,int=0);voidvalueX(intval){X=val;}intvalueX{returnx;}voidvalueY(intval){Y=val;}intvalueY{returnY;}};voidLocation::init(intinitX,intinitY){X=initX;Y=initY4}voidmain(X{LocationA,B;A.init;B.valueX(5);cout<<A.valueX<<endl<<A.valueY<<endl;B.init(6,2);B.valueY(4);eout<<B.valueX<<endl<<B.valueY<<endl;}A.5064B.0064C.5062D.0062
12.不能作为重载函数的调用的依据是()。
A.参数个数B.参数类型C.函数类型D.函数名称
13.按照“先进先出”原则组织数据的数据结构是()。
A.队列B.栈C.双向链表D.二叉树
14.必须用一对大括号括起来的程序段是()。
A.switCh语句中的ease标号语句B.if语句的分支C.循环语句的循环体D.函数的函数体
15.下列不构成无限循环的语句或语句组是()。
A.n=0;do{++n;)while(n<=0);
B.n=0;while(1){n++;)
C.while(n=1O);{n--;}
D.for(n=0,i=1;;i++)n+=i
16.对于一个类定义,下列叙述中错误的是()。
A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B.如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数
C.如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数
D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
17.关于运算符重载,下列表述中正确的是()。
A.C++已有的任何运算符都可以重载
B.运算符函数的返回类型不能声明为基本数据类型
C.在类型转换符函数的定义中不需要声明返回类型
D.可以通过运算符重载来创建C十十中原来没有的运算符
18.已知数组arr的定义如下:
intarr[5]={1,2,3,4,5};
下列语句中输出结果不是2的是A.cout<<*arr+1<
B.cout<<*(arr+1)<
C.cout<<arr[1]<
D.cout<<*arr<
19.在下列字符中,不允许作为C++标识符的是()。
A.bB.BC._D.2
20.有如下程序:#include<iostream>usingnamespacestd;classB{public:virtualvoidshow(){cout<<"B";}};classD:publicB{public:voidshow(){cout<<"D";}};voidfun1(B*ptr){ptr->show();}voidfun2(B&ref){ref.show();}voidfun3(BB){b.show();}intmain(){Bb,*p=newD;Dd;funl(p);fun2(b);fun3(d);return0;}程序的输出结果是()。A.BBBB.BBDC.DBBD.DBD
21.复制构造函数的参数一般是
A.某对象名B.某对象成员名C.某对象的引用名D.指向对象的指针名
22.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。
A.函数调用可以作为独立的语句存在
B.函数调用可以无返回值
C.函数调用可以出现在表达式中
D.函数调用可以作为、一个函数的形参
23.
三、2.填空题(12题)24.数据库技术的主要特点为______,具有较高的数据和程序的独立性以及对数据实行集中统一的控制。
25.下列程序的输出结果为:
bjectid=O
biectid=1
请将程序补充完整。
#include<iostream>
usingnamespacestd;
classPoint
{
public:
Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}
~Point(){countP--;}
intGetX(){returnX;}
intGetY(){returnY;}
staticvoidGetC(){cout<<"Objectid="<<countP<<endl;}
private:
intX,Y;
staticintcountP;
};
______//静态数据成员的初始化
intmain()
{
Point::GetC();
PointA(4,5);
A.GetC();
return0;
}
26.在C++语言的结构化程序设计中,【】是程序的基本组成单元;在C++语言的面向对象设计框架中,【】是程序的基本组成单元。
27.根据变量定义“staticintx[5],y[2][3]={9,6,3,1,4,7};”,x[4]=【】,y[1][2]=【】。
28.在关系代数运算中,并、笛卡尔积、投影、选择和【】为基本的运算。
29.执行语句序列
charstrl[10]="ABCD",str2[10]="XYZxyz";
for(inti=0;strl[i]=str2[i];i++)
后,数组str1中的字符是XYZxyz,数组str2中的字符串是【】。
30.假定动态分配一个类型为Worker的具有n个元素的数组,并由P指向这个动态数组,如果要释放这个数组,则使用的语句为【】。
31.对于枚举类型的定义语句enumWeek{Sun,Tue=3,Fri,Sat=6,Mon};其中枚举常量Mon的值为______。
32.为了表明一个函数不带返回值,应在定义函数时指定该函数类型为【】。
33.在顺序查找与二分查找两种方法中,可以用【】方法对有序线性链表进行查找。
34.根据注释内容在空白处填写适当内容。
classLocation
{
private:
intX,Y;
public:
voidinit(intinitX,intinitY);
intGetX();
intGetY()
};
voidLocation::init(intinitX,intinitY)
{
X=initX
Y=initY;
}
intLocation::GetX()
{
reutrnX
}
intLocation::GetY()
{
reutrnY;
}
#inelude<iostream.h>
voidmain()
{
LocationA1;
A1.init(20,90)
【】//定义一个指向A1的引用rA1
cout<<rA1.GetX()<<":"<<rA1.GetY()<<end1;
}
35.虚函数必须是类的【】。
四、程序改错题(10题)36.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:
9,8,7,6,5
注意:错误的语句在/********error********/的下面,修改该语句即可。其他的语句不能修改。
试题程序:
#include(iostream.h>
classTC
{
/********error********/
TC(inti)
{
m_i=i;
}
voidprint
{
cout<<--m_i<<,;
}
public:
intm_i;
};
intmain
{
/********error********/
inti;
TC04(10);
while(i>5)
{
/********errOr********/
i++:
04.print;
}
cout<<endl;
return0;
}
37.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确。程序输出:88注意:错误的语句在/********error********/的下面。修改该语句即可,其他的语句不能修改。试题程序:#include(iostream.h>classCO{public:/********error********/staticintn=0:CO{n++:}~CO{n--:}}:/********error********/intCO::n;voidmain{COobj;COobj2[7];CO*C=NULL:c=&obj:/********error********/eout<<C.n<<endl;cout<<C0::n<<endl;}
38.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:
sizeof(S1)=5
sizeof(s2)=10
sizeof(s3)=1
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
(1)不能删除assert()语句。
(2)只能修改后面的数字。
提示:assert函数如果为假,则会产生一个中断异常。
试题程序:
#include<iostream.h>
#include<assert.h>
voidmain()
{
char*s1="abc":
//********error********
assert(sizeof(s1)==3):
cout<<"sizeof(s1)=5"<<endl;
chars2[10]="ab":
//********error********
assert(sizeof(s2)==2);
cout<<"sizeof(s2)=10"<<endl;
chars3=23:
//********error********
assert(sizeof(s3)==4);
cout<<"sizeof(s3)=1"<<endl;
return;
}
39.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出信息为errorOERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#include<iostream.h)intmain{try{throw("error");}//********error********catch(chars){cout<<s<<endl;}try{throw((int)0);}//********error********catch{cout<<i<<endl;}try{throw(O);throw("error");}//********error********catch{cout<<"ERROR"<<endl;}return0;}
40.使用VC++6.0打开考生文件夹下的源程序文件
1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在
//******error******的下面。
试题程序:
#include<iostream>
#include<fstream>
//********error********
usingstd;
voidWriteFile(char*s)
{
ofstreamout1;
//********error********
out1.open("1.txt",binary|app);
for(inti=0;s[i]!=0;i++)
{
//********error********
out1.puts(s[i]);
}
out1.close;
}
voidClearFile
{
ofstreamout1;
out1.open("1.txt");
out1.close;
}
intmain
{
chars[1024];
ClearFile;
cout<<"pleaseinputastrin9:"<<endl;
cin.getline(s,1024);
WriteFile(s);
return0;
}
41.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#include<iostream>#include<fstream>//********error********usingstd;voidWriteFile(char*s){ofstreamout1;//********error********out1.open("1.txt",binary|app);for(inti=0;s[i]!=0;i++){//********error********out1.puts(s[i]);}out1.close;}voidClearFile{ofstreamout1;out1.open("1.txt");out1.close;}intmain{chars[1024];ClearFile;cout<<"pleaseinputastrin9:"<<endl;cin.getline(s,1024);WriteFile(s);return0;}42.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#include<iostream.h>voidmain{inti=0;charstr[120];cout<<"Enterastringendwith?."<<endl;//********error********cin.getline(str,120);//********error********while(str){//********error********if(str[i])=a)str[i]=str[i]-a+A;i++;}cout<<str<<endl;return;}43.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor,i=0,Destructor注意:错误的语句在//******error******的下面,修改该语句即可。试题程序:#include(iostream.h)classTC{inti;public:TC;voiddisplay;~TC;};//******error******TC:TC{cout<<"Constructor"<<",";i=0;)//******error******TC:display{tout<<"i="<<i<<","<<endl;}//******error******TC:TC{COUI<<"Destructor"<<endl:}voidmain{TCa;a.display;}44.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在//******error******的下面,修改该语句即可。试题程序:#include<iostream.h>//******error******voidmain{//******error******intm=0142://******error******intn=0X27:intq=32;cout<<m<<endl;cout<<n<<endl;cout<<q<<endl;return;}
45.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:
number=1
number=10
number=100
注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include<iostream.h>
classTC
{
public:
TC(inti)
{
number=i;
}
voidSetNumber(intm)
{
number=m;
}
intGetNumberconst
{
returnnumber;
}
voidPrintconst
{
cout<<"number="<<number<<endl;
}
private:
intnumber;
};
voidmain
{
//********error********
TCobjl;
objl.Print;
TCobj2(3);
//********error********
objl.number=10;
//********error*‰******
TC.SetNumber(100);
objl.Print;
obj2.Print;
}
五、综合应用题(2题)46.请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,此工程中包含一个源程序文件proj3.cpp,补充编制c++程序proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并输出到文件out.dat中。文件in.dat的长度不大于1000字节。要求:补充编制的内容写在“//**********”与“//**********”两行之间。实现将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。注意:程序最后已将结果输出到文件0ut.dat中,输出函数writeToFile已经给出并且调用。//proj3.cpp#include<iostream>#include<fstream>#include<catting>usingnamespacestd;classdoc{private:char*sir;//文本字符串首地址intlength;//文本字符个数public://构造函数,读取文件内容,用于初始化新对象,filename是文件名字符串首地址doc(char*filename);voidreverse;//将字符序列反转一doc;voidwriteToFile(char*filename);};doc::doc(char}filename){ifstreammyFile(filename);intlen=1001,tmp;atr=newchar[1en];length=0;while((trap=myFile.get)!=EOF){str[1ength++]=trap;}str[1ength]=‘\0’;myFile.close;}voiddoc::reverse{//将数组atr中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个//字符交换……//*************333*************//*************666*************}doc::~doe{delete[]str;}voiddoc::writeToFile(char*filename){OfstreamoutFile(filename);outFile<<str;outFile.close;}voidmain{docmyDoc(”in.dat”);myDoc.reveme;myDoc.writeToFile(”out.dat”);}47.使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。每卖出一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整。(1)定义类TCFruit的私有静态数据成员float型变量AllWeight和int型变量AllN0,请在注释1后添加适当的语句。(2)完成类TCFruit的带一个float型变量w的构造函数,并把这个w加到AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。(3)在析构函数中,在AllWeight中减去weight,然后AllNo自减,请在注释3后添加适当的语句。(4)完成静态成员变量的初始化为0,请在注释4后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#include(iostream.h>classTCFruit{private:floatWeight;//********1********staticintAllNo;public:TCFruit(floatw){//********2********AllWeight+=w:AllNo++:}~TCFruit{//********3********AllWeight-=Weight:}voiddisplay{cout<<"SellaFruitwith"<<Weight<<"k9"<<endl;cout<<”Allsellnumber:"<<AllNo<<endl;cout<<"Allsellweight:"<<AllWeight<<"k9"<<endl<<endl;}};//********4********floatTCFruit::AllWeight=0.0;intmain{TCFruitFruitl(1.2);Fruitl.display;TCFruitFruit2(2.3);Fruit2.display;return0;}六、3.综合应用题(2题)48.使用VC6打开考生文件夹下的工程test14_3,此工程包含一个test14_3.cpp,其中定义了类File,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)完成构造函数的定义,使数据成员filename,content指向为空。请在注释“//**1**”之后添加适当的语句;
(2)完成函数set_contents的定义,该函数为content申请新的空间来存储new_content的内容,成功返回true,失败返回false。请在注释“//**2**”之后添加适当的语句;
(3)完成成员函数copy(File&source,File&target)的定义,该函数实现将source的内容拷贝至target的功能,注意必须使用已经定义的成员函数来实现。请在注释“//**3**”之后添加适当的语句:
(4)完成析构函数的定义,要求释放content指向的空间。请在注释“//**4**”之后添加适当的语句。
输出结果如下:
file2:file1contents
file2:file2contents
注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。
源程序文件testl4—3.cpp清单如下:
#include<iostream.h>
#include<string.h>
classFile{
private:
charfile_name[64];
char*contents;
public:
File(char*filename)
{
//**1**
};
File::~File()
{
//**4**
}
voidprintfile(){cout<<file_name<<":"<<contents<<endl;)
friendboolcopy(File&source,File&target);
boolset_contents(char*new_contents);
};
boolFile::set_contents(char*new_contents)
{
//**2**
if(contents==NULL)
returnfalse;
strcpy(contents,new_contents);
returntrue;
}
boolcopy(File&source,File&target)
{
//**3**
}
voidmain{)
{
Filef1("filel"),f2("file2");
f1.set_contents("filelcontents");
copy(f1,f2);
f2.printfile();
f2.set_contents("file2contents,);
f2.printfile();
}
49.使用VC6打开考生文件夹下的工程test13_3。此工程包含一个test13_.cpp,其中定义了类Vector,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)完成构造函数的定义,把数据成员size初始化为参数s的值,数据成员buffer指向动态申请的int型size大小的空间。请在注释“//**1**”之后添加适当的语句。
(2)完成拷贝构造函数的定义,注意解决多次删除的问题。请在注释“//**2**”之后添加适当的语句。
(3)完成成员函数elem的定义,该函数返回buffer的第ndx个元素的值,注意如果ndx超界,请输出“errorinindex”。请在注释“//**3**”之后添加适当的语句。
(4)完成析构函数的定义,要求先将字符d打印在屏幕上,再释放buffer指向的空间。请在注释“//**4**”之后添加适当的语句。
输出结果如下:
1234567891012345678910dd
注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。
源程序文件test13_3清单如下:
#include<iostream.h>
#include<stdlib.h>
classVector
{
public:
Vector(ints=100);
Vector(Vector&v);
int&elem(intndx);
voiddisplay();
voidset();
~Vector();
protected:
intsize;
int*buffer;
};
Vector::Vector(ints)
{
//**1**
}
Vector::Vector(Vector&v)
{
//**2**
for(inti=0;i<size;i++)
{
*(buffer+i)=*(v.buffer+i);
}
}
int&Vector::elem(intndx)
{
//**3**
{
cout<<"errorinindex"<<endl;
exit(1);
}
returnbuffer[ndx];
}
voidVector::display()
{
for(intj=0;j<size;j++)
cout<<elem(i)<<endl;
}
voidVector::set()
{
for(intj=0;i<size;j++)
elem(j)=j+1;
}
Vector::~Vector()
{
//**4**
}
voidmain()
{
Vectora(10);
Vectorb(a);
a.set();
b.set();
a.display();
b.display();
}
参考答案
1.A解析:选项B其实是选项C的一种缩写,效果相同,通过类person不能调用方法getname()。
2.C解析:此题考查的是运算符的重载。运算符函数有两种调用形式:第一种是直接用函数名进行调用:另一种是通过运算符构成表达式的形式进行调用。
3.A
4.A解析:面向对象语言包含3个要素,即对象、类和继承。这3个要素反映了面向对象的传统观念。面向对象程序设计的本质是把数据和对数据的操作当成一个整体即对象。
5.D解析:选项A)、选项B)和选项C)都不正确,因为友元关系是单项的,并且没有交换性、传递性。
6.C解析:本题考核模板的定义。模板定义的<类型参数表>中包含一个或多个由逗号分隔的类型参数项,每一项由关键词class后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实际的数据类型代替它。
7.A解析:插入排序通过数据元素的交换来逐步消除线性表中的逆序,所以关键字比较的次数与记录的初始排列次序有关,在待排序的元素序列基本有序的前提下,效率最高。而选择排序和堆排序的关键字比较的次数与记录的初始排列次序无关。快速排序虽然与记录的初始排列次序有关,但在待排序的元素序列基本有序的前提下,效率低于插入排序。
8.D解析:首先定义TestClass3的对象Obj,参数为10。其中TestClass3为TestClassl和TestClass2的派生类。然后调用disp成员函数。Disp中首先执行“TestClassl::disp();”,然后执行“TestClass2::disp();”,最后执行输出语句“cout<<c<<end1”。TestClass1(k-2),所以第一个输出8,TestClass2(k+2),第二个输出12,最后一个本类中的输出即为10。
9.A解析:运算符重载为成员函数的形式为:函数类型operator运算符(形参表){函数体;};运算符重载为友元函数的形式为:friend函数类型operator运算符(形参表){函数体;}。一般来讲,单目运算符最好重载为成员函数,双目运算符最好重载为友元函数。=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载。
10.D
11.A本题中有成员函数和它的重载函数,要注意它们的不同,在本题中先调用了init函数,初始化了x、Y,都为0,valueX(5);又将x变为5,所以输出5和0,然后初始化init(6,2),接着又valueY(4);将x、Y设为6和4,所以输出6和4。
12.D解析:所谓重载函数是指同一个函数名可以对应多个函数的实现,编译器会根据参数个数、参数类型和函数返回值类型不同而自动调用相应的函数。
13.A
14.D本题考查C++基本控制结构.A、B、C三个选项中的大括号不是必须的,而D选项中的函数体必须使用大括号。
15.AA。【解析】选项B中while(1)永远为真,一直自加下次进入死循环;选项C中while(n=10)同理死循环,没有下限范围;选项D中for循环中i也没有循环限定条件也将进入死循环;只有选项A中while(n<=o)循环判定成立,循环结束。
16.B本题考查构造函数和复制构造函数,如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数,如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。如果没有定义拷贝构造函数,编泽器将生成一个拷贝构造函数。
17.C
18.D
19.DD。【解析】在C++中,标识符只能以字母、数字和下画线组成,并且首字母不能为数字。所以D选项错误。
20.CC。【解析】本题考查的知识点是虚函数与多态性。在成员函数声明的前面加上virtual修饰,即把该函数声明为虚函数。在C++中,一个基类指针(或引用)可以用于指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。故本题最终输出结果为DBB。
21.C解析:C++语言中拷贝构造函数的参数一般是某个对象的引用名。
22.D解析:函数的形参和实参具有以下特点:
①形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。②实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应通过预先用赋值,输入等办法使实参获得确定值。③实参和形参在数量上,类型上,顺序上应严格一致,否则会发生“类型不匹配”的错误。④函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。注意:函数调用不可以作为一个函数的形参。注意:函数可以嵌套调用,但是不可嵌套定义。
23.C
24.数据共享性数据共享性解析:数据库技术的主要特点有以下几个方面:数据结构化;数据的共享性高,冗余度低,易扩充;数据独立性高;数据由DBMS进行统一管理和控制。
25.inttPoint::countP=0;inttPoint::countP=0;解析:此题考查的是类中静态数据成员的初始化,静态数据成员初始化的一般格式:数据类型类名::静态数据成员名=初始值,且初始化时前面不加关键字static。分析题目,首先调用构造函数,然后输出countP的值,所以couatP的初始值应设置为0,即横线处填入intPoint::countP=0;。
26.函数类函数\r\n类解析:函数是程序功能实现的主要方式,是实现结构化设计(将程序分成若干个函数实现)的基本组成;类是一种用户定义的类型,是实现数据封装和数据抽象的工具,是面向对象设计中的基本组成。
27.07
28.差差
29.XYZxyzXYZxyz解析:注意for的循环体为空语句,其第二个表达式为一个赋值语句而不是一个逻辑表达式语句。因此,for循环的作用实际上是将str2的字符逐个赋值给str1中的对应位置。
30.delete[]p;delete[]p;解析:语句为delete[]p;。
31.7
32.voidvoid解析:void表明该函数不带返回值,如果没有void,则系统会返回一个默认类型的随机值,这对程序可能造成不必要的问题。
33.顺序查找顺序查找解析:在顺序查找与二分查找两种方法中,只能用顺序查找方法对有序线性链表进行查找,因为二分查找方法只适用于顺序存储的有序表。
34.Location&rA1=A1;Location&rA1=A1;解析:本题主要考察引用的定义。根据上下文以及注释可以获取所需要的类型及名称信息。
35.成员函数成员函数解析:C++中,只有类的成员函数才能说明为虚函数。这是因为,虚函数仅适用于有继承关系的类对象,所以普通函数不能说明为虚函数。
36.(1)应添加“public:”。
\n(2)“inti”应改为“inti(10);”。
\n(3)“i++;”应改为“i--;”。
\n【解析】本题主要考查的是成员的访问属性。成员的访问属性有公有、保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类的对象被访问。故应在构造函数前添加“public:”,否则该类无法被实例化。变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造参数,题目已要求使用后者。本题要求输出5个数,while的循环变量i每次减1,在i>5时循环,故i初始化应为10。若循环中i每次增1,则循环永远不会退出。37.(1)“staticintn=O”应改为“staticintn;”。(2)“intCO::n;”应改为“intCO::n=0;”。(3)“cout<<c.n<<endl;”应改为“cout<<c->n<<endl;”。【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1处应改为“staticintn;”,第2处要给n赋值,第3处输出时引用c的对象,应改为“cout<<c->n<<endl;”。
38.(1)应改为“assert(sizeof(s1)==4);”。
\n(2)应改为“assert(sizeof(s2)==1O);”。
\n(3)应改为“assert(sizeof(s3)==1);”。
\n【解析】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);”。
39.(1)应改为“catch(char*s)”。(2)应改为“cateh(inti)”。(3)应改为“catch(…)”。【解析】本题中第1个标识前的异常抛出语句为“throw("error");”,其中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语句修改为“catch(char*S)”。第2个标识前的异常抛出语句为“throw((int)0);”,其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch(…)”。
40.(1)应改为“usingnamespacestd;”。
\n(2)应改为“outl.open('1.txt',ios::binary|ios::app);”。
\n(3)应改为“out1.put(s[i]);”。
\n【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,对于C++中引入标准命名空间的格式,缺少namespace,所以第1处的语句修改为“usingnamespacestd;”。第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以“out1.open('1.txt',binary|app);”语句缺少类ios,即第2处的语句修改为“out1.open('1.txt',ios::binary|ios::app);”。第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为“out1.put(s[i]);”。
41.(1)应改为“usingnamespacestd;”。(2)应改为“outl.open("1.txt",ios::binary|ios::app);”。(3)应改为“out1.put(s[i]);”。【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,对于C++中引入标准命名空间的格式,缺少namespace,所以第1处的语句修改为“usingnamespacestd;”。第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以“out1.open("1.txt",binary|app);”语句缺少类ios,即第2处的语句修改为“out1.open("1.txt",ios::binary|ios::app);”。第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为“out1.put(s[i]);”。42.(1)应改为“ein.getline(str,120,?);”。
(2)应改为“while(str[i])”。
(3)应改为“if(str[i]>=a&&str[i]<=2)”。
【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符个数,终止标志字符)”,所以第1处改为“cin.getline(str,120,?);”。第2处的“while(str)”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换。所以应该修改为“while(str[i])”。第3处的“if(str[i]>=a)”语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于a,但是小写字符应该是a到2,所以修改为“if(str[i]>=a&&str[i]>=z)”。43.(1)应改为“TC::TC”。(2)应改为“voidTC::display”。(3)应改为“TC::~TC”。【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个类,使用格式为“(类名)::<成员函数>((参数函数)),因此第1处应改为“TC::TC”,默认构造函数没有参数。由第2处“TC::display”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void,因此第2处的语句应改为“voidTC::display”。由第3处的语句“TC::TC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“~”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC::~TC”。44.(1)“voidmain”。(2)“intm=0144;”。(3)“intn=OX25;”或“intn===0x25;”。【解析】本题主要考查了主函数定义及幂同进制之间的转换,包括十进制到八进制,十进制到十六进制。主函数定义的定义形式为“main”,函数名之后必须是一对括号,因此第1处应改为“voidmain”。cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发现变量的初值不正确,十进制的100对应八进制的144,卡进制的37对应十六进制的25,因此2和3应分别改成“intm=0144;”,“intn=0×25;”或“intn=0×2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 7334:2025 EN Earth-moving machinery - Vocabulary and taxonomy for automation and autonomy
- 【正版授权】 ISO 16123:2025 EN Ships and marine technology - Marine cranes - Slewing bearings
- 【正版授权】 IEC 61000-4-41:2024 EN-FR Electromagnetic compatibility (EMC) - Part 4-41: Testing and measurement techniques - Broadband radiated immunity tests
- 【正版授权】 IEC 61035-1:1990 EN-D Specification for conduit fittings for electrical installations - Part 1: General requirements
- 【正版授权】 IEC 60884-2-2:2006 EN-D Plugs and socket-outlets for household and similar purposes - Part 2-2: Particular requirements for socket-outlets for appliances
- 【正版授权】 IEC 60335-2-66:2025 EXV-RLV EN Household and similar electrical appliances - Safety - Part 2-66: Particular requirements for water-bed heaters
- 【正版授权】 CISPR 14-1:2005 FR-D Electromagnetic compatibility - Requirements for household appliances,electric tools and similar apparatus - Part 1: Emission
- 以客户运营为中心
- 2025年化妆品营销策划方案经典
- 2025年乡村幼儿园工作方案
- 湖北省襄阳市2023-2024学年高一上学期期末考试化学试题(含答案)
- 物业管理保洁服务项目投标方案(投标方案)
- 2.2 逻辑思维的基本要求 课件高中政治统编版选择性必修三逻辑与思维
- 施工升降机专项施工方案
- 影响健康因素多 课件 2024-2025学年人教版(2024)初中体育与健康七年级全一册
- DB11T 3034-2023 建筑消防设施检测服务规范
- 钢结构防腐油漆施工方案
- (招聘面试)河北信用社招聘笔试真题
- 一年级上册劳动《各种各样的职业》课件
- 2024至2030年中国牧业饲草市场发展现状及潜力分析研究报告
- DB32T-职业性尘肺病数字化诊断标准片使用指南编制说明
评论
0/150
提交评论