版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年安徽省铜陵市全国计算机等级考试
C++语言程序设计模拟考试(含答案)
学校:班级:姓名:考号:
一、1.选择题(10题)
i.在位运算中,操作数每右移一位,其结果相当于()
A.操作数乘以2B.操作数除以2C.操作数乘以4D.操作数除以4
2.下列程序的运行结果是()。#include<iostream.h>voidfun(int*a,int
*b){int*k;k=a;a=b;b=k;}voidmain(){int
a=2OO4,b=9,*x=&a,*y=&b;fun(x,y);cout<<a<<""<<b<<end1;}
A.20049B.92004C.OD.编译时出错
3.有如下程序:#include<iostream>usingnamespacestd;class
BASE{public:-BASE(){cout<<"BASE";}};classDERIVED:public
BASE{public:〜DERIVED(){cout<<"DERIVED";}};int
main(){DERIVEDx;return0;)执行后的输出结果是
A.BASEB.DERIVEDC.BASEDERIVEDD.DERIVEDBASE
4.下列引用的定义中,()是错误的。
A.inti;int&j=i
B.inti;int&j;
C.floati;int&j;j=i
D.chard;char&k=d;
5.关于数据库系统的特点,下列说法中错误的是数据o
A.结构化B.共享性高C.独立性差D.统一管理和控制
6.结构化程序设计的核心和基础是()o
A.结构化分析方法B.结构化设计方法C.结构化设计理论D.结构化编
程方法
7.有以下程序
#include<iostream>
usingnamespacestd;
classMyClass{
public:
MyClass(intn){number=n;}〃拷贝构造函数
MyClass(MyClass&other){number=other.number;}
〜MyClass(){}private:intnumber;
};
MyClassfun(MyClassp){
MyClasstemp(p);
returntemp;
}
intmain(){
MyClassobjl(10),obj2(0);
MyClassobj3(objl);
obj2=fun(obj3);
return0;
)
程序执行时,MyClass类的拷贝构造函数被调用的次数是
A.5B.4C.3D.2
8.将E-R图转换到关系模式时,实体与实体间的联系可以表示成()o
A.属性B.关系C.键D.域
9.决定C++语言中函数的返回值类型的是()。
A.return语句中的表达式类型
B.调用该函数时系统随机产生的类型
C.调用该函数时的主调用函数类型
D.在定义该函数时所指定的数据类型
10.下列程序的输出结果为2,横线处应添加语句()。#include<iostream
>usingnamespacestd;{public:voidfun(){cout<<1;}};class
TestClass2:publicTestClassl{public:voidfun(){cout<<2;)};intmain()
{TestClassl*p=newTestClass2;p->fun();deletep;Teturn0;}
A.publicB.privateC.virtualD.protected
二、单选题(13题)
11.下列程序的输出结果是()。
#include<iostream.h>
voidmain()
(char*str="12123434";
intxl=O,x2=0,x3=0,x4=0,i;
for(i=0;str[i]!=\0;i++)
switch(str[i])
{easel:x4++;
case2:x3++;
case3:x2++;
case4:xl++;
)
cout«xl«","«x2<:<","«x3<
<","«x4;
)
A.8,6,4,1B.8,6,3,2C.8,8,4,1D.8,6.4,2
12.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是_________O
A.编译程序B.操作系统C.教务管理系统D.汇编程序
13.设有两个串p和q,求q在p中首次出现位置的运算称为()。
A.连接B.模式匹配C求子串D.求串长
14.C++语言本身没有定义I/0操作,但I/0操作包含在C++实现
中。C++标准库iostream提供了基本的I/0类。I/O操作分别由两
个类istreanl和()提供。
A.fstreamB.iostreamC.ostreamD.cin
15.下列符号中可以用做C++标识符的是()。
A._radiusB.fOO~barC.elseD.3room
16.有下列程序:
#include<stdiO.h>
structst
{intx,Y,date[2]={l,10,2,20};
voidmain()
{structst*p=date;
printf("%d,",p->y);printf("%d\n",(++p)
->x);
)
程序的运行结果是()。
A.A.10,1B.20,1C.10,2D.20,2
17.数据库设计中反映用户对数据要求的模式是()。
A.内模式B.概念模式C外模式D.设计模式
18.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的
默认打开方式为()。
A.ios-base::in
B.ios-base::in1iosbase::Out
C.losbase;:Out
D.iosbase::in&iosbase::Out
19.有如下程序:
#include<iostream>
usingnamespacestd;
classPair{
intm;
intn;
public:
Pair(inti,intj):m(i),n(j){}
booloperator>(Pairp)const;〃须在类体外给出定义
);
intmain(){
Pairpl(3,4),p2(4,3),p3(4,5);
cout«(p1>p2)«(p2>p1)«(p2>p3)«(p3>p2);
return0;
)
运算符函数operator〉的功能是比较两个Pair对象的大小,当左边对象
大时,返回true,否则返回false。比较规则是首先比较两对象的m成
员,m大者为大;当m相等时比较n,n大者为大。程序输出0101,下
列对运算符重载函数的正确定义是o
A.boolPair::operator>(Pairp)const{if(m!=p.m)returnm>p.m;return
n>p.n;}
B.boolPair::operator>(Pairp){if(m!>p.m)returnm>p.m;returnn>p.n;}
C.boolPair::operator>(Pairp)const{if(m>p.m)returntrue;returnn>p.n;}
D.boolPair::operator>(Pairp){if(m>p.m)returntrue;returnn>p.n;}
20.能正确表示逻辑关系:-a>10或aSO”的C++语言表达式是
A.a>=10ora<=0
B.a>=0|a<=10
C.a>+10&&a<=0
D.a>=10||a<=0
21.下面关于派生类的描述中错误的是()
A.派生类中至少有一个基类
B.一个派生类可以作为另一个派生类的基类
C.派生类只继承了基类中的公有成员和保护成员
D.派生类的缺省继承方式是私有
22.关于面向对象的程序设计方法,下列说法正确的是
A.“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进
行处理
B.“多态性”指的是对象的状态会根据运行时要求自动变化
C.基类的私有成员在派生类的对象中不可访问,也不占内存空间
D.在面向对象的程序设计中,结构化程序设计方法仍有着重要作用
23.下列引用的定义中,()是错误的。
A.inti;int&j=i;
B.inti;int&j;j=i:
C.floati;float&j=i;
D.chard;char&k=d;
三、2.填空题(12题)
24.汇编程序的功能是将汇编语言所编写的源程序翻译成由【】组成的
目标程序。
25.关系数据库管理系统能实现的专门关系运算包括选择、连接和【】。
26.数据结构分为线性结构和非线性结构,带链的队列属于。
27.数据的逻辑结构有线性结构和【】两大类。
28.有以下面程序:
#include<iostream>
usingnamespacestd;
longfib(intn)
(
if(n>2)
return(fib(n-1)+fib(n-2));
else
return2;
)
intmain()
(
cout<<fib(3)<<endl;
return0;
)
则该程序的输出结果应该是【】。
29.根据注释内容在空白处填写适当内容。
classLocation
(
private:
intX,Y;
public:
voidinit(intinitX,intinitY);
intGetX();
intGetY();
);
voidLocation::init(intinitX,intinitY)
{
X=initX;
Y=initY;
)
intLocation::GetX()
(
reutrnX;
}
intLocation::GetY()
(
reutrnY;
)
#include<iostream.h>
voidmain()
(
LocationA1;
Al.init(20,90);
〃定义一个指向Al的引用rAl
cout<<rAl.GetX()<<<<rAl.GetY()<<endl;
)
30.设一棵完全二叉树共有839个结点,则在该二叉树中有【】个叶
子结点。
31.是一种信息隐蔽技术,目的在于将对象的使用者和对象的设
计者分开。
32.在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系
的是_________框。
33.C++语言中的基本符号可以分为____三类。
34.下面程序的输出结果是【】。
#defineMIN(a,b)(((a)<(b))?a:b)
#include<iostream.h>
voidmain()
intx=3,y=5;
cout<<MIN(x,y)<<endl;
35.在类的对象被创建时,____函数会被自动调用。
四、程序改错题(10题)
36.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,但该程
序运行有问题,请改正main函数中的错误,使该程序的输出结果正
确。
程序输出:
8
8
注意:错误的语句在/********error********/的下面。修改该语句
即可,其他的语句不能修改。
试题程序:
#include(iostream.h>
classCO
(
public:
I********error********/
staticintn=O:
CO
(
n++:
)
〜CO
(
n—:
)
):
I**************/
intCO::n;
voidmain
(
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
I********enor********/
eout«C.n«endl;
cout«CO::n«endl;
)
37.使用VC++6.。打开考生文件夹下的源程序文件1.cpp。本程序
要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可
能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出
到屏幕中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******errc)r******的下面。
试题程序:
#include<iostream.h>
voidmain
{
inti=O;
charstrf120];
cout«"Enterastringendwith?."«endl;
II********enor********
cin.getline(str,120);
II********error********
while(str)
{
II********error********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
)
cout«str«endl;
return;
38.使用VC++6.0打开考生文件夹下的源程序文件1.叩p,该程序
运行时有错误,请改正错误,使程序正常运行,并且要求最后一个
catch必须抛出执行的任何异常。
程序异常,输出信息为
error
0
ERROR
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******error******的下面。
试题程序:
#include<iostream.h)
intmain
{
try
(
throw("error");
}
I!********enor********
catch(chars)
cout«s«endl;
)
try
(
throw((int)0);
}
I!********enor********
catch
(
cout«i«endl;
)
try
(
throw(O);
throw("error");
)
II********error********
catch
(
cout«"ERROR"«endl;
)
retumO;
)
39.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运
行时有错,请改正其中的错误,使程序正常运行,输出的结果为
Constructor,i=0,
Destructor
注意:错误的语句在//******error******的下面,修改该语句即可。
试题程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
~TC;
!1******error******
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;
)
40.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,该程序
运行时有错。请改正程序中的错误,使程序输出的结果为
100
37
32
注意:错误的语句在//******errc)r******的下面,修改该语句即
可。
试题程序:
#include<iostream.h>
/I******error******
voidmain
{
II******enor******
intm=0142:
II******error******
intn=0X27:
intq=32;
cout<<m<<endl;
cout<<n<<endl;
cout<<q<<endl;
return;
)
41.使用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
TCobjl;
objl.Print;
TCobj2(3);
II********error********
objl.number=10;
Ii********error*******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
42.使用VC++6.。打开考生文件夹下的源程序文件
1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实
现的功能为从键盘输入一个字符串,并将结果保存到文件Ltxt中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在
!!******error******白勺~曲j
试题程序:
#include<iostream>
#include<fstream>
usingstd;
voidWriteFile(char*s)
ofstreamoutl;
II********enor********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
{
II********error********
outl.puts(s[il);
)
outl.close;
)
voidClearFile
(
ofstreamoutl;
outl.open("l.txt");
outl.close;
)
intmain
(
chars[1024];
ClearFile;
cout«"pleaseinputastrin9:"«endl;
cin.getline(s,1024);
WriteFile(s);
returnO;
)
43.使用VC++6.0打开考生文件夹下的源程序文件1.cppo本程序要
求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输
入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕
中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******errc)r******的下面。
试题程序:
#include<iostream.h>
voidmain
(
inti=O;
charstr[120];
cout«"Enterastringendwith?."«endl;
!1********enor********
cin.getline(str,120);
!1********error********
while(str)
!1********error********
if(str[i])=a)
strfi]=str[i]-a+A;
i++;
)
cout«str«endl;
return;
)
44.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运
行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果
为:
sizeof(Sl)=5
sizeof(s2)=10
sizeof(s3)=l
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******errc)r******的下面。
⑴不能删除assert()语句。
(2)只能修改后面的数字。
提示:assert函数如果为假,则会产生一个中断异常。
试题程序:
#include<iostream.h>
#include<assert.h>
voidmain()
{
char*sl="abc":
********error********
assert(sizeof(s1)==3):
cout«"sizeof(sl)=5"«endl;
chars2[10]="ab":
!1********error********
assert(sizeof(s2)==2);
cout«"sizeof(s2)=10"«endl;
chars3=23:
!I********error********
assert(sizeof(s3)==4);
cout«"sizeof(s3)=l"«endl;
return;
)
45.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,该程序
运行时有错误,请改正错误,使程序正常运行,并且要求最后一个
catch必须抛出执行的任何异常。
程序异常,输出信息为
error
0
ERROR
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******errc)r******的下面。
试题程序:
#include<iostream.h)
intmain
try
(
throw("error");
)
I/********enor********
catch(chars)
{
cout«s«endl;
)
try
(
throw((int)0);
)
II********enor********
catch
(
cout«i«endl;
)
try
{
throw(O);
throw("error");
)
II********enor********
catch
(
cout«"ERROR"«endl;
returnO;
)
五、综合应用题(2题)
46.使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定
义了类BA、PA1和PA2,其中PA1类由BA类公有派生,PA2类由
PA1类公有派生。上述3个类的定义并不完整,请按要求完成下列操
作,将程序补充完整。
程序输出结果如下:
10
5
1057
(1)定义类BA的构造函数,该构造函数有一个整型的参数m,在构造
函数中将m赋值给数据成员a。请在注释1之后添加适当的语句。
(2)定义类PA1的构造函数,该构造函数有两个整型的参数m和n,在
构造函数中将m赋值给数据成员b,将n作为基类BA构造函数的参
数值传人。请在注释2之后添加适当的语句。
(3)定义类PA2的构造函数,该构造函数有3个整型的参数m、n和
k,在构造函数中请将m赋值给数据成员c,将n和k分别赋值给基类
PA1构造函数的参数m和no请在注释3之后添加适当的语句。
(4)完成类PA2的成员函数show的定义,该函数调用基类成员函数,
输出基类私有成员a、b及类PA2自身的数据成员C的值,上述3个
值在输出时用空格隔开。请在注释4之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
试题程序:
#include(iostream.h>
classBA
(
inta;
public:
//rjC[<|C<{»r}C<|Cr}»r}C
intgeta{returna;}
};
classPAl:publicBA
(
intb;
public:
/*!>*1**1*'I,*1**1**1**!**1**1**1**1**.!**1**1**1>
//木本不木木本不不2""""
intgetb{retumb;}
};
classPA2:publicPAl
(
intC;
public:
voidshow
(
//********4********
)
};
voidmain
PA2a(7,5,10);
cout«a.geta«endl;
cout«a.getb«endl;
a.show;
)
47.(1)应添加“BA(intm){a=m;}”。
⑵应添力口“PAl(intm,intn):BA(n){b=m;}”。
(3)应添力H“PA2(intm,intn,intk):PAl(n,k){C=m;)”。
(4)应添力[Tcout<<geta<<""<<getb<<""<<C<<endl;
【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构
造函数的名称为BA,在BA中通过参数m完成对成员变量a的赋值,
因此构造函数的名称为BA(intm),在函数内部对成员a赋值,故第1处
的语句应添加“BA(intm){a=m;)”。根据第2处的要求,构造函数的形式
为“PAl(intm,intn)”,m赋值给PA1类成员b,将n作为基类BA构造函
数的参数值传入,故第2处应添力口“PAl(intm,intn):BA(n){b=m;}”。
根据第3处的要求,函数形式为PA2(intm,intn,intk),在构造函数中
将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参
数m和n,因此第3处应添力口“PA2(intm,intn,intk):PAl(n,k){C=m;}”。
根据第4处的要求,PA2类公有派生于PAI,而PA1公有派生于BA,
因此在PA2类中可以调用基类的geta和getb来获得基类私有成员a和
b,再输出PA2的私有成员C即满足要求,因此第4处应添加
t4cout«geta«""«getb«""<<C«endl;
六、3.综合应用题(2题)
48.使用VC6打开考生文件夹下的工程MyProj2。此工程包含一个源程
序文件MyMain2.cpp,此程序的运行结果为:
Derivel'sPrint()Called.
Derive2'sPrint()called.
其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
①定义函数Print。为无值型纯虚函数。请在注释“〃**1**”之后添加适当
的语句。
②建立类Derive1的构造函数,请在注释“〃**2**”之后添加适当的语句。
③完成类Derive?成员函数Print。的定义。请在注释“〃**3**”之后添加
适当的语句。
④定义类Derivel的对象指针dl,类Derive2的对象指针d2。其初始化
值分别为1和2。
源程序文件MyMain2.cpp中的程序清单如下:
//MyMain2.cpp
#include<iostream>
usingnamespacestd;
classBase
(
public:
Base(inti)
b=i;
〃**]**
protected:
intb;
);
classDerivel:publicBase
{
public:
〃**2**
voidprint()
(
cout<<"Derivel'sPrint()called."<<endl;
classDerive2:publicBase
(
public:
Derive2(inti):Base(i){}
〃**3**
);
voidfun(Base*obj)
{
obj->Print();
)
intmain()
{
〃**4**
fun(dl);
fun(d2);
return0;
)
49.使用VC6打开考生文件夹下的工程test39_3o此工程包含一个
test39_3.cpp,其中定义了类ARRAY和其派生类STUDENT,其中类
ARRAY是一个多态数组,该数组可以存放学校中的各类人员,如学生
等,但它们的定义并不完整。请按要求完成下列操作,将程序补充完整。
⑴定义类ARRAY的三个公有成员纯虚函数add(inta)、del(intd)和
show(ints),它们的返回值类型都是void型的。请在注释“〃**1***之后
添加适当的语句。
(2)添加派生类STUDENT的保护数据成员float型的二维数组table,使
其有row行和s_col列请在注释“〃**2**”。之后添加适当的语句。
(3)完成派生类STUDENT的成员函数del(ints)的定义,实现把二维数组
第s行删除的功能,即把该行清零,请在注释“〃**3**”之后添加适当的
语句。
(4)完成派生类STUDENT的成员函数show(ints)的定义,使其以格式“"
跳格table[行号][列号]is一换行”依次输出s行的各个元素,请在注释
“〃**4**,,之后添加适当的语句。
源程序文件test39_3.cpp清单如下:
#include<iostream.h>
#include<stdlib.h>
constintrow=100;
constints_col=3;
classARRAY
(
public:
//**]**
)
classSTUDENT:publicARRAY
{
public:
virtualvoidadd(ints)
(
cout<<"\tlnputdataofSTUDENT."<<endl;
cout<<"\tFirst:";
cin>>tablets][0];
cout<<'\tSecond:;
cin>>table[s][1];
cout<<"\tThird:";
cin>>table[s][2];
)
virtualvoiddel(ints);
virtualvoidshow(ints);
protected:
inti;
H**2**
);
voidSTUDENT::del(ints)
**3**
voidSTUDENT::show(ints)
(
cout<<endl;
for(i=0;i<=s_col-l;i++)
**4**
intmain()
(
STUDENTst;
ARRAY*ap;
ap=&st;
ap->add(3);
ap->show(3);
ap->del(3);
ap->show(3);
return0;
参考答案
1.B
右移运算符">〉”是双目运算符。其功能是把“>>"左边的运算数的各二
进位全部右移若干位,">>”右边的数指定移动的位数。例如:设
a=15,a»2表示把000001111右移为00000011(十进制3)。
2.A
3.D解析:本题考核派生类的定义和使用。当对象被删除时,派生类的
析构函数就被执行。由于析构函数不能被继承,因此在执行派生类的析
构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析
构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相
反。所以当main函数结束时,派生类DERIVED的对象x将被删除,
那么派生类DERIVED的析构函数先被调用,输出DERIVED,然后调
用基类的析构函数输出BASEO
4.B
5.C
6.CC。【解析】结构化程序设计的核心和基础是结构化设计理论,其中
包括:结构化分析方法、结构化设计方法和结构化编程方法。
7.B
解析:本题考核C++的拷贝构造函数。调用拷贝构造函数的情况
为:一个新对象被另一个已存在的同类型对象初始化:当一个对象作
为实参传递给函数时为初始化形参,要调用拷贝构造函数。在函数值
返回时形参的生命期结束时它的结构函数被调用;在函数返回一个对
象时调用拷贝构造函数。符合以上条件的有:用对象。objl来初始
化。obj3;obj3作为实参被传入;函数fun返回一个对象时;系统用返
回值初始化一个匿名对象时调用了拷贝构造函数。总共调用4次。
8.B解析:将E-R图转换成指定RDBMS中的关系模式是数据库逻辑
设计的主要工作。从E-R图到关系模式的转换是比较直接的,实体和联
系都可以表示成关系。
9.D
10.C解析:由主函数main入手,定义TestClassl类的指针对象p指向
派生类Testclass2。因为基类和派生类中都有fun函数,题目要求输出
为2,就是基类对象访问派生类中fun函数。通过虚函数与指向基类对
象的指针变量的配合使用,就能方便调用同名函数。所以这里将基类
中的fun函数声明为virtual。并且当一个成员函数被声明为虚函数后,
其派生类中的同名函数自动成为虚函数。
11.D
Do【解析】本题考查循环的嵌套、for和switch语句的应用、C++
中各种条件判断,循环语句的用法。只要注意在C++语言中,系统
在字符指针的最后位置会增加一个字符串结束符\0,执行8次for循
环,再根据switch语句中的条件易知答案。
12.C解析:软件按功能可以分为:应用软件,系统软件、支撑软件(或工
具软件)。应用软件是为解决特定领域的应用而开发的软件。例如,事务
处理软件、工程与科学计算软件,实时处理软件,嵌入式软件,人工智
能软件等应用性质不同的软件。因此选项C教务管理系统属于应用软
件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机
用户提供各种服务的软件。如操作系统,编译程序,汇编程序,网络软
件,数据库管理系统等。因此选项A、B、D都属于系统软件。
13.B解析:字串的定位操作通常称为串的模式匹配,是各种串处理系
统中最重要的操作之一。
14.C
Co【解析】本题考查的是C++标准库iostream提供的基本I/O
类。istream提供了向流中插入数据的有关操作;Ostream提供了从流中
提取数据的有关操作。
15.A
本题考查C++标识符的命名规则.其规则有如下几点:①所有标识符
必须由字母、数字或下画线组成.且必须由字母或下画线开头;②所
有标识符不能使用C++已有的关键字;③大、小写字母表示不同意
义,即代表不同的标识符。选项B包含了字符“〜”,选项C是关键
字。选项D不能以数字开头。故答案为A。
16.C
co【解析】data[2]是两个结构体组成的数组,p指向结构体数组的首
地址,p->y访问第一个结构体的第二个元素;(++p)x访问第二个结
构体的第一个元素。所以输出为10,2o
17.C数据库系统的三级模式是概念模式、外模式和内模式。概念模式是
数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外
模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的
局部数据描述,所以选择C。内模式又称物理模式,它给出了数据库物
理存储结构与物理存取方法。
18.A
本题考查对文件输入流的操作,ifstream流类为输入流类,默认的文件
输入流扣'开方式为ios::in。故答案为A。
19.A
本题主要考查了常成员函数和运算符重载。因为const关键字可以用于
对重载函数的区分,所以在类外定义常成员函数时不能省略const关键
字,因此选项B和选项D错误。选项C中,如果m<p.m,n〉p.n返回
值为true,但题目要求返回值应为false,因此选项C错误。
20.D解析:逻辑运算符“『表示或的意思。
21.C解析:继承方式有公有继承、私有继承和保护继承3种,缺省的继
承方式是私有继承。派生类从基类继承所有的成员,但是对于基类的私
有成员派生类是不可直接访问的。
22.D
解析:本题考核C++程序的基本框架。“封装性”指将数据和算法捆
绑成一个整体,而不是将不同类型的相关数据组合在一起。C++中的
多态性是指一个面向对象的系统常常要求一组具有相同基本语义的方
法能在同一接口下为不同的对象服务。基类的私有成员在派生类的对
象中不可访问,但是也占据内存空间。C++同时支持结构化和面向对
象两种程序设计的基本框架,所以在面向对象的程序设计中,结构化
程序设计方法仍有着重要作用。
23.B
24.机器语言机器语言
25.投影投影解析:专门的关系运算主要包括对单个关系进行垂直分解
(投影操作)或水平分解(选择操作)和对多个关系的结合(连接操作)等。
26.线性结构线性结构解析:数据结构分为线性结构和非线性结构,其
中队列是属于线性结构。队列有两种存储结构:一种是顺序存储结构,
称为顺序队列;另一种是链式存储结构,称为链队列。题目中所说的带
链的队列就是指链队列。无论队列采取哪种存储结构,其本质还是队列,
还属于一种线性结构。因此,本题的正确答案是线性结构。
27.非线性结构非线性结构解析:数据的逻辑结构有线性结构和非线性
结构两大类。
28.44解析:本题主要考查C++中递归函数。递归函数即自调用函数,
在函数体内部直接或间接的自己调用自己,即函数的嵌套调用是函数本
身。递归调用分为直接递归调用和间接递归调用两种形式。本题程序为
求解典型递归数列Fibonacci数列中任意项值的简化程序(主函数中的调
用改成fib(n)即变成求解任意项值)。主函数通过调用fib()函数,fib()函
数内部再通过一个分支结构判断是否进行递归调用或退出递归调用,调
用方式为直接递归调用。主函数通过实参将值3赋给如()函数的形参n,
由于n=3满足if分支语句条件,因此函数进行递归调用,即计算fib(2)
和fib⑴的值;将2赋给fib()函数的形参后,由于n=2不满足if分之语
句条件,因此程序退出递归,返回2;将1赋给fib()函数的形参后,函
数同样返回2。因此函数递归调用的最终结果为返回2+2=4,即fib(3)=4,
程序最后输出值为4O
29.Location&rA1=A1;Location&rA1=A1;解析:本题主要考察引用的定
义。根据上下文以及注释可以获取所需要的类型及名称信息。
30.420420解析:一般二又树有一个性质:在任意一棵二叉树中,度为。
的结点(即叶子结点)总是比度为2的结点多一个。
在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的
结点。
综合以上两点可以得到如下结论;
设一棵完全二叉树具有n个结点。如果n为偶数.则在该二叉树中有n/2
个叶子结点以及n/2-l个度为2的结点,还有1个是度为1的结点;如
果n为奇数,则在该二叉树中有[n⑵+1个叶子结点以及[n⑵个度为2的
结点,没有度为1的结点。
在本题中,完全二叉树共有839个结点,839是奇数,因此,在该二叉
树中有420个叶子结点以及419个度为2的结点,没有度为1的结点。
31.封装封装
32.菱形E-R模型可以用一种非常直观的图的形式表示,这种图称为E-
R图。在E-R图中我们分别用下面不同的几何图形表示E-R模型中的三
个概念与两个联接关系。(D实体集表示法。在E-R图中用矩形表示实体
集,在矩形内写上该实体集的名字。(2)属性表示法。在E-R图中用椭圆
形表示属性,在椭圆形内写上该属性的名称。(3)联系表示法。在E-R图
中用菱形(内写上联系名)表示联系。
33.字母数字特殊符号字母数字特殊符号
34.3
35.构造构造解析:此题考查的是构造函数的应用。构造函数的作用是
在对象被创建时利用特定的值构造对象,构造函数在对象被创建时由系
统自动调用。
36.(l)“staticintn=O”应改为“staticintn;"。
(2)“intC0::n;”应改为"intCO::n=0;
(3)“cout«c.n«endl;"应改为"cout<<c->n«endl;
【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1
处应改为“staticintn;",第2处要给n赋值,第3处输出时引用c的对
象,应改为"cout<<c->n«endl;
37.(1)应改为“ein.getline(str,120,?);
(2)应改为"while(str[i])"°
(3)应改为“if(str[i]>=a&&st巾]<=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)o
38.(1)应改为"catch(char*s)”。
⑵应改为“cateh(inti)”。
(3)应改为"catch(…)”。
【解析】本题中第1个标识前的异常抛出语句为“throw("error");",其
中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类
型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语
句修改为“catch(char*S)”°第2个标识前的异常抛出语句为
44throw((int)0);",其中的类型为int。对应的异常捕捉语句catch中应
该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配
的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处
的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类
型,那么就用删节号"…''表示它可以捕捉任何类型的异常信息,即修
改为“catch(...)"。
39.(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处的语句叮(2::丁(3”可知,显然这里是在类外实现析构函数,析构函
数是一个特殊的函数,它的名称和类名相同,并在前面加“字符,用
采与构造函数加以区别,因此第3处的语句应改为“TC::〜TC”。
40.(1)“voidmain”。
(2)“intm=0144;
(3)“intn=OX25;”或"intn===0x25;
【解析】本题主要考查了主函数定义及幕同进制之间的转换,包括十
进制到八进制,十进制到十六进制。主函数定义的定义形式为
“main”,函数名之后必须是一对括号,因此第1处应改为“voidmain”。
cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发
现变量的初值不正确,十进制的100对应八进制的144,卡进制的37
对应十六进制的25,因此2和3应分别改成“intm=0144;”,
“intn=0x25;”或"intn=0x25;
41.(1)应改为"TCobjl(l);
(2)应改为“Objl.SetNumber(lO);
(3)应改为“0bj2.SelNumber(lOO);
【解析】本题第1处的“TCobjl;”语句是声明TC类的对象Objl,根据
TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个
输出结果两1,所以补全参数1,即第1处的“TCobjl(l);第2处处
的“objl.number=10;”应该是调用成员函数SetNumber赋值。在C+
十中成员函数的使用形式应该是:对象名.成员函数,所以修改为
“objl.SetNumber(lO);类是对象的抽象,而对象是类的具体实
例。第3处“TC.SetNumber(lOO);”语句中的TC为类,并不是对象,
这里应该使用定义的对象,即。bj2,所以将语句修改为
“obj2.SetNumber(lOO);
42.(1)应改为"usingnamespacestd;
(2)应改为"outl.open("l.txt",ios::binaryIios::app);
,5
(3)应改为“outl.put(s[i]);O
【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,
对于C++中引入标准命名空间的格式,缺少namespace,所以第1处
的语句修改为"usingnamespacestd;"。第2处,调用成员函数open
中,输入、输出方式是在ios类中定义的,所以“outl.open("l.txt",
binaryIapp);”语句缺少类ios,即第2处的语句修改为
“outl.open("1.txt",ios::binaryIios::app);第3个标识应
该用流成员函数put输出字符,所以第3处的语句修改为
“outl.put(s[i]);
43.(1)应改为“ein.getline(str,120,?);
\n(2)应改为"while(str[i])"°
,,
\n⑶应改为"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)应改为"assert(sizeof(sl)==4);
\n⑵应改为"assert(sizeof(s2)=lO);”。
\n(3)应改为"assert(sizeof(s3)=l);”。
\n【解析】assert函数如果为假,则会产生一个中断异常。所以要让它正
常执行输出结果,那么assert函数只有为真,才不会产生中断异常。
“assert(sizeof(sl)=3);"语句中"sizeof(sD==3”为假,这会使程序产生异
常,不能正常执行。因为strl的值为abc,但是它还有一个尾符,它的
长度应该是4,而不是3,所以在第1处修改为“assert(sizeof(sl)==4)二。
str2[10]说明,str2的空间为10,在第2处修改为"assert(sizeof(s2)=10)
charstr3=23;语句说明23是字符,所占存储空间为1,所以修改为
“assert(sizeof(s3)==l);”
45.(1)应改为"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(…)”。
46.
⑴应添加“BA(intm){a=m;}“。
(2)应添加“PAl(intm,intn):BA(n){b=m;}”。
(3)应添力H"PA2(intm,intn,intk):PAl(n,k){C=m;)”。
(4)应添力口"cout<<geta<<""<<getb<<""<<C<<endl;
【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA
构造函数的名称为BA,在BA中通过参数m完成对成员变量a的赋
值,因此构造函数的名称为BA(intm),在函数内部对成员a赋值,故
第1处的语句应添加“BA(intm){a=m;广。根据第2处的要求,构造函
数的形式为“PAl(intm,intn)”,m赋值给PA1类成员b,将n作为基类
BA构造函数的参数值传入,故第2处应添加“PAl(intm,intn):
BA(n){b=m;}”。根据第3处的要求,函数形式为PA2(intm,intn,
intk),在构造函数中将m赋值给数据成员c,将n和k分别赋值给基
类PA1构造函数的参数m和n,因此第3处应添加“PA2(intm,intn,
intk):PAl(n,k){C=m;}”。根据第4处的要求,PA2类公有派生于
PA1,而PA1公有派生于BA,因此在PA2类中可以调用基类的geta
和getb来获得基类私有成员a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论