版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年山西省晋城市全国计算机等级考试C++语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、1.选择题(10题)1.有如下程序:#include"iostrearn.h"voidmain(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}cout<<"a="<<a<<","<<"b="<<b;}该程序的输出结果是
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
2.关于下面程序的说法,正确的是()。#include<iostream>usingnamespacestd;classx{inta;public:x(){a=3;}intgeta(){cout<<a<<endl;returna;}};classy:x{intb;public:x::geta;//Avoidresult(){b=geta()+8;cont<<b<<endl;}};voidmain(){yyy;//Byy.result();yy.geta();//C}
A.A行错误,应写成“x::geat()”
B.B行错误,应写成“yyy();”
C.C行错误,不能对私变量引用
D.没有错误,其输出结果为:3113
3.下面程序的结果为()。#include<iostream.h>voidchange(inta,intb){inttemp;temp=a;a=b;b=temp;}voidmain(){intm,n;m=8;n=9;change(m,n);cout<<m<<""<<n<<endl;}
A.89B.98C.程序有错误D.99
4.下列关于成员函数特征的描述中错误的是()。
A.成员函数可以重载B.成员函数一定是内联函数C.成员函数可以是静态的D.成员函数可以设置参数的默认值
5.下列程序输出的结果是()。#include<stdio.h>fun1(chara,charb){charc;c=a;a=b;b=c;}fun2(char*a,charb){charc;c=*a;*a=b;b=c;}fun3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}voidmain(){chara,b;a='A';b='B';fun1(a,b);putchar(a);putchar(b);a='A';b='B';fun2(&a,b);putchar(a);putchar(b);a='A';b='B';fun3(&a,&b);putchar(a);putchar(b);putchar('\n');}
A.BABBABB.ABBBBAC.ABBABAD.ABABBA
6.数据的四种基本逻辑结构是指______。
A.组、链表、树、图形结构
B.线性表、链表、栈队列、数组广义表
C.线性结构、链表、树、图形结构
D.集合、线性结构、树、图形结构
7.下列工具中为需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
8.下列描述中错误的是()。
A.派生类可以作为墓类派生其他的子类
B.派生类继承基类的所有数据成员
C.派生类可以有多个基类
D.派生类不能继承一些函数成员
9.有以下程序:#include<iostream>usingnamespacestd;classComplex{public:Complex(doubler=0,doublei=0):re(r),im(i){doublezeal()const{returnre;}doubleimag()const{returnim;}Complexoperator+(Complexc)const{returnComplex(re+c.re,im+c.im);}private:doublere,im;};intmain()Complexa=Complex(1,1)+Complex(5);cout<<a.real()<<'+'<<a.imag()<<'i'<<end1;return0;}程序执行后的输出结果是______。
A.6+6iB.6+1iC.1+6iD.1+1i
10.“年龄在18~25之间”这种约束是属于数据库当中的()。A.A.原子性措施B.一致性措施C.完整性措施D.安全性措施
二、单选题(13题)11.已知在一个类体中包含如下函数原型:VOLUMEOPERATOR-(VOLUME)const;,下列关于这个函数的叙述中,错误的是()。
A.这是运算符一的重载运算符函数
B.这个函数所重载的运算符是一个一元运算符
C.这是一个成员函数
D.这个函数不改变类的任何数据成员的值
12.有如下函数模板定义:template
T1FUN(T2n){returnn*5,0;}若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为()。
A.FUN(9)B.FUN<9>C.FUN(9)D.FUN<9>(double)
13.执行下列语句段后,输出字符“*”的个数是()。for(inti=50;i>1;i-=2)Cout<<*:
A.24B.25C.26D.50
14.关于纯虚函数,下列表述中正确的是()。
A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数
B.纯虚函数的声明总是以“=0”结束
C.派生类必须实现基类的纯虚函数
D.含有纯虚函数的类不可能是派生类
15.实现运行时的多态性要使用()。
A.重载函数B.析构函数C.构造函数D.虚函数
16.在C++中,合法的字符常量是______。
A.‘084’B.‘\x43’C.‘ah’D.“0”
17.下列选项中,不是C++关键字的是()。
A.classB.functionC.friendD.viruual
18.下面叙述中错误的是_________。
A.软件测试的目的是发现错误并改正错误
B.对被调试的程序进行"错误定位"是程序调试的必要步骤
C.程序调试通常也称为Debug
D.软件测试应严格执行测试计划,排除测试的随意性
19.下列程序中横线处应填入的语句是()。classBase{public:voidfun(){cout<<"Baseoffun"<<endl;}};classDerived:publicBase{voidfun(){//显示基类的成员函数funcout<<"Derivedoffun"<<endl;}};A.fun();B.Base.fun();C.Base::fun();D.Base->fun();
20.字面常量42、4.2、42L的数据类型分别是A.long、double、int
B.long、float、int
C.int、double、long
D.int、float、long
21.下面关于对象概念的描述中错误的是()
A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通信靠消息传递D.操作是对象的动态属性
22.在E—R图中,用来表示实体联系的图形是()。
A.椭圆形B.矩形C.菱形D.三角形
23.下面程序的运行结果为()。#include<iostream.h>classA{public:A{tout<<”1”;}~A{tout<<”2”;}};classB:publicA{public:B{cout<<”3”;}~B{cout<<”4”;}};voidmain{Bb;}A.1234B.1324C.1342D.3142
三、2.填空题(12题)24.下列程序的输出结果为:
Objectid=0
Objectid=1
请将程序补充完整。
#include<iostream>
usingnamespacestd;
classPoint
{
public:
Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}
~Point(){countP--;}
intGetX(){returnX;}
intGetY(){returnY;}
staticvoidGetC(){cout<<"0bjectid="<<countP<<end1;}
private:
intX,Y;
staticintcountP;
};
______//静态数据成员的初始化
intmain()
{
Point::GetC();
PointA(4,5);
A.GetC();
return0;
}
25.重载的运算符保持其原有的【】、优先级和结合性不变。
26.有如下程序:
#include<iostream>
usingnamespacestd;
classCon
{
charID;
public:
Con():ID('A'){cout<<1;}
Con(charID):ID(ID){cout<<2;}
Con(Con&c):ID(c.getID()){cout<<3;}
charget1D()const{returnID;}
};
voidshow(Conc){cout<<c.getID();}
intmain()
{
Conc1;
show(c1);
Conc2('B');
show(c2);
return0;
}
执行上面程序的输出是______。
27.operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为______的。
28.运算符重载仍然保持其原来的优先级、______和______。
29.软件工程研究的内容主要包括:【】技术和软件工程管理。
30.下面程序的输出结果为【】。
#include<iostream>
usingnamespacestd;
voidinitialize(intprintNo,intstate=0);
voidinitialize(intprintNo=1,intstate);
intmain()
{
initialize();
return0;
}
voidinitialize(intprintNo,intstate)
{
cout<<printNo<<","<<state<<end1;
}下面程序的输出结果为【】。
31.下列程序的输出结果是______。
#include<iostream>
usingnamespacestd;
intmain()
{
intdata=l;
int&r=data;
data+=5;
r+=5;
cout<<data<<endl;
return0;
}
32.假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数首部形式为【】。
33.在一个派生类中,对基类成员、类对象成员和非类对象成员的初始化次序是先【】,后【】,最后为【】。
34.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。
st=(char*)【】;
35.【】是按照程序语句行的自然顺序,依次执行语句。
四、程序改错题(10题)36.使用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;}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,该程序运行有问题,请改正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;
}
39.使用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;
}
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,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为
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;
}
42.使用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;}43.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。
程序异常,输出信息为
error
O
ERROR
注意:不要改动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;
}44.使用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;}45.使用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;}五、综合应用题(2题)46.使用VC++6.0打开考生文件夹下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)完成类的构造函数功能,请在注释1后添加适当的语句。(2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。(3)定义类的友元函数fun,请在注释3后添加适当的语句。(4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#include<iostream.h>classPeople{public://********1********{inti;for(i=0;sUserName[i]!=0;i++){m_UserName[i]=sUserName[i];}//********2********m_Old=nOld;}private:charm_UserName[32];intm_Old;//********3********};voidfun(char*s,People&personl,People&person2{//********4********if{for(inti=0;personl.m_UserName[i]!=0;i++){s[i]=personl.m_UserName[i];s[i+1]=0;}}else{for(inti=0;person2.m_UserName[i]!=0;i++){s[i]=person2.m_UserName[i];s[i+1]=0;}}}voidmain{chars[32];Peoplepl("abc",20);Peoplep2("def",30):fun(S,p1,p2);cout<<s<<endl:return;}47.请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的CDeepCopy是一个用于表示矩阵的类。请编写这个类的赋值运算符成员函数0perator=,以实现深层复制。要求:补充编制的内容写在“//************333************”与“//****************666*************”之间。不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。//CDeepCopy.h#include<iostream>#include<string>usingnamespacestd;classCDeepCopy{public:intn;//动态数组的元素个数int*p;//动态数组首地址CDeepCopy(int);~CDeepCopy;CDeepCopy&operator=(constCDeepCopy&r);//赋值运算符函数};voidwriteToFile(char});//main.cpp#include”CDeepCopy.h”CDeepCopy::一CDeepCopy{delete[]P;}CDeepCopy::CDeepCopy(intk){n=k;p=newint[n];}//构造函数实现CDeepCopy&CDeepCopy::0perator=(constCDeepCopy&r)//赋值运算符函数实现{//***********333*********//***********666***********}intmain{CDeepCopya(2),d(3);a.p[O]=1;d.p[O]=666;//对象a,d数组元素的赋值{CDeepCopyb(3);//调用赋值运算符函数a.p[O]=88;b=a;cout<<b.p[O];//显示内层局部对象的数组元素}cout<<d.p[O];//显示d数组元素a.p[O]的值cout<<”dfadeaway;\n”;cout<<a.p[O];//显示a数组元素a.p[O]的值writeToFile(””);return0;}六、3.综合应用题(2题)48.使用VC6打开考生文件夹下的工程test11_3。此工程包含一个test11_3.cpp,其中定义了类CPosition,但该类的定义都并不完整。请按要求完成下列操作,将类CPosition的定义补充完整。
(1)在类定义外完成重载的两个构造函数CPosition()和CPosition(doubledx,doubledy),其中前者为不带参数的构造函数,使CPosition对象的默认值为x=0,y=0,后者为带参数的构造函数,把数据成员x和y分别初始化为参数dx和dy的值。请在注释“//**1**”之后添加适当的语句。
(2)在类体中添加函数move(doubleax,doubleay)的定义,使得点的坐标x和y分别移动ax和ay个单位,请在注释“//**2**”之后添加适当的语句。
(3)完成函数doubledistance(doublebx,doubleby)的定义,该函数返回*this和点(bx,by)的距离,请在注释“//**3**”之后添加适当的语句。
注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。
源程序文件test11_3.cpp清单如下:
#include<iostream.h>
#include<math.h>
classCPosition
{
public:
CPosition();
CPosition(doubledx,doubledy);
doublegetx();
doublegety();
//**2**
doubledistance(doublebx,doubleby);
private:
doublex;
doubley;
};
//**1**
{
x=0;y=0;
}
CPosition::CPosition(doubledx,doubledy)
{
x=dx;y=dy;
}
doubleCPosition::getx()
{
returnx;
}
doubleCPosition::gety()
{
returny;
}
doubleCPosition::distance(doublebx,doubleby)
{
//**3**
}
voidmain()
{
doublea,b;
cout<<"Inputx,ypositionofapoint:";
cin>>a>>b;
CPositionpsA(a,b);
cout<<“Inputx,ypositionofanotherpoint:";
cin>>a>>b;
cout<<"Thedistanceis"<<psA.distance(a,b)<<endl;
}
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解析:该题目的关键是要搞清楚该程序执行了哪几条语句。由于x的值等于1,所以switch结构中,程序从case1后面的语句开始执行,又因为casel后面的语句没有以break结束,所以程序要继续往下执行case2后面的语句。所以,该程序共执行了这三条语句:a++;a++;b++;,因此,变量a和b最后的值应该为2和1。注意:break语句可以结束switch语句。
2.D解析:语句x::geta;把基类中的公有成员说明为子类中的公有成员,因而可以为子类对象引用。
3.A
4.B解析:C++中,成员函数可以是内联函数,也可以不是内联函数。在类定义体外实现的函数可以通过在函数说明和定义上分别加上inline来表示函数是内联函数,否则就不是内联函数。
5.B解析:由程序中的主函数main入手,分别调用fun1,fun2,fun3函数,得出输出结果。其中,3个函数都是实现的两个形参的交换功能,只是值传递的方式不同,有的是引用,有的是传值。第一个函数中参数采用的是值传递的方式,形参的变化不影响实参。所以d调用fun1后,实参a和b并没有交换,仍然是AB。第二个调用中,实参a采用的是地址,即传递的是地址,所以形参a的改变会影响实参a的值,即BB。同理,调用fun3后为BA.
6.D
7.D解析:需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。
8.B
9.B解析:类对“+”重载后,对应的变量相加。
10.C关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。完整性通常包括域完整性,实体完整性、参照完整性和用户定义完整性,“年龄在18~25之间”属于用户定义完整性约束
11.BB。【解析】本题考核运算符的重载。题中语句为运算符一这是一个二元运算符,且是作为常成员函数来重载的,所以它不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。
12.CC。【解析】函数返回类型是double型,则T1为double型,T2为int型才符合函数模板的定义。
13.B本题考查for循环语句,题目中每执行完循环体后,i都会减2.那么只有50到2之间的偶数才能输出“*”,所以总共输出25次。
14.BB。【解析】纯虚函数是在声明虚函数时被“初始化”为0的虚函数。纯虚函数没有函数体,纯虚函数的作用是在基类中为其派生类保留一个函数名称。
15.D解析:本题考核虚函数的应用。动态联编一直要到程序运行时才能确定调用哪个函数。虚函数是实现动态联编的必要条件之一。没有虚函数一定不能实现动态联编,但有虚函数存在时,必须同时满足下列条件,才能实现动态联编:类之间满足子类型关系;调用虚函数操作的是指向对象的指针或对象引用,或者是由成员函数调用虚函数。
16.B
17.BB。【解析】class是声明类的关键字,friend是声明友元的关键字,virtual是声明虚类或者虚函数的关键字
18.A1983年IEEE将软件测试定义为:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
19.CC。【解析】如果在子类中要访问父类的函数应用::运算符。
20.C解析:本题考查的知识点是:字面常量。对于整型字面常量,只要没有超出C++中整数所能表示的范围,C++将自动按整数(int)来存储此数。也可以通过在整型字面常量后添加u或1(大、小写均可),来指定按无符号整数(unsigned)或长整数(long)来存储,也可同时使用u和1(对排列无要求),来指定按无符号长整数(unsigned\u3000long)来存储。对于实型字面常量,C++自动按双精度数(double)来存储。也可通过在实型字面常量后添加f(大、小写均可),来指定按单精度数(float)来存储。故本题应该选择C。
21.A
22.CC。【解析】E—R图也即实体~联系图(EntityRelationshipDiagram),提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型,构成E—R图的基本要素是实体型、属性和联系,其表示方法为:实体型(Entity):用矩形表示,矩形框内写明实体名;属性(Attribute):用椭圆形表示,并用无向边将其与相应的实体连接起来;联系(Relationship):用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。
23.C本题考查的是在继承中构造函数和析构函数的调用顺序,应该是先调用基类的构造函数,再调用派生类的构造函数,调用析构函数时的顺序是先调用派生类的析构函数,后调用基类的析构函数。
24.intPoint::countP=0;
25.操作符个数操作符个数解析:本题考查的是运算符重载的概念,用户重新定义的运算符不改变原运算符的优先性和结合性,也不改变运算符的语法结构.也就是说重载运算符不会产生新的运算符。
26.13A23B13A23B解析:Conc1定义c1对象,调用Con的无参数构造函数,输出1,ID值变为A,执行show(c1)时会调用拷贝构造函数,将c1对象的值拷贝给show()函数的形参,此时输出3,然后在show()中输出c1的ID值A,Conc2('B')定义c2对象,调用Con(charID)构造函数,输出2,c2的ID值为B,show(c2)执行时先调用拷贝构造函数输出3,然后输出B。因此程序输出结果为“13A23B”。
27.public
28.结合性语法结构结合性语法结构
29.软件开发软件开发解析:基于软件下程的目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。软件工程管理包括:软件管理学、软件工程经济学,以及软件心理学等内容。
30.10
31.1111解析:本题考核引用的概念和使用。C++的引用是一种赋值、发送和返回复杂数据结构的方法,应用这种方法,系统不需要负担额外的开销,节省内存空间。在程序中对引用的存取都是对它所引用的变量的存取。题中r为data的引用,所以对r的操作等于对data的操作,所以最后data的值为11。
32.~MyClass()
33.基类成员类对象成员非类对象成员基类成员\r\n类对象成员\r\n非类对象成员解析:派生类的构造顺序。
34.malloc(11)或malloc(sizeof(char)*11)malloc(11)或malloc(sizeof(char)*11)解析:malloc函数的参数可以是一个具体的常数,也可以是一个表达式。在本题中,可以是malloc(11),也可以借助于sizeof运算符来表示。
35.顺序执行顺序执行解析:结构化程序设计语言仅仅使用顺序、选择和循环3种基本结构。其中,顺序结构是最基本、最常用的结构,它采用顺序执行的结构,即按照程序语句行的自然顺序,依次执行语句。36.(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(…)”。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)应改为“TCobjl(1);”。
\n(2)应改为“0bj1.SetNumber(10);”。
\n(3)应改为“0bj2.SelNumber(100);”。
\n【解析】本题第1处的“TCobjl;”语句是声明TC类的对象0bj1,根据TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个输出结果两1,所以补全参数1,即第1处的“TCobjl(1);”。第2处处的“objl.number=10;”应该是调用成员函数SetNumber赋值。在C++中成员函数的使用形式应该是:对象名.成员函数,所以修改为“obj1.SetNumber(10);”。类是对象的抽象,而对象是类的具体实例。第3处“TC.SetNumber(100);”语句中的TC为类,并不是对象,这里应该使用定义的对象,即obj2,所以将语句修改为“obj2.SetNumber(100);”。
39.(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);”。
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)应改为“TC::TC”。
\n(2)应改为“voidTC::display”。
\n(3)应改为“TC::~TC”。
\n【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个类,使用格式为“(类名)::<成员函数>((参数函数)),因此第1处应改为“TC::TC”,默认构造函数没有参数。由第2处“TC::display”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void,因此第2处的语句应改为“voidTC::display”。由第3处的语句“TC::TC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“~”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC::~TC”。
42.(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”。43.(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(…)”。44.(1)应改为“usingnamespacestd;”。(2)应改为“outl.open("1.txt",ios::binary|ios::app);”。(3)应改为“out1.put(s[i]);”。【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,对于C++中引入标准命名空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 英语(五年级上册)课件 U4-L1 I Like Fables Best、L2 The Bear and Two Friends
- 英语(五年级上册)U2-L1课件 You Should Go to Bed Early、L2 课件 I Can
- 医院特种设备安全事故应急处置预案
- 施工图纸设计变更签证管理流程制度
- 2026年综合评标专家库申诉复核相关考试全真模拟题库含解析
- 英语(五年级上册)U2-L3课件 A Fat Caterpillar
- 短视频行业内容部编导短视频创作管理手册
- 航空安全知识培训手册
- 儿科危急重症概述
- 非机动车道施工规范
- 酒店宴会主持培训
- 水泥产品生产许可证实施细则2025
- 中药三基考试题库及答案
- 浙江三花汽车零部件有限公司新增年产1300万套新能源汽车热管理系统部件技术改造项目环评报告
- 超声两非管理办法
- 设备故障管理办法
- 2025年国企中层竞聘笔试题目+答案
- 2025年部编版七年级上册历史知识提纲(1-8课)
- 军兵种知识教案及课件
- 建筑工程挂靠完整协议书
- 中国保险行业协会机动车综合商业保险
评论
0/150
提交评论