admin 管理员组

文章数量: 1086019


2024年5月6日发(作者:手机怎么制作网址链接)

C++面向对象程序设计(甲)考试要求

一. 总体要求

1. 掌握C++语言的基本语法规则和基础知识。

2. 能够阅读和分析C++程序。

3. 理解面向对象理论,能够采用面向对象的方法编写应用程序。

4. 学习现代C++程序设计方法 ,利用现有STL 容器和算法.

二. 重点要求

1. 学会动态分配, 理解单链表处理,正确运用函数重载和默认参数、内联函数。

2. 学习面向对象程序设计基本理论, 3. 掌握类与对象的基本知识 :类与对象的定义、 成

员访问控制、常成员函数 对象作用域和生成期、对象构造和析构时机 (初始化列表, 基类

和子对象构造)。

4.掌握传统复制构造、复制赋值(深层复制和浅层复制),理解C++11 移动构造、移动赋值

机制, 掌握对象如何在函数间传递。

5.掌握对象和指针间关系基本知识;理解特殊机制 :静态成员、 友元函数。

6. 掌握成员运算符和友元运算符两种重载方法;

掌握运算符重载规则,掌握不同类

型对象间转换。

掌握+, -, *, /, [],=, <<, ++, --等运算符重载

和函数对象概念

7. 掌握三种继承方式;掌握虚函数和多态性;了解多重继承和虚基类;理解派生机制在提

高软件可重用性方面的重要作用。

8. 掌握异常抛出和捕获。

9. 掌握函数模板和类模板基本知识。

10. 基本了解STL容器、算法、迭代器机制, 掌握4个 STL容器或容器适配器 (stack、

queue、vector、string)的基本使用和实现原理。

具体要求掌握如下接口 (理解程序意义):

stack: 构造、push、pop、top、empty

queue: 构造、push、pop、front 、back、empty

vector(重点): 构造、empty、size 、push_back、[]、at 、通过迭代器遍历

string: 构造、empty、size 、[]、at 、+、+=、substr、== 、!=、<、>、<=、>=

10.

掌握

STL算法sort、find、 find_if、count、count_if的基本使用方法(理解程序)

和函数对象概念。

11. 学会输入输出流的基本使用方法。

三. 具体题型

1. 单项选择题(每小题2分,共20分)

2. 程序填空题(每空2分,共20分)

3. 程序分析题(5个小题,共30分。重点: 类和对象,运算符重载,异常,虚函数,STL容器)

给出下面各程序的输出结果。

4. 程序设计题(2个小题,共30(15+15)分。重点: 类设计、类成员设置与获取、继承类,

动态分配、复制构造、赋值构造、运算符重载、模板等)

2018~2019第2学期

面向对象程序设计(C++)期末考试要求

一. 总体要求

1. 掌握C++语言的基本语法规则和基础知识。

2. 能够阅读和分析C++程序。

3. 理解面向对象理论,能够采用面向对象的方法编写应用程序。

4. 学习现代C++程序设计方法 ,利用现有STL 容器和算法.

二. 重点要求

1. 学会动态分配, 理解单链表处理,正确运用函数重载和默认参数、内联函数。

2. 学习面向对象程序设计基本理论, 3. 掌握类与对象的基本知识 :类与对象的定义、 成

员访问控制、常成员函数 对象作用域和生成期、对象构造和析构时机 (初始化列表, 基类

和子类对象构造)。

4.掌握传统复制构造、复制赋值(深层复制和浅层复制),理解C++11 移动构造、移动赋值

机制,std::move, 掌握对象如何在函数间传递。

5.掌握对象和指针间关系基本知识;理解特殊机制 :静态成员、 友元函数。

6. 掌握成员运算符和友元运算符两种重载方法;

掌握运算符重载规则,掌握不同类

型对象间转换。

掌握+, -, *, /, [],=, <<, ++, --等运算符重载

和函数对象概念

7. 掌握三种继承方式;掌握虚函数和多态性;了解多重继承和虚基类;理解派生机制在提

高软件可重用性方面的重要作用。

8. 掌握异常抛出和捕获。

9. 掌握函数模板和类模板基本知识。

10. 基本了解STL容器、算法、迭代器机制, 掌握4个 STL容器或容器适配器 (stack、

queue、vector、string)的基本使用和实现原理。

具体要求掌握如下接口 :

stack: 构造、push、pop、top、empty

queue: 构造、push、pop、front 、back、empty

