第一期期末试题(20220226144401)

更新时间:2023-04-17 10:52:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

华清远见嵌入式学院第一学期期末

考试

、选择题(10 题,每题2分,共20 分)

1. 已知obj 是一个对象,下面哪一个表达式是不可能出现的?

obj,100 。

[A] obj.100 [B] !obj [C] obj++ [D]

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 "<

(){cout<<"destructing B1 "<

class B2

{

[A] [C]

public:

B2(int j) {cout<<"constructing B2 "<

~B2 ( ) {cout<<"destructing B2 "<

class B3 {

public:

B3( ) {cout<<"constructing B3 *"<

~B3 ( ) {cout<<"destructing B3 "<

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); }

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

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 B1 destructing B3 destructing B2 destructing B1 4. 下列关于 C++ 中类的析构函数,

destructing B2

destructing B1

destructing B3

destructing B1

destructing B2 说法正确的是 ( )

[A] 析构函数必须自己实现

[B] 析构函数不能自己实现

[C] 析构函数不需要明确调用,系统会自动调用

[D] 析构函数的调用顺序和构造函数的调用顺序相同

5. 下列有关线性表的叙述中,正确的是 ( )

[A] 一个线性表是 n 个数据元素的有限序列

[B] 线性表中任何一个元素有且仅有一个直接前驱

[C] 线性表中任何一个元素有且仅有一个直接后继

[D] 以上说法都不正确

6. 一个队列的入列序列是1 ,2,3, 4,则队列的输出序列是 ()

8. 一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是 ()

[A] n [B] n/2 [C] (n+1)/2 [D] (n-1)/2

10. 已知 L 是无头结点的单链表,且 P 结点既不是首结点,也不是尾结点,试从下列提供的答案中选择 合适的语句序列 ,实现在 P 结点前插入 S 结点( ) 二、判断题 (10 题,每题 1分,共 10 分)

1. 执行语句 A * p=new A[100]; 时,类 A 的构造函数会被调用 100 次。

[A] 4,3,2,1 [B] 1,2,3,4 7. 从一个长度为 n 的顺序表中删除第 [A] n - i [B] n - + 1 [C] [C] 1,4,3,2 [D] 3,2,1,4

i 个元素(K i w n)时,需向前移动()个元素

n -i - 1 [D] i

[A] edcba [B] decba [C] dceab [D] abcde

9. 从一个具有 n 个结点的单链表中查找其值等于 个结点

x 的结点时,在查找成功的情况下, 需平均比较 (

) 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;

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 __MYFILE_H_

#define __MYFILE_H_

//头文件内容

#endif //__MYFILE_H

2. 指出下面程序的错误,将程序修改正确并输出结果。

class circle{ private: int radius=0;

public:

circle();

~circle();

double area(); void initialize(int);

};

circle::circle()

{

cout<<"Here is constructor\n"; radius=6;

double circle::area()

{

return 3.14*radius*radius;

}

void circle::initialize(int r)

{

radius=r;

}

}

void circle::~circle()

{

cout<<"Here is destructor\n";

radius=0;

}

void main()

{

circle Nocircle1,Nocircle2;

cout << "The area of the Nocircle1 is" <

cout << "The area of the Nocircle2 is" <

Nocircle2.radius=8;

cout << "The area of the Nocircle1 is"<

is"<

}

3. 简述以下算法的功能。

b) void BB(LNode *s,LNode *q)

{

p=s;

while(p->next!=q)p=p->next;

p->next=s;

}//BB

void AA(LNode *pa,LNode *pb)

{

//pa 和pb 分别指向单循环链表的两个结点

BB(pa,pb);

BB(pb,pa);

}//AA

4. 已知遍历结果如下,试画出对应的二叉树

前序: A B C E H F I J D G K

中序: A H E C I F J B D K G

四、编程题(3 题,每题15 分,共45 分)

1.下面程序由三个文件mai n.cpp ,stude nt.h和stude nt.cpp组成,文件ma in .cpp实现了主函数,文件stude nt.h 定义了类,student.cpp 实现了类的成员函数。

要求:

(1) 将程序中所缺的语句补齐。

(2) 当输入30 29 0 时的输出结果是什么?

//student.h

#include

class TStudent{

public:

TStudent(int in_number,int in_age,int in_sex); int get_number(){return number;};

int get_age(){return age;};

int get_sex(){return sex;};

void set_number(int n){number=n;};

void set_age(int a){age=a;};

void set_sex(int s){sex=s;};

void tellSituationOfStudent();

private:

int number;// 学生学号

int age;// 学生年龄

int sex;// 学生性别,0 为男;1 为女

};

//student.cpp

//构造一个学生

TStudent::TStudent(int in_number,int in_age,int in_sex) {

}

//显示学生的学号、年龄及性别的基本状况

void TStudent::tellSituationOfStudent()

{

//main.cpp void main()

int n,a,s;

while(1){

cout << "Please input number, age and sex of one student( 学号、年龄及性别):"; cin>>n>>a>>s;

〃number(学号)输入-1表示结束

if (n==-1) return;

if(a<=0 && a>100) return;

if (s!=0 && s!=1) return;

TStudent Wang(n,a,s);

Wang.tellSituationOfStudent();

}

2.“四支老鼠抬花轿,一支老鼠放鞭炮,前面两只当鼓手,咚隆咚隆真热闹,这时老猫来贺喜,一只一只全吃掉。”。这首儿歌描述了老鼠婚嫁的场面。完成下面两个问题:

(1)就这段描述,找出所有可能对象,用C++ 定义相应的类,用文字说明各成员数据和函数的作用,不需给出成员函数的实现。

}

2)在main 函数中,用你定义的类产生对象,并用这些对象尽可能地模拟出儿歌中描述的场面。

3. 编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾。

本文来源:https://www.bwwdw.com/article/9pnq.html

Top