计算机等考二级C++试题及参考答案.docx
- 文档编号:3787689
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:21
- 大小:51.20KB
计算机等考二级C++试题及参考答案.docx
《计算机等考二级C++试题及参考答案.docx》由会员分享,可在线阅读,更多相关《计算机等考二级C++试题及参考答案.docx(21页珍藏版)》请在冰点文库上搜索。
计算机等考二级C++试题及参考答案
2009年全国计算机等级考试二级笔试试卷
C++语言程序设计
一、选择题
(1)下列数据结构中,属于非线性结构的是
A)循环队列B)带链队列C)二叉树D)带链栈
(2)下列数据结构中,能够按照“先进后出”原则存取数据的是
A)循环队列B)栈C)队列D)二叉树
(3)对于循环队列,下列叙述中正确的是
A)队头指针是固定不变的
B)队头指针一定大于队尾指针
C)队头指针一定小于队尾指针
D)队头指针可以大于队尾指针,也可以小于队尾指针
(4)算法的空间复杂度是指
A)算法在执行过程中所需要的计算机存储空间
B)算法所处理的数据量
C)算法程序中的语句或指令条数
D)算法在执行过程中所需要的临时工作单元数
(5)软件设计中划分模块的一个准则是
A)低内聚低耦合B)高内聚低耦合
C)低内聚高耦合D)高内聚高耦合
(6)下列选项中不属于结构化程序设计原则的是
A)可封装B)自顶向下C)模块化D)逐步求精
(7)软件详细设计产毕的图如下:
该图是
A)N-S图B)PAD图C)程序流程图D)E-R图
(8)数据库管理系统是
A)操作系统的一部分B)在操作系统支持下的系统软件
C)一种编译系统D)一种操作系统
(9)在E-R图中,用来表示实体联系的图形是
A)椭圆图B)矩形C)菱形D)三角形
(10)有三个关系R,S和T如下:
其中关系T由关系R和S通过某种操作得到,该操作为
A)选择B)投影C)交D)并
(11)已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则
A)FA必须定义在FB之前
B)F、B必须定义在FA之前
C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前
D)若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
(12)有如下两个类定义:
classAA{};
classBB{
AAvl,*v2;
BBv3
int*v4;
};
其中有一个成员变量的定义是错误的,这个变量是
A)vlB)v2C)v3D)v4
(13)有如下类定义:
classXX{
intxdata;
public:
XX(intn=0):
xdata(n){}
};
classYY:
public:
XX{
intydata;
public:
YY(intm=0,intn=0):
XX(m),ydata(n){}
};
YY类的对象包含的数据成员的个数是
A)1B)2C)3D)4
(14)下列关于运算符函数的描述中,错误的是
A)运算符函数的名称总是以operator为前缀
B)运算符函数的参数可以是对象
C)运算符函数只能定义为类的成员函数
D)在表达式中使用重载的运算符相当于调用运算符重载函数
(15)下列关于模板形参的描述中,错误的是
A)模板形参表必须在关键字template之后
B)模板形参表必须用括弧()括起来
C)可以用class修饰模板形参
D)可以用typename修饰模板形参
(16)在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是
A)ios_base:
:
curB)ios_base:
:
begC)ios_base:
:
outD)ios_base:
:
end
(17)下列字符串中可以用作C++标识符的是
A)2009varB)gotoC)test-2009D)123
(18)下列枚举类型的定义中,包含枚举值3的是
A)enumtest{RED,YELLOW,BLUE,BLACK};
B)enumtest{RED,YELLOW=4,BLUE,BLACK};
C)enumtest{RED=-1,YELLOW,BLUE,BLACK};
D)enumtest{RED,YELLOW=6,BLUE,BLACK};
(19)有如下程序段:
inti=1;
while
(1){
i++;
if(i==10)break;
if(i%2==0)cout<<'*';
}
执行这个程序段输出字符*的个数是
A)10B)3C)4D)5
(20)已知数组art的定义如下:
intarr[5]={1,2,3,4,5);
下列语句中输出结果不是2的是
A)cout<<*arr+1<<endl;B)cout<<*(arr+1)<<endl;
C)cout<<arr[1]<<endl;D)cout<<*arr<<endl;
(21)计算斐波那契数列第n项的函数定义如下:
intfib(intn){
if(n==0)return1;
elseif(n==1)return2;
elsereturnfib(n-1)+fib(n-2);
}
若执行函数调用表达式fib
(2),函数fib被调用的次数是
A)1B)2C)3D)4
(22)Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是
Samplea[2],*p=newSample;
A)0B)1C)2D)3
(23)下列关于虚基类的描述中,错误的是
A)使用虚基类可以消除由多继承产生的二义性
B)构造派生类对象时,虚基类的构造函数只被调用一次
C)声明“classB:
virtualpublicA”说明类B为虚基类
D)建立派生类对象时,首先调用虚基类的构造函数
(24)将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是
A)不合法的运算符B)一元运算符
C)无操作数的运算符D)二元运算符
(25)有如下模板声明:
template<typenameT1,typenameT2>classA;
下列声明中,与上述声明不等价的是
A)template<classT1,classT2>classA;
B)template<classT1,typenameT2>classA;
C)template<typenameT1,classT2>classA;
D)template<typenameT1,T2>classA;
(26)下列关于C++流的描述中,错误的是
A)cout>>'A'表达式中输出字符A
B)eof()函数可以检测是否到达文件尾
C)对磁盘文件进行流操作时,必须包含头文件fstream
D)以ios_base:
:
out模式打开的文件不存在时,将自动建立一个新文件
(27)有如下程序:
#include<iostream>
usingnamespacestd;
classToy{
public:
Toy(char*_n){strcpy(name,_n);count++;}
~Toy(){count--;}
char*GetName(){returnname;}
staticintgetCount(){returncount;}
private:
charname[10];
staticintcount;
};
intToy:
:
count=0;
intmain(){
Toyt1("snoopy"),t2("Mickey"),t3("Barbie");
cout<<t1.getCount()<<endl;
return0;
运行时的输出结果是
A)1B)2C)3D)运行时出错
(28)有如下程序:
#include<iostream>
usingnamespacestd;
classA{
Public:
A(inti):
rl(i){}
voidprint(){cout<<'E'<<r1<<'-';}
voidprint()const{cout<<'C'<<r1*r1<<'-';}
private:
intr1;
};
intmain(){
Aal
(2);constAa2(4);
a1.print();a2.print();
return0;
}
运行时的输出结果是
A)运行时出错B)E2-C16-C)C4-C16-D)E2-E4-
(29)有如下程序:
#include<iostream>
usingnamespacestd;
className{
charname[20];
public:
Name(){
strcpy(name,"");cout<<'?
';
}
Name(char*fname){
strcpy(name,fname);cout<<'?
';
}
};
intmain(){
Namenames[3]={Name("张三"),Name("李四")};
return0;
}
运行此程序输出符号?
的个数是
A)0B)1C)2D)3
(30)有如下程序:
#include<iostream>
usingnamespacestd;
classAA{
public;
AA(){cout<<'1';}
};
classBB:
publicAA{
intk;
public:
BB():
k(0){cout<<'2';}
BB(intn):
k(n){cout<<'3';}
};
intmain(){
BBb(4),C:
return0;
}
运行时的输出结果是
A)1312B)132C)32D)1412
(31)有如下程序:
#include<iostream>
usingnamespacestd;
classC1{
public:
~C1(){cout<<1;}
};
classC2:
publicC1{
public:
~C2(){cout<<2;}
};
intmain(){
C2cb2;
C1*cb1;
return0;
}
运行时的输出结果是
A)121B)21C)211D)12
(32)有如下程序:
#include<iostream>
usingnamespacestd;
classPublication{//出版物类
charname[30];
public:
Publication(char*name="未知名称"){
strcpy(this->name,name);
}
constchar*getName()const{returnname;}
virtualconstchar*getType()const{return"未知类型";)
};
classBook:
publicPublication{//书类
public:
Book(char*name):
Publication(name){}
virtualconstchar*getType()const{return"书";}
};
voidshowPublication(Publication&p){
cout<<p.getType()<<":
"<<p.getName()<<endl;
}
intmain(){
Bookbook("精彩人生");
showPublication(book);
return0;
}
运行时的输出结果是
A)未知类型:
未知名称B)未知类型:
精彩人生
C)书:
未知名称D)书:
精彩人生
(33)下列关于运算符重载的描述中,错误的是
A):
:
运算符不能重载
B)类型转换运算符只能作为成员函数重载
C)将运算符作为非成员函数重载时必须定义为友元
D)重载[]运算符应完成“下标访问”操作
(34)有如下程序:
#include<iostream>
#include<iomanip2>
usingnamespacestd;
intmain(){
ints[]={123,234};
cout<<right<<setfill('*')<<setw(6);
for(inti=0;i<2;i++){cout<<s[i]<<endl;}
return0;
}
运行时的输出结果是
A)123B)***123C)***123D)***123
234234***234234***
(35)有如下类定义:
classA{
char*a;
public:
A():
a(0){}
A(char*aa){//把aa所指字符串拷贝到a所指向的存储空间
a=______;
strcpy(a,aa);
}
~A(){delete[]a;}
};
横线处应填写的表达式是
A)newchar[strlen(aa)+1]B)char[strlen(aa)+1]
C)char[strlen(aa)]D)newchar[sizeof(aa)-1]
二、填空题
(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有______个结点。
(2)程序流程图中的菱形框表示的是______。
(3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中______阶段产生“软件需求规格说明书”。
(4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为______。
(5)人员基本信息一般包括:
身份证号,姓名,性别,年龄等。
其中可以作为主关键字的是______。
(6)若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为______。
(7)有如下循环语句:
for(inti=50;i>20;i-=2);cout<<i<<',';
运行时循环体的执行次数是______次。
(8)利用表达式a[i]可以访问int型数组a中下标为i的元素。
在执行了语句int*p=a;后,利用指针P也可访问该元素,相应的表达式是______。
(9)下面是一个递归函数,其功能是使数组中的元素反序排列。
请将函数补充完整。
voidreverse(int*a,intsize){
if(size<2)return;
intk=a[0];
a[0]=a[size-1];
a[size-1]=k;
reverse(a+1,______);
}
(10)类Sample的构造函数将形参data赋值给数据成员data。
请将类定义补充完整。
classSample{
public:
Sample(intdata=0);
private:
intdata;
};
Sample:
:
Sample(intdata){
_______
}
(11)有如下类定义:
classSample{
public:
Sample();
~Sample();
private:
staticintdata;
};
将静态数据成员data初始化为0的语句是______。
(12)“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类
Shape,请将Triangle类中的CalArea函数补充完整。
classShape{
public:
virtualintCalArea()=0;
};
classTriangle:
publicShape{
public:
Triangle(ints,inth):
side(s),height(h){}
______{returnside*height/2;)
private:
intside;
intheight;
};
(13)有如下程序:
#include<iostream>
usingnamespacestd;
classGrandChild{
public:
GrandChild(){strcpy(name,"Unknown");}
constchar*getName()const{returnname;}
virtualchar*getAddress()const=0;
private:
charname[20];
};
classGrandSon:
publicGrandChild{
public:
GrandSon(char*name){}
char*getAddress()const{return"shanghai";)
};
intmain(){
GrandChild*gs=newGrandSon("Feifei");
cout<<gs->getName()<<"住在"<<gs->getAddress()<<endl;
deletegs;
return0;
}
运行时的输出结果是______。
(14)如下程序定义了“单词”类word,类中重载了<运算符,用于比较“单词”的大小,返回相应的逻辑值。
程序的输出结果为:
AfterSorting:
HappyWelcome,请将程序补充完整。
#include<iostream>
#include<string>
usingnamespacestd;
classWord{
public:
Word(strings):
str(s){}
stringgetStr(){returnstr;}
______const{return(str<w.str);)
friendostream&operator<<(ostream&output,constWord&w)
{output<<w.str;returnoutput;)
private:
stringstr;
};
intmain(){
Wordw1("Happy"),w2("Welcome");
cout<<"Aftersorting:
";
if(w1<w2)cout<<w1<<''<<w2;
elsecout<<w2<<''<<w1;
return0;
}
(15)请将下列模板类Data补充完整。
template<typenameT>
classData{
public:
voidput(Tv){val=v;}
______get()//返回数据成员val的值,返回类型不加转换
{returnval;)
private:
Tval;
};
参考答案及解析
一、选择题
(1)C[解析]队列是一种允许在一端进行插入,而在另一端进行删除的线性表。
栈也是一种特殊的线性表,其插入与删除只能在线性表的一端进行。
(2)B[解析]在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。
栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。
即栈是按照“先进后出”或“后进先出”的原则组织数据的。
(3)D[解析]所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。
在循环队列结构中,当存储空间的最后一个位置已被使用而再要进行入队运算时,只要存储空间的第一个位置空闲,使可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。
(4)A[解析]一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
(5)B[解析]耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。
在程序结构中,各模块的内聚性越强,则耦合性越弱。
一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
(6)A[解析]结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句等。
(7)C
(8)B[解析]数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。
(9)C
(10)D
(11)D[解析]主要考查函数调用时,是否设置函数原型,在C++中若被调用的函数放在主调函数之后,需将被调用函数原型放在主调函数之前,否则不需要。
(12)C[解析]本题主要考查类对象的定义,类的对象一般放在类结构体外或在主函数中定义,而不能放在类定义的结构体中,但自身类的指针可以,本题BBv3不能被定义于类体内。
(13)B[解析]本题主要考查派生类的继承方式,该题为公有继承它包含基类中全部数据成员和除了构造、析构函数之外的全部成员函数,而本题所问为数据成员的个数即为2。
(14)C[解析]该题主要考查运算符函数的定义及运算符重载时应注意事项,运算符重载是函数重载的一种特殊情况。
(15)B[解析]主要考查函数模板的定义,声明一个函数模板的格式为template<<模板形参表声明>><函数声明>,其中<模板形参>具有typename<参数名>、class<参数名>、<类型修饰><参数名>三种形式,形参用”<>”括起来。
(16)A[解析]主要考查文件流的定位问题,其中ios_base:
:
beg表示相对于文件首、ios_base:
:
cur表示相对于当前位置(负数表示当前位置之前)、ios_base:
:
end相对于文件尾、而ios_base:
:
out,表示在文件流的建立中为文件的输出而打开。
(17)D[解析]标识符主要由数字、字母、下划线组成,且首位必为字母或下划线,同时标识符不能是关键字。
(18)A[解析]本题主要考查枚举类型的定义,其中几个枚举值全部未赋常量值时,它们自左至右分别与整数0,1,…,n-1对应。
由此可进行判断本题答案。
(19)C[解析]本题主要考查while的作用,只有i为偶数时才输出“*”,而本题只有2,4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 C+ 试题 参考答案