vector(重点): 构造、通过迭代器构造、empty、size 、push_back、[]、at

、通过迭代器遍历

string: 构造、empty、size 、[]、at 、+、+=、substr、== 、!=、<、>、<=、>=

10.

掌握

STL算法sort、find、 find_if、count、count_if的基本使用方法和函数对象

概念。

11. 学会输入输出流的基本使用方法。

三. 具体题型

1. 单项选择题(每小题2分,共20分)

2. 程序填空题(每空2分,共20分)

3. 程序分析题(5个小题,共30分。重点: 类和对象,虚函数,多态,模板与STL容器、算

法)给出下面各程序的输出结果。

4. 程序设计题(2个小题,共30(15+15)分。重点: 类设计、类成员设置与获取、继承,

动态分配、运算符重载、虚函数,多态,函数模板与类模板等)

座位号:

杭州电子科技大学学生考试卷( A )卷

注意:答案直接写在答题纸上,答在试卷上无效,考试后答题纸和试卷一同上交

一、单项选择题(每题2分,总计20分)

题 号

答 案

题 号

答 案

1

6

2

7

3

8

4

9

5

10

二、程序填空题(每空2分,总计20分)

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

1. 阅读该程序,给出程序的输出结果。

2. 阅读该程序,给出程序的输出结果。

3. 阅读该程序,给出程序的输出结果。

4. 阅读该程序,给出程序的输出结果。

5. 阅读该程序,给出程序的输出结果。

座位号:

四、编程题(每题15分,总计30分)

1. 按照要求,编写程序。

三、阅读程序题(每题6分,总计30分)

座位号:

2. 按照要求,编写程序。

9.

杭州电子科技大学学生考试卷( A )卷

下列关于创建一个int型变量的引用,正确的是【 】

A.int a(3), &ra=a; B.int a(3), &ra=&a;

C.double d(3.1);int &rd=d; D.int a(3),ra=a;

注意:答案直接写在答题纸上,答在试卷上无效,考试后答题纸和试卷一同上交

10 标准模板库(STL)所涉及的4个最主要的基本组件是【 】

A.容器、迭代器、算法、函数模板 B.类模板、运算符重载函数、容器、算法

C.容器、算法、迭代器、函数对象 D.类、对象、迭代器、函数

一、单项选择题(每题2分,总计20分)

1. 下列带缺省值参数的函数说明中,正确的说明是【 】

A. int Fun(int x,int y=2,int z=3); B. int Fun(int x=1,int y,int z=3);

C. int Fun(int x,int y=2,int z); D. int Fun(int x=1,int y=2,int z);

下面关于类的静态成员的叙述中正确的是【 】

A.类的静态成员函数只能访问类的静态数据成员

B.类的静态成员函数可直接访问类的所有数据成员

C.类的每个对象都有一份自己的静态数据成员

D. 静态数据成员只能通过“类名::”进行访问

当一个函数声明为某个类的友元函数,下列描述正确的是【 】

A. 友元函数能访问该类的所有成员 B. 友元函数只能访问该类的公有成员

C. 友元函数只能访问该类的成员变量 D. 友元函数只能访问该类的成员函数

下列关于纯虚函数的描述中,错误的是【 】

A.只是基类中函数的声明,没有定义

B. 可以使用包含纯虚函数的类来创建对象

C.当需要使用包含纯虚函数的基类的派生类创建对象时,须在派生类中给出该函数定义。

D. 包含纯虚函数的类称为抽象类

下列关于运算符重载描述中,正确的是【 】

A. 所有的运算符都能被重载 B. 运算符被重载时,它们的优先级与结合性不会改变

C. 可自定义一个新运算符 D. 每个运算符都可以被重载成成员函数和友元函数

可以用p.a的形式访问派生类对象p的基类成员a,其中a是【 】

A. 私有继承的公有成员 B. 公有继承的私有成员

C. 公有继承的保护成员 D. 公有继承的公有成员

复制初始化构造函数的作用是【 】

A. 进行数据类型的转换 B. 用对象调用成员函数

C. 用对象初始化对象 D. 用一般类型的数据初始化对象

所谓多态性是指【 】

A.不同的对象调用不同名称的函数 B. 不同的对象调用相同名称的函数

C. 一个对象调用不同名称的函数 D.一个对象调用不同名称的对象

2.

二、程序填空题(每空2分,总计20分)

1. 请在下面程序的横线处填上适当内容,以使程序完整,并使运行结果为:

