二级C++笔试338
(总分:94.00,做题时间:90分钟)
一、{{B}}选择题{{/B}}(总题数:35,分数:70.00)
1.属于关系的基本类型的是( )。
(分数:2.00)
(分数:2.00)
A.堆栈表
B.视图表 √
C.双列表
D.散列表
解析:[解析] 数据库中关系的基本类型包括基本表、视图表和查询表。基本表是关系数据库中实际存在的表,是实际存储数据的逻辑表示;视图表是由基本表或其他视图表导出的表;查询表是指查询结果表或查询中生成的临时表。
2.允许用户为类定义一种模式,使得类中的某些数据成员及成员函数的返回值能去任意类型,它属于一个( )。
(分数:2.00)
(分数:2.00)
A.函数模板
B.模板函数
C.类模板 √
D.模板类
解析:[解析] 类模板的定义。注意类模板和模板类的区别:类模板不是一个具体的类,使用时必须首先实例化为具体的模板类,然后通过模板类定义对象。
3.标有/**/的语句的执行次数是( )。 int y=5,x=2; do {y=x*x; /* */ {while(++y <5);
(分数:2.00)
(分数:2.00)
A.5
B.4
C.2
D.1 √
解析:[解析] do...while循环无条件执行一次。
4.如使用setw()的操纵符对数据进行格式输出时,应包含( )。
(分数:2.00)
(分数:2.00)
A.iostreah
B.fstreah
C.iomanih √
D.stdlih
解析:[解析] setw包含在iomainip.h中。
5.冒泡排序算法在最好的情况下的元素交换次数为( )。
(分数:2.00)
(分数:2.00)
A.0 √
B.1
C.元素个数
D.元素个数的2倍
解析:[解析] 在数据已经排序好的情况下,冒泡排序算法不需要进行元素交换。
6.如果定义了一个类myclass,则为myclass类对象以成员函数形式重载后++运算符的声明应该为( )。
(分数:2.00)
(分数:2.00)
&lass operator ++();
&lass& operator ++();
&lass operator++(in; √
&lass& operator++(in;
解析:[解析] 运算符重载函数说明为类的成员函数的格式:<类名>operator<运算符>(<参数表>)
7.在C++语言中,数据封装要解决的问题是( )。
(分数:2.00)
(分数:2.00)
A.数据的规范化
B.便于数据转换
C.避免数据丢失
D.防止不同模块之间数据的非法访问 √
解析:[解析] 封装的含义。
8.软件工程管理的具体内容不包括对( )管理。
(分数:2.00)
(分数:2.00)
A.开发人员
B.组织机构
C.用户
D.设备 √
解析:[解析] 软件工程管理包括六个子域,即启动和范围定义、软件项目计划、软件项目实施、评审与评价、关闭、软件工程度量。软件工程管理的具体内容包括对开发人员、组织机构、用户、文档资料等方面的管理。
9.下面关于虚函数的描述,错误的是( )。
(分数:2.00)
(分数:2.00)
A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数
B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数 √
C.虚函数可以是另一个类的友元函数,但不能是静态成员函数
D.基类中说明的纯虚函数在其任何派生类中都必须实现
解析:[解析] 虚函数的特性。
10.关于类和对象不正确的说法是( )。
(分数:2.00)
(分数:2.00)
A.类是一种类型,它封装了数据和操作
B.对象是类的实例
C.一个类的对象只有一个 √
D.一个对象必属于某个类
解析:[解析] 一个类可以声明多个对象。
11.下面程序的运行结果为( )。 class A{ static int n; public: A(){n=1;} A(int num){n=num;} void print(){cout<<n;} } A::n=0; void main(){ A a,b(2); a.print(); b.pint(); }
(分数:2.00)
(分数:2.00)
A.12
B.11
C.22 √
D.21
解析:[解析] n是类的静态数据成员,发生静态数据成员的赋值,则所有对象的静态数据成员的值都发生改变。
12.首先访问该结点,然后访问结点的左子树,最后访问结点的右子树,这种遍历方式称为( )。
(分数:2.00)
(分数:2.00)
A.前序遍历 √
B.中序遍历
C.后序遍历
D.顺序遍历
解析:[解析] 前序遍历序列的顺序是先根、再左子树、最后右子树;中序遍历序列的顺序是先左子树、再根、最后右子树;后序遍历序列的顺序是先左子树、再右子树、最后根。
13.下列程序的输出结果为( )。 int fun(int n){ if(n==0)return 1; else return n*fun(n-1): return 0; } void main() { eout<<func(4)<<endl;}
(分数:2.00)
(分数:2.00)
A.1
B.10
C.24 √
D.11
解析:[解析] 递归函数求阶乘,4!=24。
14.下面程序的运行结果是( )。 #include <iostream> using namespace std; template <class T> class A{ T x,y; public: A(T a,T b){x=a;y=b;} int add(){return x+y;} }; void main(){ A<double>a(7.8,3.4); A<char>b(7.8,3.4); cout<<a.add()<<","<<b.add(); }
(分数:2.00)
(分数:2.00)
A.10,10
B.11,11
C.11,10 √
D.以上答案都不对
解析:[解析] 模板函数的调用,执行语句A<double>a(7.8,3.4);后,则a.x=7.8、a.y=3.4;
执行语句A<char> b(7.8,3.4);后,将对7.8和3.4转换为char类型,则b.x=7、b.y=3;函数 add()为整形,x+y将转换为整形。
15.下面对静态数据成员的描述中,正确的是( )。
(分数:2.00)
(分数:2.00)
A.静态数据成员是类的所有对象共享的数据 √
B.类的每个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值
D.静态数据成员不能通过类的对象调用
解析:[解析] 静态数据成员是类的所有对象共享的数据。
16.设x,y,t均为int型变量,执行语句:x=y=3;t=++x||++y;,完成后,y的值为( )。
(分数:2.00)
(分数:2.00)
A.不确定
B.4
C.3 √
D.1
解析:[解析] 对||构成的语句从左向右执行,如果出现真,则||后面的语句不执行。
17.以下程序的输出结果是( )。 main() {int i; for(i=0;i<8;i++) {switch(i) { case 0: case 3:i+=2; case 1: case 2:i+=3; default:i+=5; } } cout<<i; }
(分数:2.00)
(分数:2.00)
A.11 √
B.35
C.10
D.45
解析:[解析] 初始i=0,则case 0成立,由于没有break,则所有语句将都执行,则i=10,再执行 i++,则 i=11。
18.当要求两个变量不能同名时,它是指在( )的情况下。
(分数:2.00)
(分数:2.00)
A.同一文件中
B.同一作用域中 √
C.同一类的不同成员函数中
D.不同函数中
解析:[解析] 在同一作用域中,两个变量不能够重名。
19.关于this指针的说法错误的是( )。
(分数:2.00)
(分数:2.00)
A.this指针必须显示说明 √
B.当创建一个对象后,this指针就指向该对象
C.成员函数拥有this指针
D.静态成员函数不拥有this指针
解析:[解析] 在C++中,每个当前对象都含有一个指向该对象的this指针,this指针只能在类的成员函数中使用,其中静态成员函数不能够有this指针。
20.对下面的程序,正确的说法是( )。 main() { int a,b=1,c=2; a=b+c,a+b,c+3; c=(c)? a++:b--; cout<< a+b,c;}
(分数:2.00)
(分数:2.00)
A.无错误 √
B.第三行有错误
C.第四行有错误
D.第五行有错误
解析:[解析] 第三行是由逗号表达式组成的语句,第四行是由条件表达式组成的语句,第五行 printf语句的输出项为逗号表达式,本题没有语法错误。
21.在面向对象的系统中,系统责任的良好分配原则是( )。
(分数:2.00)
(分数:2.00)
A.根据个人喜好进行分配
B.在类之间均匀分配
C.根据交互图的消息进行分配
D.集中分配在少数控制类中 √
解析:[解析] 在面向对象的系统中,系统责任的良好分配原则是集中分配在少数控制类中。
22.下面关于子类型的描述中,错误的是( )。
(分数:2.00)
(分数:2.00)
A.子类型关系是可逆的 √
B.公有派生类的对象可以初始化基类的引用
C.只有在公有继承下,派生类是基类的子类型
D.子类型关系可以传递
解析:[解析] 子类型关系不可逆。
23.软件测试中根据测试用例设计的方法的不同可分为黑盒测试和白盒测试两种,它们( )。
(分数:2.00)
(分数:2.00)
A.前者属于静态测试,后者属于动态测试
B.前者属于动态测试,后者属于静态测试
C.都属于静态测试
D.都属于动态测试 三目条件运算符?:的含义√
解析:[解析] 常用的软件测试方法有两大类:静态测试方法和动态测试方法。静态测试主要
是以一些人工的模拟技术对软件进行分析和测试。动态测试包括黑盒测试和白盒测试两种。
24.下列描述中正确的是( )。
(分数:2.00)
(分数:2.00)
A.构造函数可以为虚函数,析构函数不可以为虚函数
B.构造函数不可以为虚函数,析构函数可以为虚函数 √
C.构造函数可以为虚函数,析构函数可以为虚函数
D.构造函数不可以为虚函数,析构函数不可以为虚函数
解析:[解析] 构造函数不可以为虚函数,但可以调用虚函数;析构函数可以为虚函数。
25.对于下面程序,对p调用正确的是( )。 class A{ public:fun(int i){cout<<i<<endl;} }; main(){ A a; int k=0; void(A::*p)(int); p=A::fun; }
(分数:2.00)
(分数:2.00)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论