版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年江苏省常州市全国计算机等级考试
C++语言程序设计真题(含答案)
学校:班级:姓名:考号:
一、1.选择题(10题)
1.有3个结点的二叉树有()。
A.2种形态B.4种形态C.7种形态D.5种形态
2.数据模型的三要素是()。
A.外模式、概念模式和内模式B.关系模型、网状模型、层次模型C.实
体、属性和联系D.数据结构、数据操作和数据约束条件
3.以下程序的输出是()。structst{intx;int*y;}*p;int
dt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],
60,&dt[0],};main(){p=aa;cout<+<+(p->x);}
A.10B.11C.51D.60
4线性表L=(al,a2,a3,...ai,...an),下列说法正确的是()
A.每个元素都有一个直接前件和直接后件
B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个
直接前件和直接后件
5.对于以下带参数的main。函数的第二形参,voidmain(intargc,
),不可能的形式是
A.char*argv[]B.charargv[]C.char**aD.char*m[]
6.设inta=l,b=2;,则(a++)+b和a+++b这两个表达式的值分别
为
A.3,3B.3,4C.4,3D.4,4
7.下面是关于派生类声明的开始部分,其中正确的是
A.classvirtualB:publicA
B.virtualclassB:publicA
C.classB:publicAvirtual
D.classB:virtualpublicA
8.下列程序的运行结果为()。#include<iostream.h>voidmain()
{inta=2;intb=a+1;cou<<afo<<endl;}
A.0.66667B.OC.0.7D.0.66666666
9.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其
中0WS9,则对a数组元素不正确的引用是
A.a[p-a]B*(&a[i])C.p[i]D.a[10]
10.下面各语句中,能正确进行赋字符串操作的语句是
A.chars[5]={"ABCDE");
B.chars[5]={'A';B';B;B,旧};
C.char*s;s="ABCBE";
D.char*s;scanf("%s",s);
二、单选题(13题)
11.定义无符号整数为Uint,下面可以作为类Uint实例化值的是()。
A.-369B.369c.0.369D.整数集合{1,2,3,4,5}
12.模板函数的真正代码是在()时候产生。
A.源程序中声明函数时B.源程序中定义函数时C.源程序中调用函数
时D.运行执行函数时
13.下列关于赋值运算符“=”重载的叙述中,正确的是
A.赋值运算符只能作为类的成员函数重载
B.默认的赋值运算符实现了“深层复制”功能
C.重载的赋值运算符函数有两个本类对象作为形参
D.如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符
14.阅读以下程序
#include(iostream.h>
voidmain()
(
charline[10];
cin»line;
cout«1ine«endl;
}
如运行时输入"Thisisanexample.<CR>^,
则程序的输出结果是()oA.ThisB.ThisisC.ThisisaD.Thisisanexample
15.某系统总体结构图如下图所示:-该系统
总体结构图的深度是()。
A.7B.6C.3D.2
16.下面关于C++流的叙述中,正确的是()。
A.cin是一个输入流对象
B.可以用ifstream定义一个输出流对象
C.执行语句序列char*y="PQMN";cout«y;将输出字符串PQMN的地
址
D.执行语句序列charx[80];cin.getline(x,80);时,若输入Happynewyear,
则X中的字符串是“Happy”
17.有如下程序:
#include<iostream>
usingnamespacestd;
classMonkey{
public:
Monkey(){cout«'M';}
Monkey(charn){cout«n;}
-Monkey(){cout«'Y';}
);
intmain(){
Monkeypl,*p2;
p2=newMonkey('X');
deletep2;
return0;
运行这个程序的输出结果是
A.MYXB.MYMYC.MXYD.MXYY
18.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。
下列属于应用软件的是()o
A.编译程序B.操作系统C.教务管理系统D.汇编程序
19.下列函数的运行结果是()。
#include<iostream.h>
intadd(inta,intb);
voidmain()
(
extemintX,y;
cout«add(X,y)«endl;
)
intx(20),y(5);
intadd(inta,intb)
(
ints=a+b:
returns;
)
A.25B.30C.20D.15
20.下列程序段中的变量已正确定义:for(i=0;i<4;i++,i++)for(k=l;
k<3;k++);printf("*");程序段的输出结果是()o
A********R****「**n*
21.在结构化设计方法中生成的结构图(SC)中,带有箭头的连线表示
A.模块之间的调用关系B.程序的组成成份C控制程序的执行顺序D.
数据的流向
22.软件开发离不开系统环境资源的支持,其中必要的测试数据属于
A.硬件资源B.通信资源C.支持软件D.辅助资源
23.若已定义
inta[]={l,2,3,4,5,6,7,8,9,10},p=a,i=5;
则对数组元素不正确的引用是()o
A.afp-a]B.*(&a[i])C.p[i]D.*(*(a+i))
三、2.填空题(12题)
24.表达式operator+(x,y)还可以表示为。
25.以下程序的执行结果是【】。
#include<iostream>
usingnamespacestd;
classbase
(
public:
virmalvoidwho(){cout<<"BaseClass"<<endl;)
classDerivedkpublicBase
public:
virtualvoidwho(){cout<<"DerivedlClass"<<endl;}
);
classderived2:publicBase
{
public:
virtualvoidwho(){cout<<"Derived2Class"<<endl;)
};
intmain(intargc,char*argvf])
(
baseobj1,*P;
deliVedlobj2;
derived2obj3;
p=&obj1;p->who();
p=&obj2;p->who();
p=&obj3;p->who();
return0;
)
26.设文件temp.txt已存在,则以下的打印结果是【】
#include<iostream>
#include<fstream>
usingnamespacestd;
intmain()
ofstreamoutf("temp.txt",iosbase::trunC);
outf<<"Howyoudoing";
outf.close();
ifstreaminf("temp.txt");
27.顺序存储方法是把逻辑上相邻的结点存储在物理位置【】的存储单
元中。
28.在有序列表(3,6,8,10,12,15,16,18,21,25,30)中,用二
分法查找关键码值12,所需的关键码比较次数为【】。
29.软件是程序、数据和的集合。
30.如下程序的输出结果是____o
#include<iostream>
usingnamespacestd;
classPet{
charname[10];
public:
Pet(char*nanle){strcpy(this->name,name);}
constchar*getName()const{returnname;}
virtualvoidcall()eonst=0;
);
classDog:publicPet{
public:
Dog(char*name):Pet(name){}
voidcall()eonst{cout<<"汪汪叫";)
);
classCat:publicPet{
public:
Cat(char*name):Pet(name){}
voidcall()const{eout<<"瞄瞄叫";}
);
intmain(){
Pet*petl=newDog("哈克"),*pet2=newCat("吉米");
eout<<petl->getName();petl->call();eout<<end];
cout<<pet2->getName();pet2->call();eout<<endl;
return0;
)
31.已知数组a中的元素个数为n,下列语句的作用是将下标为i的元
素移动到下标为i-1的单元,其中10i<n。例如,当n=4,a中原有数据
为1、2、3、4时,则移动后a中元素为2、3、4、4O请将语句补充完
整:
for(inti=0;i<n-1;i++)a[i]=ao
32.下面程序的运行结果为【]o
classA
}public:
intnum;
A(inti){num=i;}
A(A&a){num=++a.num;}
voidprint(){cout<<num;}
);
voidmain(){
Aa(l),b(a);
a.print();
b.print();
)
33.下面是复数类complex的定义,其中作为友元函数重载的运算符“-
「'的功能是将参数对象的实部减1,然后返回对该对象的引用;请补充
完整。
classcomplex
(
private:
intreal;
intimag;
public:
complex(intr=0,inti=O):real(r),imag(i){}
voidshow()
{
cout((real<<(imag<:“+“)<(imag<<'i';
)
34.在结构化分析使用的数据流图中,使用用解释其中的图形元
素。
35.可以把具有相同属性的一些不同对象归类,称为。
四、程序改错题(10题)
36.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,但该程
序运行有问题,请改正main函数中的错误,使该程序的输出结果正
确。
程序输出:
8
8
注意:错误的语句在/********error********/的下面。修改该语句
即可,其他的语句不能修改。
试题程序:
#include(iostream.h>
classCO
{
public:
I********error********/
staticintn=0:
CO
n++:
)
〜CO
(
n—:
)
):
I********enor********
intCO::n;
voidmain
(
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
I********error********
eout«C.n«endl;
cout«C0::n«endl;
37.使用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
!1********error********
TCobjl;
objl.Print;
TCobj2(3);
objl.number=10;
Ii********enx)r*%()******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
38.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运
行时有错,请改正其中的错误,使程序正常运行,输出的结果为
Constructor,i=0,
Destructor
注意:错误的语句在//******error******的下面,修改该语句即可。
试题程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
~TC;
);
II******ej*|*or******
TC:TC
(
cout«"Constructor"«",
i=0;
)
!1******enor******
TC:display
(
tout«"i="«i<<","«endl;
)
!1******error******
TC:TC
{
COUI«"Destructor"«endl:
)
voidmain
(
TCa;
a.display;
)
39.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,该程序
运行时有错。请改正程序中的错误,使程序输出的结果为
100
37
32
注意:错误的语句在//******error******的下面,修改该语句即
可。
试题程序:
#include<iostream.h>
II******error******
voidmain
II******error******
intm=0142:
I/******error******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
40.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运
行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果
为:
sizeof(S1)=5
sizeof(s2)=10
sizeof(s3)=l
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******error******的下面。
⑴不能删除assert()语句。
(2)只能修改后面的数字。
提示:assert函数如果为假,则会产生一个中断异常。
试题程序:
#include<iostream.h>
#include<assert.h>
voidmain()
char*sl="abc":
!1********error********
assert(sizeof(s1)==3):
cout«"sizeof(s1)=5"«endl;
chars2[10]="ab":
!1********enoj*********
assert(sizeof(s2)==2);
cout«"sizeof(s2)=10"«endl;
chars3=23:
//********enor********
assert(sizeof(s3)==4);
cout«"sizeof(s3)=1"«endl;
return;
41.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序
运行时有错误,请改正错误,使程序正常运行,并且要求最后一个
catch必须抛出执行的任何异常。
程序异常,输出信息为
error
0
ERROR
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******errc)r******的下面。
试题程序:
#include<iostream.h)
intmain
(
try
(
throw("error");
}
II********error********
catch(chars)
(
cout«s«endl;
)
try
(
throw((int)0);
)
II********error********
catch
cout«i«endl;
try
(
throw(O);
throw("error");
)
II********error********
catch
(
cout«"ERROR"«endl;
)
returnO;
)
42.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运
行时有错误,请改正程序中的错误,使得程序输出:
9,8,7,6,5
注意:错误的语句在/********error********/的下面,修改该语句即
可。其他的语句不能修改。
试题程序:
#include(iostream.h>
classTC
{
I********enor********/
TC(inti)
m_i=i;
)
voidprint
cout«—m_i«,;
public:
intm_i;
intmain
!********enor********/
inti;
TC04(10);
while(i>5)
I**************/
1++:
04.print;
)
cout«endl;
retumO;
)
43.使用VC++6.0打开考生文件夹下的源程序文件1.cppo本程序要
求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输
入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕
中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******error******的下面。
试题程序:
#include<iostream.h>
voidmain
{
inti=O;
charstr[120];
cout«"Enterastringendwith?."«endl;
!1********enor********
cin.getline(str,120);
1I********error********
while(str)
!1********enor********
if(str[i])=a)
str[i]=str[i]-a+A;
1++;
)
cout«str«endl;
return;
)
44.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序
运行时有错,请改正其中的错误,使程序正常运行,输出的结果为
Constructor,i=0,
Destructor
注意:错误的语句在//******error******的下面,修改该语句即
可。
试题程序:
#include(iostream.h)
classTC
{
inti;
public:
TC;
voiddisplay;
〜TC;
};
//
/个个个不下不prrcr个不小个不不
TC:TC
(
cout«"Constructor"«",";
i=0;
)
/*1**1**1**1**1*«,*1**!/
//不不不不不不prrcr不不不不不不
TC:display
(
tout«"i="«i«","«endl;
)
!!******error******
TC:TC
COUI«"Destructor"«endl:
)
voidmain
(
TCa;
a.display;
}
45.使用VC++6.。打开考生文件夹下的源程序文件
1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实
现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在
II******error******白勺~曲j。
试题程序:
#include<iostream>
#include<fstream>
II********enor********
usingstd;
voidWriteFile(char*s)
(
ofstreamoutl;
II********error********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=O;i++)
outl.puts(s[i]);
)
outl.close;
)
voidClearFile
{
ofstreamoutl;
outl.open("l.txt");
outl.close;
}
intmain
(
chars[1024];
ClearFile;
cout«"pleaseinputastrin9:"«endl;
cin.getline(s,1024);
WriteFile(s);
retumO;
)
五、综合应用题(2题)
46.请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件
proj3,此工程中包含一个源程序文件proj3.cpp,补充编制C++程序
proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存
放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并
输出到文件out.dat中。文件in.dat的长度不大于1000字节。
要求:
补充编制的内容写在“〃***********与“//**********''两行之间。实现
将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得
修改程序的其他部分。
注意:程序最后已将结果输出到文件Out.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[len];
length=0;
while((trap=myFile.get)!=EOF)
str[1ength++]=trap;
str[length]=<\0,;
myFile.close;
voiddoc::reverse{
〃将数组atr中的length个字符中的第一个字符与最后一个字符交换,
第二个字符与倒数第二个
〃字符交换
//***********亭孝666***不*********
doc::〜doe
delete[]str;
voiddoc::writeToFile(char*filename)
{
OfstreamoutFile(filename);
outFile«str;
outFile.close;
)
voidmain
(
docmyDoc("in.daf,);
myDoc.reveme;
myDoc.writeToFilef'out.dat");
)
47.使用VC++6.。打开考生文件夹下的源程序文件3.cpp。请完成
以下部分,实现在屏幕上输出为
C3
C2
这个程序需要修改的部分,请按照以下部分实现。
(1)类CO不能被实例化,请定义一个纯虚函数print,在注释1后添加
适当的语句。
(2)类C1私有虚继承类CO,请在注释2后添加适当的语句。
(3)类C2公有继承于CO,请在注释3后添加适当的语句。
(4)类c3公有继承于C2与C1,请在注释4后添加适当的语句。
注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修
改其他的程序代码。
试题程序:
#include(iostream.h)
classCO
(
};
II
classCl:
{
public:
voidprint
{
cout<",,Cr,<<endl;
)
);
classC2:
(
public:
voidprint
(
cout<<"C2"<<endl;
}
};
r{*rgC4rf*X*f*
classC3:
public:
voidprint
{
cout<<"C3"<<endl;
)
);
voidmain
(
C3Obj3;
C20bj2;
obj3.print;
obj2.print;
return;
)
六、3.综合应用题(2题)
48.使用VC6打开考生文件夹下的工程testl2_3,此工程包含一个
testl2_3.cpp,其中定义了类Base和类A,类A公有继承Base,但这两
个类的定义都并不完整。请按要求完成下列操作,将程序补充完整。
(1)定义枚举类型变量en,它包含两个枚举符front和back,请在注释
“〃**1**”之后添加适当的语句。
(2)在类Base中添加常成员虚函数voidE()的定义,该函数输出“InBase
E!”,请在注释“〃**2**”之后添加适当的语句。
(3)在类A中添加常成员虚函数voidE()的定义,该函数先调用基类中的
虚函数E()再输出“InAE!”,请在注释“//**3**”之后添加适当的语句。
(4)完成类A构造函数的定义,请使用参数列表的形式初始化类A的成
员,并输出“Aconstructor.",请在注释“〃**4**”之后添加适当的语句。
输出结果如下:
Baseconstructor.
Aconstructor.
InBaseE!
InAE!
InBaseP!
InA!
1
Adestructor.
Basedestructor.
注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。
源程序文件testl2_3.cpp清单如下:
#include<iostream.h>
H**।**
classBase
(
protected:
intbl;
intb2;
public:
Base();
-Base();
intGetbl()const{returnb1;}
voidSetbl(intx){bl=x;}
intGetb2()const{returnb2;}
voidSetb2(inty){b2=y;}
voidPrint()const{cout<<"InBaseP!"<<endl;
〃**2**
);
Base::Base。:bl⑴,b2(5)
(
cout<<"Baseconstructor,"<<endl;
)
Base::~Base()
(
cout<<"Basedestructor."<<endl;
)
classA:publicBase
(
protected:
enenA;
public:
A();
~A();
enGetColor()const{returnenA;}
voidSetColor(encolor){enA=color;}
voidInA(){cout<<"InA!"<<end];}
H**3**
Base::E();
cout<<"InAE!"<<endl;
)
);
〃**4**
{
cout<<"Aconstructor."<<endl;
)
A::-A()
(
cout<<"Adestructor."<<endl;
)
voidmain()
(
Aal;
al.E();
cout<<endl;
al.Print();
al.InA();
cout<<al.Getbl()<<endl;
)
49.使用VC6打开考生文件夹下的工程testlO_3,此工程包含一个源程
序文件testlO_3.cpp,其中定义了用于表示雇员信息的CEmployee类与
表示公司信息的Company类,但这两个类的定义并不完整。请按要求
完成下列操作。
⑴定义Cemployee类的私有数据成员name(大小为50的字符数组)和
pay(double型数据),分别用于记录雇员姓名和月薪。请在注释“〃**1***
之后添加适当的语句。
⑵完成Company类默认构造函数的定义,该构造函数将n值赋值给私
有成员nam,并完成指针emp所指的n个Cemployee对象空间的申请,
请在注释“〃**2**”之后添加适当的语句。
(3)完成Company类成员函数voidCompany::add(血code,charname[50],
doublepay)的定义,该函数将某一雇员的编号code、姓名name及月薪
pay输入到公司信息中。请在注释“〃**3**”之后添加适当的语句。
(4)完成Company类成员函数voidCompany::print()的定义,使其以“_is
paid_RMBforouemonth”的格式输出公司内所有员工的月薪信息。请在
注释“〃**4**,,之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件旭stlO_3.cpp清单如下:
#include<iostream.h>
#include<string.h>
classCEmployee
(
public:
voidputname(charn[50]){strcPY(name,n);)
voidgetname(charnf501){strcDY(n,name);)
voidputpay(doubled){pay=d;)
doublegetpay(){returnpay;)
private:
〃**]**
);
classCompany
private:
CEmployee*emp;
intnum;
public:
Company(intn);
voidadd(intCOde,Charname[501,doublepay);
voidprint();
)
Company::Company(intn)
{
)
voidCompany::add(intcode,Charname[50],doublepay)
(
〃**3**
)
voidCompany::print()
(
for(inti=0;i<num;i++)
(
(emp+i)->getname(C);
money=(emp+i)->getpayO;
cout<<C<<"ispaid"<<money<<"
RMBforonemonth"<<endl;
)
)
voidmain()
(
Companycom(2);
com.add(0,"Jack",200);
com.add(l,"Lee",300);
com.print();
参考答案
1.DD.【解析】由3个结点组成的二叉树可以有5种形杰,如下图所
不。
2.D解析:数据结构、数据操作和数据约束条件这三个方面完整地描述
了一个数据模型,其中数据结构是刻画模型性质的最基本的方面。[考点
链接]关系数据库系统、关系数据模型、关系模型的数据结构。
3.C
4.D解析:线性表可以为空表,排除选项B。第一个元素没有直接前件,
最后一个元素没有直接后件,故排除选项A。线性表的定义中,元素的
排列没有规定大小顺序,故选项C也有误,只有D项是正确的。
5.B解析:本题要考查的实际是字符数组,用于向函数传递参数,属于
指针或引用传递方式。要注意的是考生不要被名称所迷惑,即根据A和
D是相同类别的,故可以排除。对C来说,也属于指针传递方式,而B
不仅不属于指针传递,而且还没有限定数组大小,编译器在编译时就会
产生错误。
6.A解析:单目的什运算优先级高于双目的+运算,不过抖的结合性是
自右向左的,而+是自左向右的,所以上面的两个表达式都是先计算a
+b的值之后,a再自加1。
7.D解析:本题考核虚基类的声明。C++中,虚基类说明格式如下:class
〈类名〉:virtual(继承方式〉〈基类名〉。其中,virtual是虚基类的
关键词。虚基类的说明是用在定义派生类时,写在派生类名的后面。
8.B
9.D解析:通常,引用一个数组元素可以用下标法,如a[P-a]形式,或
指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,
注意,数组的下标是从。开始的。
10.C
H.BBO【解析】A是有符号数,C是浮点数,D是集合,并不是类的实
例化对象,只有B完全符台。
12.C解析:本题考核模板函数的使用。在说明一个函数模板后,当编译
系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹
配函数模板中对象的形参,然后生成一个重载函数。由此可知模板函数
的真正代码是在函数调用时产生的。
13.A
解析:=、口、()、->以及所有的类型;转换运算符只能作为成员函数
重载,A项正确。默认的赋值运算符只实现了浅层复制,B项错误。
赋值运算符只能作为成员函数重载,形参表中只有一个参数,对应于
第二操作数,C项错误。一个类中如果需要重载运算符“=”,通常也
就需要定义自己特有的复制构造函数,反之亦然,故D项错误。
14.A
Ao【解析】本题考查C++中cin输入流对象的使用规则,其特点是
以空格、回车和tab为分隔符。因此this和is之间的空格告诉cin对象
停止接收后面的数据。故正确答案为A。
15.C根据总体结构图可以看出该树的深度为3,比如:XY系统——功
能2——功能2.1,就是最深的度数的一个表现。
16.A
Ao本题考查C++流的溉念和I/O的格式化。tin是istream类的对
象,即输入流对象。ifstream是输入文件流,类不能定义个输出流对
象。getline函数的功能是允许从输入流中读取多个字符,并且允许指
定输入终止,在读取完成后,从读取的内容中删除该终止字符,所以
D选项中的语句序列后x中字符串应该是Happynewyearo
17.A
18.C
Co【解析】编译程序和汇编程序缩于开发工具;操作系统属于系统软
件;而教务管理系统属于应用软件。
19.A
Ao【解析】由主函数main入手,定义外部变量x和y,调用函数
addo因为x,y为外部变量,所以“intx(20),y(5);”的赋值在add也是
有效的,即add函数的运算结果为25。
20.D
Do【解析】本题中第二个for循环语句的后面有一个分号,所以两个
for循环语句的执行语句为空。当两个for循环语句执行完后,再执行
printf语句输出一个星号。所以正确答案为选项D。
21.A解析:在结构图中,用带有箭头的连线表示模块之间的调用关系。
箭头由前一个模块指向后一个模块,表示前一个模块调用后一个模块。
本题的正确答案为A。
22.D
软件开发离不开系统环境资源的支持,其中主要的资源有硬件资源、
通信资源、辅助资源等。
(1)硬件资源是指组成计算机及相关应用所需要的硬件,它是软件开
发必不可少的资源,因为无论什么样的软件工具都需要在硬件上完成
任务,它是其他资源的基础资源。
(2)通信资源是指为软件开发提供通信支撑的资源,它与测试数据无
关。
(3)支持软件是指为软件开发提供操作平台的软件,如常用的面向对
象开发的Rose软件,它主要是软件开发的工具。
通过对上述分析的总结,可以知道本题的正确答案选D。
23.D
Do【解析】数组和指针的关系非常密切,因为数组名称单独使用是表
示数组的首地址。故可用的表示可能是a[i],p[i],*(P+i),同样&
(a[i])表示地址,因此*(&a[i])等同于a[i]。本题答案为D。
24.x+yx+y解析:本题考查的是运算符函数的调用,可以像一般函数
那样用函数名进行调用,也可通过运算符构成表达式的形式进行调用。
25.BaseClassDerivedlClassDerived!Class
26.HowHow解析:本题考核文件的I/O操作。程序中定义了ofstream类
的对象outf和ifstream类的对象info然后利用对象outf在文件test.txt
中写入“Howyoudoing"。最后利用对象inf打开文件,将其中的数据输
入到变量str中,由于读时遇到空格时就终止,所以str中存放的字符串
为“How”。
27.相邻相邻解析:常用的存储表示方法有4种,顺序存储、链式存储、
索引存储、散列存储。其中,顺序存储方法是把逻辑上相邻的结点存储
在物理位置也相邻的存储单元中。
28.4
29.相关文档相关文档
30.哈克汪汪叫吉米嗡嗜叫哈克汪汪叫吉米瞄嘀叫
31.a[i+l]a[i+l]解析:实现由后面一个数组元素将前一个数组元素进行
覆盖,故应该为a[i]=a[i+l]。
32.静态静态解析:在C++类的规定中,静态函数只能给引用类的静态
成员和非数据成员。
33.friendcomplex&operator—(complex&)ofriendcomplex&operator—
(complex&)o解析:程序要填入的是运算符函数operator--在类complex
中的声明,运算符是作为友元函数重载的。
34.数据字典数据字典解析:数据字典(DataDictionary,简称DD)的作
用是对DFD中出现的被命名的图形元素进行确切解释。通常数据字典
包含的信息有名称、别名、何处使用/如何使用、内容描述、补充信息等。
35.对象类对象类
36.(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;
37.⑴应改为“TCobjl⑴;
\n(2)应改为“Objl.SetNumber(lO);
\n(3)应改为“0bj2.SelNumber(lOO);"。
\n【解析】本题第1处的“TCobjl;”语句是声明TC类的对象Objl,根据
TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个输
出结果两1,所以补全参数1,即第1处的“TCobjl(l);第2处处的
“objl.number=10;”应该是调用成员函数SetNumber赋值。在C++中
成员函数的使用形式应该是:对象名.成员函数,所以修改为
“objl.SetNumber(lO);"。类是对象的抽象,而对象是类的具体实例。
第3处叮(3.56时110收式100);”语句中的T(2为类,并不是对象,这里
应该使用定义的对象,即obj2,所以将语句修改为
“obj2.SetNumber(lOO);
38.(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处的语句"(3::1<:”可知,显然这里是在类外实现析构函数,析构函
数是一个特殊的函数,它的名称和类名相同,并在前面加“字符,用
采与构造函数加以区别,因此第3处的语句应改为“TC::〜TC”。
,,
39.(1rvoidmaino
(2)“intm=0144;
(3)“intn=OX25;”或"intn===0x25;
【解析】本题主要考查了主函数定义及幕同进制之间的转换,包括十
进制到八进制,十进制到十六进制。主函数定义的定义形式为
“main”,函数名之后必须是一对括号,因此第1处应改为“voidmain”。
cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发
现变量的初值不正确,十进制的100对应八进制的144,卡进制的37
对应十六进制的25,因此2和3应分别改成“intm=0144;”,
“intn=0x25;”或“intn=0x25;
40.(1)应改为"assert(sizeof(sD==4);”。
\n⑵应改为"assert(sizeof(s2)=lO);
\n(3)应改为"assert(sizeof(s3)=l);
\n【解析】assert函数如果为假,则会产生一个中断异常。所以要让它正
常执行输出结果,那么assert函数只有为真,才不会产生中断异常。
“assert(sizeof(sl)=3);"语句中"sizeof(sl)==3”为假,这会使程序产生异
常,不能正常执行。因为strl的值为abc,但是它还有一个尾符,它的
长度应该是4,而不是3,所以在第1处修改为“assert(sizeof(sl)==4)二。
str2[10]说明,str2的空间为10,在第2处修改为"assert(sizeof(s2)=10)
charstr3=23;语句说明23是字符,所占存储空间为1,所以修改为
uassert(sizeof(s3)=1);”。
41.⑴应改为"catch(char*s)”。
⑵应改为“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(…)”。
42.(1)应添加“public:
\n(2)''inti”应改为"inti(10);”。
\n(3)4ti++;”应改为“i-;
\n【解析】本题主要考查的是成员的访问属性。成员的访问属性有公有、
保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类
的对象被访问。故应在构造函数前添加“public:“,否则该类无法被实例
化。变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造
参数,题目已要求使用后者。本题要求输出5个数,while的循环变量i
每次减1,在i>5时循环,故i初始化应为10o若循环中i每次增1,则
循环永远不会退出。
43.(1)应改为"ein.getline(str,120,?);
\n(2)应改为"while(str[i])"°
,,
\n(3)应改为“if(str[i]>=a&&str[i]<=2)o
\n【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员
函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符个
数,终止标志字符)”,所以第1处改为“cin.getline(str,120,?);第
2处的“while(str)”语句应该是判断字符串str中的每一个字符是否为结
束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,
则转换。所以应该修改为“while(str[i])"°第3处的“if(str[i]>=a)”语句是
判断字符str用是否为小写字符,而现有的语句只是判断字符是否大于a,
,,
但是小写字符应该是a到2,所以修改为“if(str[i]>=a&&str[i]>=z)o
44.(1)应改为“TC::TC”。
⑵应改为“voidTC::display”。
(3)应改为“TC::〜TC",
【解析】在类的外部定义成员函数时一,必须在成员函数前面加上类名
和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个
类,使用格式为“(类名)::〈成员函数〉((参数函数)),因此第1处应改
为“TC::TC”,默认构造函数没有参数。由第2处“TC::display”后
的语句看,这是在类外实现TC函数,因
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年万能杀菌枪项目可行性研究报告
- 《等差数列的概念及通项公式》名师课件
- 医学教材 爱眼护眼预防近视学习资料
- 医疗质量与安全管理小组工作职责
- 软件开发过程质量控制实施方案
- 通信施工难点、重点的技术措施
- 中小学家校联动学情分析方案
- 初三年级组上学期工作计划
- 科技公司开放式办公家具设计方案
- 水资源调度优化实施方案
- 结核病防治知识健康讲座总结
- 业主授权租户安装充电桩委托书
- 医院内急诊重症快速反应小组建设专家共识1
- 形象与礼仪智慧树知到期末考试答案2024年
- 2024年黑龙江检察机关法院书记员招聘笔试参考题库附带答案详解
- 中考命题作文预测及导写:“一步一步往前走”
- 口腔消毒灭菌知识培训课件
- 针刺治疗颈椎病
- 室内设计大学生职业生涯规划模板
- 工程人员服务意识培训课件
- 儿童视力保护培训课件
评论
0/150
提交评论