华清远见嵌入式学院第一学期期末考试
一、选择题(10题,每题2分,共20分)
1.obj是一个对象,下面哪一个表达式是不可能出现的?
[A] obj.100 [B] !obj [C] obj++ [D] obj,100 。
[A] obj.100 [B] !obj [C] obj++ [D] obj,100 。
2.下述程序中,类C的public各有哪些属性成员( )。
class B1
{
public:
int i ;
protected :
int k ;
};
class B2
{
public:
int l ;
private:
int m;
protected :
int q ;
};
class B3
{
public:
int p1;
};
class C: public B2, protected B1, private B3
{
public:
int c;
};
[A] i/l/p1 [B] c/l [C] c/l/q [D] i/l/q
3.下述程序运行后,显示结果为( )。
class B1
{
public:
B1(int i) {cout<<"constructing B1 "<<i<<endl;}
~B1〔 〕 {cout<<"destructing B1 "<<endl;}
};
class B2
{
public:
B2(int j) {cout<<"constructing B2 "<<j<<endl;}
~B2〔 〕 {cout<<"destructing B2 "<<endl;}
};
class B3
{
public:
B3〔 〕{cout<<"constructing B3 *"<<endl;}
~B3〔 〕 {cout<<"destructing B3 "<<endl;}
};
class C: public B2, public B1, public B3
{
public:
C(int a, int b, int c, int d):
B1(a),memberB2(d),memberB1(c),B2(b){}
private:
B1 memberB1;
B2 memberB2;
B3 memberB3;
};
void main〔 〕
{ C obj(1,2,3,4); }
[A] constructing B2 2 [B] constructing B1 1
constructing B1 1 constructing B2 2
constructing B3 * constructing B3 *
constructing B1 3 constructing B1 3
constructing B2 4 constructing B2 4
constructing B3 * constructing B3 *
destructing B3 destructing B3
destructing B2 destructing B2
destructing B1 destructing B1
destructing B3 destructing B3
destructing B1 destructing B1
destructing B2 destructing B2
[C] constructing B2 2 [D] constructing B2 2
constructing B1 1 constructing B1 1
constructing B3 * constructing B3 *
constructing B1 3 constructing B3 *
constructing B2 4 constructing B1 3
constructing B3 * constructing B2 4
destructing B3 destructing B3
destructing B2 destructing B2
destructing B1 destructing B1
destructing B3 destructing B3
destructing B2 destructing B1
destructing B1 destructing B2
4.以下关于C++中类的析构函数,说法正确的选项是( )
[A] 析构函数必须自己实现
[B] 析构函数不能自己实现
[C] 析构函数不需要明确调用,系统会自动调用
[D] 析构函数的调用顺序和构造函数的调用顺序一样
5.以下有关线性表的表达中,正确的选项是( )
[A] 一个线性表是n个数据元素的有限序列
[B] 线性表中任何一个元素有且仅有一个直接前驱
[C] 线性表中任何一个元素有且仅有一个直接后继
[D] 以上说法都不正确
6.一个队列的入列序列是1,2,3,4,那么队列的输出序列是( )
[A] 4,3,2,1 [B] 1,2,3,4 [C] 1,4,3,2 [D] 3,2,1,4
7.从一个长度为n的顺序表中删除第i个元素(1≤i≤n)时,需向前移动( )个元素
[A] n - i [B] n – i + 1 [C] n – i - 1 [D] i
8.一个栈的入栈序列是a,b,c,d,e,那么栈的不可能的输出序列是( )
[A] edcba [B] decba [C] dceab [D] abcde
9.从一个具有n个结点的单链表中查其值等于x的结点时,在查成功的情况下,需平均比拟( )个结点
[A] n [B] n/2 [C] (n+1)/2 [D] (n-1)/2
10.L是无头结点的单链表,且P结点既不是首结点,也不是尾结点,试从以下提供的答案中选择适宜的语句序列,实现在P结点前插入S结点( )
〔1〕P->next=S; (2) P->next=P->next->next; (3)P->next=S->next; (4) S->next=P->next;
(5)S->next=L; (6)S->next=NULL; (7)Q=P;
(8)while(P->next!=Q) P=P->next; (9)while(P->next!=NULL) P=P->next
(10)P=Q; (11)P=L; (12)L=S; (13)L=P;
二、判断题(10题,每题1分,共10分)
1.执行语句A * p=new A[100];时,类A的构造函数会被调用100次。
2.一个类中的成员函数重载〔overload〕可以用const修饰符、函数原型的参数个数、对应位置的参数的类型和返回值类型为依据。
3.实例化派生类对象时,一定会调用到基类的某一个构造函数。
4.如果类A是类B的友员,类D以public继承方式从类B继承,那么类A也是类D的友员。
5.在同一个类中,可以定义重载的成员函数 void f(int& anInt);和void f(int anInt);。
6.在public继承方式下,基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能被其它的函数访问。
7.在线性表的顺序存储构造中,逻辑上相邻的数据元素在物理位置上也是相邻的。
8.在线性表的链式存储构造中,逻辑上相邻的数据元素在物理位置上是无关的。
9.栈只能在栈顶进展插入和删除。
10.队列只能在队首进展删除,在队尾进展插入。
三、简答题(第1/3题5分,第2/4题10分,共30分)
1.说明出现在下面头文件中的预处理指令的作用。
#ifndef __MY
#define __MY
第一范式正则化不能产生稀疏解 … //头文件内容
#endif //__MY
2.指出下面程序的错误,将程序修改正确并输出结果。
class circle{
private:
int radius=0;
public:
circle();
~circle();
double area();
void initialize(int);
};
circle::circle()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论