全国计算机等级考试二级CPP.docx
- 文档编号:29336163
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:14
- 大小:20.81KB
全国计算机等级考试二级CPP.docx
《全国计算机等级考试二级CPP.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级CPP.docx(14页珍藏版)》请在冰豆网上搜索。
全国计算机等级考试二级CPP
2007年4月全国计算机等级考试二级C++笔试试题及答案
一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(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)DYBEAFCZX
B)YDEBFZXCA
C)ABDYECFXZ
D)ABCDEFXYZ
(7)某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为
A)n+1
B)n-1
C)2n
D)n/2
(8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是。
A)井
B)交
C)投影
D)笛卡儿乘积
(9)在E-R图中,用来表示实体之间是联系的图形是。
A)矩形
B)椭圆形
C)菱形
D)平行四边形
(10)下列叙述中错误的是。
A)在数据库系统中,数据的物理结构必须与逻辑结构一致.
B)数据库技术的根本目标是要解决数据的共享问题
C)数据库设计是指在已有数据库管理系统的基础上建立数据库
D)数据库系统需要操作系统的支持
(11)为了取代C中带参数的宏,在C++中使用
A)重载函数
B)内联函数
C)递归函数
D)友元函数
(12)下列关于类定义的说法中,正确的是
A)类定义中包括数据成员和函数成员的声明
B)类成员的缺省访问权限是保护的
C)数据成员必须被声明为私有的
D)成员函数只能在类体外进行定义
(13)下列关于派生类构造函数和析构函数的说法中,错误的是
A)派生类的构造函数会隐含调用基类的构造函数
B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数
C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
(14)通过运算符重载,可以改变运算符原有的
A)操作数类型
B)操作数个数
C)优先级
D)结合性
(15)有如下函数模板:
templateTsouare(Tx)(retumx*x;)
基中T是
A)函数形参
B)函数实参
C)模板形参
D)模板实参
(16)使用输入输出操作符setw,可以控制
A)输出精度
B)输出宽度
C)对齐方式
D)填充字符
(17)下列字符串中,不可以用作C++标识符的是
A)y_2006
B)____TEST__H
C)Retum
D)switch
(18)字面常量42、4.2、42L的数据类型分别是
A)long、doubleint
B)long、float、int
C)int、double、long
D)int、float、long
(19)执行下列语句段后,输出字符“*”的个数是
for(inti=50;I>1;—i)cout<<”*”
A)48
B)49
C)50
D)51
(20)有如下程序段
int i=0,j=1;
int &r=i;//①
r=j;//②
int*p=&i;//③
*p=&r;//④
其中会产生编译错误的语句是
A)④
B)③
C)②
D)①
(21)有如下函数定义:
voidfunc(inta,int&b){a++;b++;}
若执行代码段:
int x=0,y=1
func(x,y);
则变量x和y值分别是
A)0和1
B)1和1
C)0和2
D)1和2
(22)有如下程序:
#include
usingnamespacestd;
classA{
public
staticinta;
voidinit(){a=1;}
A(inta=2){init();a++;}
};
intA:
;a=0
Aobj;
Intmain()
{
cout< retum0; } 运行时输出的结果是 A)0 B)1 C)2 D)3 (23)下列有关继承和派生的叙述中,正确的是 A)派生类不能访问基类的保护成员 B)作为虚基类的类不能被实例化 C)派生类应当向基类的构造函数传递参数 D)虚函数必须在派生类中重新实现 (24)下列运算符中,不能被重载的是 A)&& B)! = C). D)++ (25)下列函数模板的定义中,合法的是 A)templateTabs(Tx){returnx<0–x: x;} B)templateclassTabs(Tx){retumx<0-x;x;} C)templateTabs(Tx){retumx<0-x;x;} D)templateTabs(Tx){returmx<0-x;x;} (26)在语句cin>>data;中,cin是 A)C++的关键字 B)类名 C)对象名 D)函数名 (27)有如下程序: #include usingnamespacestd; classtest{ private: inta; public: test(){cout<<”constructor”< test(inta){cout< test(consttest&_test) { a=_testa; cout<<”copyconstructor”< } test(){cout<<”destructor”< }; intmain() } testA(3) return0; 运行时输出的结果是 A)3 B)constructor destruclor C)copyconstructor D)3 dstructordestruclor (28)若有如下类声明 classMyClass{ public: MyClass(){cout<<1;} }; 执行下列语句 MyClassa,b[2],*P[2]; 以后,程序的输出结果是 A)11 B)111 C)1111 D11111 (29)有如下程序: #include usingnamespacestd; classpoint{ public: staticintnumber; public: point(){number++;} ~point(){number-;} }; intpoint: : number=0; voidmain() { point*ptr; printA,B; { point*ptr_point=newpoint{3}; ptr=ptr_point; } pointC; cout< : number< delete[]ptr; } 运行时输出的结果是 A)3 B)4 C)6 D)7 (30)如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。 #include usingnamespacestd; classBase{ inta,b; public: Bace(intx,inty){a=x;b=y;} Voidshow(){cout< } clsaaDerived: publicBase{ intc,d; public: Derived(intx,inty,intz,intm): Base(x,y){c=z;d=m;} Voidshow(){cout< }; intmain() { BaseB1(50,50),*pb; DerivedDI(10,20,30,40); Pb=&D1; Pb->show(); Return0; } 运行时输出的结果是 A)10,20 B)30,40 C)20,30 D)50,50 (31)有如下程序: #include usingnamespacestd; classA { public; A(inti){x=i;} Voidsispa(){cout< Private: intx; }; classB;publicA { public; B(inti): A(i+10){x=i;} vouddispb(){dispa();cout< Private: Intx; }; intmain() { Bb (2); b.dispb() retum0: } 运行时输出的结果是 A)10,2 B)12,10 C)12,2 D)2,2 (32)虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。 有如下程序: #include usingnamespacestd; classBase { public: virtualvoidf(){cout<<”f0+”;} voidg(){cout<<”g0+”;} }; classDerived: publicBase { public: voidf(){cout<<”f+”;} voidg(){cout<<”g+”;} }; intmain() { Derivedd; Base*p=&d; p->f();p->g(); return0: } 运行时输出的结果是 A)f+g+ B)f0+g+ C)f+g0+ D)f0+g0+ (33)下面程序中对一维坐标点类Point进行运算符重载 #include usingnamespacestd; classpoint{ public: point(intvaI){x=val;} point&operator++(){x++;retum*this;} printoperator++(int){pointold=*this,++(*this);retumold;} intGetX()const{retumx;} private: intx; }; intmain() { pointa(10); cout<<(++a).GetX();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试 二级 CPP