The square’s area is 4

#include

class Rectangle

{

double W,H;

public:

Rectangle(double w=0,h=0){W=w;H=h;}

void show(){cout<

};

class Square:public Rectangle

{

public:

Square(double r):__________(1)_________{};

void show()

{

cout<<”The square’s area is “;

_______________(2)___________;

}

};

void main()

{

Square s(2);

();

3.

4.

5.

6.

7.

8.

}

2.

3.

下面程序中A是抽象类。请在下面程序的横线处填上适当内容,以使程序完整,并使程序的

输出为:

B1 called

B2 called

#include

class A

{

public:

______________(3)____________;

};

class B1:public A

{

public:

void display()

{cout<”B1 called”<

};

class B2:public A

{

public:

void display()

{cout<<”B2 called”<

};

void show(_________(4)________)

{

p->display();

}

void main()

{

B1 b1;

B2 b2;

A* p[2]={&b1,&b2};

for(int i=0;i<2;i++)

show(p[i]);

}

请在下面程序的横线处填上适当字句,以使程序完整,并使程序的输出为8。

#include

template

void fun(___________(5)___________)

{

4.

t=x[0];

for(int i=0;i

if(a[i]>t)

t=a[i];

}

void main()

{

int a[]={3,5,8,4,6};

int m;

fun(a,5,__(6)____);

cout<

}

下面程序通过把类Distance声明为类Point的友元类来实现计算两点之间的距离。请在下面

程序的横线处填上适当字句,以使程序完整。

#include

#include

using namespace std;

class Point

{

double X,Y;

public:

Point(double x,double y)

{X=x;Y=y;}

____________(7)____________;

};

class Distance

{

public:

double Dis(Point& p1,Point& p2);

{

double t;

____________________(8)___________________;

return t;

}

}

void main(){

Point p(10,10),q(20,20);

Distance d;

cout<<(p,q)<

5.

}

下面程序用STL的条件计数算法和自定义的函数对象对一个存放在整数向量类对象中的学

生成绩进行统计及格人数并显示结果。请在下面程序的横线处填上适当字句,以使程序完整。

#include

#include

#include

#include

using namespace std;

class Pass

{

public:

____________________(9)___________________

{

return x>=60;

}

};

void main()

{

vector a;

int count;

_back(78);

_back(92);

_back(52);

count = ____________________(10)___________________;

cout<<"count="<

}

2.

{

int a[]={3,7,2,1,5};

element(a,3)=9;

for(int i=0;i<5;i++)

cout<

}

#include

using namespace std;

class A

{

int num;

public:

A()

{num=0;cout<<"A default constructor"<

A(int n)

{num=n;cout<<”A constructor,num=”<

~A()

{cout<<"A destructor,num="<

};

void main()

{

A a,*p;

p=new A(2);

a=*p;

delete p;

cout<<”Exiting main”<

}

#include

using namespace std;

class Format

{

public:

virtual void header()

{cout<<"This is a head"<

virtual void footer()

{cout<<"This is a footer"<

virtual void body()

{cout<<"This is a body"<

void display()

3.

四、程序阅读题(每题6分,总计30分)

1. #include

using namespace std;

int& element(int x[],int index)

{

return x[index+1];

}

void main()

{header();body();footer();}

4.

};

class MyFormat:public Format

{

public:

void header()

{cout<<"This is my header"<

void footer()

{cout<<"This is my footer"<

};

void main()

{

Format * p;

p=new Format;

p->display();delete p;

p=new MyFormat;

p->display();delete p;

}

从键盘输入8 4 3 1 9 6 11 2 5,给出程序的输出结果。

#include

#include

#include

#include

using namespace std;

main()

{

vector v;

stack s;

int i,n,x;

cin>>n;

for(i=0;i

{

cin>>x;

_back(x);

}

for(vector::iterator p=();p!=();p++)

if(*p%2==0)

(*p);

while(!())

{

5.

cout<<()<

();

}

}

#include

#include

using namespace std;

class Fract

{

int den,num;

public:

Fract(int d=0,int n=1)

{

if(n==0)

throw exception("divided by zero");

den = d;num=n;

}

int& operator[](int index)

{

if(index<0||index>1)

throw exception("index out of range");

if(index==0)

return den;

if(index==1)

return num;

}

void show()

{ cout<

};

void main()

{

try

{

Fract f(0,2);

();

cout<

}

catch(exception e)

{


本文标签: 函数 程序 对象 成员 掌握