admin 管理员组

文章数量: 887021


2024年1月13日发(作者:matlabr2022a激活密钥)

面向对象的程序设计第1阶段练习题江大考试题库及答案一科共有三个阶段,这是其中一个阶段。答案在最后一页

B.静态成员可以在类的外部初始化

C.静态成员可以被继承

D.静态成员可以被声明为const类型

12.下面关于继承的说法,正确的是()。(1分)

A.子类可以访问父类的私有成员

B.子类可以继承父类的构造函数

C.子类可以继承父类的析构函数

D.子类可以继承父类的友元函数

13.下面哪个关键字可以在子类中引用父类的构造函数()。(1分)

三判断题(共3题,总分值3分,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。)

14.当函数调用时,参数按值传递,函数内对参数的修改不会影响到实参。(1分)

A.√B.×

15.友元函数是类的成员函数,可以访问类的私有成员。(1分)

A.×B.√

16.多态是指同一个函数名可以有多种不同的实现方式。(1分)

A.√B.×

XXX网络教育第一阶段练题

考试科目:《面向对象的程序设计》第1章至第4章(总分100分)

研究中心(教学点)批次:______ 层次:______ 专业:______ 学号:______ 身份证号:______ 姓名:______ 得分:______

一、单选题(共9题,总分值9分,每题1分)

1.下列关于成员函数的说法中,不正确的是( )。

A.成员函数可以无返回值

B.成员函数可以重载

C.成员函数一定是内联函数

D.成员函数可以设定参数的默认值

2.函数没有返回值的时候,应该选择( )的函数类型。

C.不确定

3.假定A是一个类,那么执行语句“A a。b(3)。*p;”调用了( )次构造函数。

A.1

B.2

C.3

D.4

4.在类的定义中,引入友元的原因是( )。

A.提高效率

B.深化使用类的封装性

C.提高程序的可读性

D.提高数据的隐蔽性

5.对重载的函数来说,下面叙述不正确的是( )。

A.参数的类型不同

B.参数的顺序不同

C.参数的个数不同

D.参数的个数、类型、顺序都相同,但函数的返回值类型不同

6.下面对友元的错误描述是( )。

A.关键字XXX用于声明友元

B.一个类中的成员函数可以是另一个类的友元

C.友元函数访问对象的成员不受访问特性影响

D.友元函数通过this指针访问对象成员

7.面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做( )。

A.抽象

B.继承

C.封装

D.多态

8.类的析构函数是在( )时被调用的。

A.类创建

B.创建对象

C.引用对象

D.释放对象

9.通常拷贝构造函数的参数是( )。

A.某个对象名

B.某个对象的成员名

C.某个对象的引用名

D.某个对象的指针名

二、多选题(共4题,总分值4分,每题1分)

10.下面说法正确的是( )。

A.对象是计算机内存中的一块区域,它可以存放代码和数据

B.对象实际是功能相对独立的一段程序

C.各个对象间的数据可以共享是对象的一大优点

D.在面向对象的程序中,对象之间只能通过消息相互通信

11.对静态数据成员的不正确描述是( )。

A.静态成员不属于对象,是类的共享成员

B.静态成员可以在类的外部初始化

C.静态成员可以被继承

D.静态成员可以被声明为const类型

12.下面关于继承的说法,正确的是( )。

A.子类可以访问父类的私有成员

B.子类可以继承父类的构造函数

C.子类可以继承父类的析构函数

D.子类可以继承父类的友元函数

13.下面哪个关键字可以在子类中引用父类的构造函数( )。

三、判断题(共3题,总分值3分,每题1分)

14.当函数调用时,参数按值传递,函数内对参数的修改不会影响到实参。(×)

15.友元函数是类的成员函数,可以访问类的私有成员。(×)

16.多态是指同一个函数名可以有多种不同的实现方式。(√)

26.C++有两种注释符号,一种是//,另一种是XXX。

27.数据定义为全局变量,破坏了数据的封装性;较好的解决办法是将所要共享的数据定义为类的静态数据成员。

28.析构函数运算符通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。

29.友元函数和友元类统称为友元。

45.请编写一个程序,实现以下功能:

输入两个整数a和b,输出a和b的和、差、积、商以及a除以b的余数。

要求定义一个函数来实现以上功能,函数名为“calc”,参数为两个整数a和b,返回值为void。(5分)

46.请编写一个程序,实现以下功能:

输入一个字符串,判断该字符串是否为回文字符串(即正着读和倒着读都一样)。

要求定义一个函数来实现以上功能,函数名为“isPalindrome”,参数为一个字符串,返回值为bool类型。(5分)

47.请编写一个程序,实现以下功能:

输入一个整数n,输出n的阶乘。

要求定义一个递归函数来实现以上功能,函数名为“factorial”,参数为一个整数n,返回值为n的阶乘。(5分)

48.请编写一个程序,实现以下功能:

输入一个字符串,将其中的数字字符替换为它们的平方。

要求定义一个函数来实现以上功能,函数名为“squareDigits”,参数为一个字符串,返回值为替换后的字符串。(5分)

49.请编写一个程序,实现以下功能:

输入一个整数n,输出n行杨辉三角形。

要求定义一个函数来实现以上功能,函数名为“printYanghui”,参数为一个整数n,返回值为void。(5分)

45.修改后:

重新编写程序分析题(4)的程序,设计一个静态成员函数,用来输出程序分析题(4)中静态数据成员的值。

修改后程序:

include

using namespace std;

class Test {

private:

static int num;

public:

static void printNum() {

cout << "num = " << num << endl;

int Test::num = 10;

int main() {

Test::printNum();

return 0;

46.修改后:

include

using namespace std;

int main() {

int num = 50;

int& ref = num;

ref = ref + 10;

cout << "num = " << num << endl;

num = num + 40;

cout << "ref = " << ref << endl;

return 0;

47.修改后:

include

using namespace std;

class Xx {

private:

int num;

public:

Xx(int x) {

num = x;

Xx() {

cout << "dst" << XXX << endl;

int main() {

Xx w(5);

cout << "Exit main" << endl;

return 0;

48.修改后:

include

include

using namespace std;

int main() {

double x = 2.0;

double y = 3.0;

double result = pow(x。y);

cout << "result = " << result << endl;

return 0;

49.修改后:

include

using namespace std;

class Book {

public:

Book(int w);

static int sumnum;

private:

int num;

Book::Book(int w) {

num = w;

sumnum -= w;

int Book::sumnum = 120;

int main() {

Book b1(20);

Book b2(70);

cout << Book::sumnum << endl;

return 0;

39.答案:多态性是指同一操作作用于不同的对象,可以有不同的解释和不同的实现,即同一函数可以有多个不同的实现方式。多态性的实现方式有虚函数、模板和重载等。

解析过程:

40.答案:构造函数是在创建对象时自动调用的特殊成员函数,用于初始化对象的数据成员。析构函数是在对象生命周期结束时自动调用的特殊成员函数,用于清理对象所占用的资源。

解析过程:

41.答案:封装性是指将对象的数据和行为包装在一起,对外部隐藏对象的内部细节。继承性是指子类可以继承父类的属性和方法,从而避免重复编写代码。多态性是指同一函数可以有多个不同的实现方式,具有灵活性和可扩展性。抽象性是指将具体的事物抽象成一般性的事物,从而提高代码的复用性和可维护性。

解析过程:

42.答案:友元是指在类的定义中可以将其他类或函数声明为友元,从而使得这些类或函数可以访问该类的私有成员。友元函数是指在类的定义中声明的非成员函数,可以访问该类的私有成员。友元类是指在类的定义中声明的其他类,可以访问该类的私有成员。

解析过程:

43.答案:STL是指标准模板库,是C++标准库的一部分,提供了一些常用的数据结构和算法,如、迭代器、算法等。使用STL可以提高代码的复用性和可维护性,同时也可以提高代码的效率。

解析过程:

44.答案:异常处理是指在程序运行过程中发生错误时,通过抛出异常对象来终止程序的正常执行流程,并在异常处理器中进行相应的处理。异常处理可以提高程序的健壮性和可靠性,避免程序崩溃或出现未知错误。C++中的异常处理机制包括try-catch语句和throw语句。

数据结构+算法

内联函数是使用inline关键字声明的函数,编译系统会在程序编译时将内联函数调用的地方用函数体进行替换,从而减少程序运行时间。但需要注意递归函数不能定义为内联函数,适合于不含有复杂结构且只有1~5条语句的小函数,只能先定义后使用,不能进行异常接口声明。

除了独立引用外,在C++程序中,引用主要用于函数参数和返回值。

拷贝构造函数是一种特殊的构造函数,用一个已存在的对象初始化另一个对象。为了保证所引用的对象不被修改,通常将引用参数声明为const参数。拷贝构造函数会在对象初始化、形参和实参结合、函数返回值时自动调用。

定义类的一般形式为class类名{public:<公有数据和函数>protected:<保护数据和函数>private:<私有数据和函数>};访问权限有公有、保护和私有三种。

编译系统会根据函数参数的类型和个数来判断使用哪一个函数。

面向对象的程序设计方法中,程序设计为一组相互协作的对象,属性用数据表示,行为用程序代码实现,对象之间通过消息进行通信,程序可表示为:程序=对象+消息+数据结构+算法。

在面向对象程序设计中,类的设计是非常重要的。类是面向对象语言中的基本程序模块,通过类的设计来完成实体的建模任务。类通过一个简单的外部接口与外界发生关系。一个类中的操作不会处理到另一个类中的数据,这样程序模块的独立性、数据的安全性就有了良好的保障。程序的执行取决于事件发生的顺序,由顺序产生的消息来驱动程序的执行。这种方式更符合客观世界的实际,并且面向对象程序设计方法提供了软

件重用、解决大问题和复杂问题的有效途径,具有抽象性、封装性、继承性和多态性等特点。

在下面的代码中,定义了一个名为Book的类,该类具有一个私有变量num和一个静态私有变量sumnum。类中定义了一个构造函数,用于初始化num和sumnum。类中还定义了一个静态公有函数getsum,用于返回sumnum的值。在主函数中,创建了两个Book类的对象b1和b2,并输出了调用getsum函数的结果。

include

using namespace std;

class Book {

public:

Book(int w);

static int getsum() { return sumnum。}

private:

int num;

static int sumnum;

Book::Book(int w) {

num = w;

sumnum -= w;

int Book::sumnum = 120;

int main() {

Book b1(20);

Book b2(70);

cout << Book::getsum() << endl;

return 0;

输出结果为30.

在下面的代码中,首先定义了一个int类型的变量num,并给它赋初始值50.然后又定义了一个int类型的引用ref,并将它和XXX相联系。这样,无论是对XXX还是对ref进行操作,实际上都是对那个一开始放着50的物理单元的内容进行操作。

int num = 50;

int& ref = num;

ref += 10;

cout << "num=" << XXX << endl;

cout << "ref=" << ref << endl;

输出结果为:

num=60

ref=60

在下面的代码中,程序声明了一个对象w。程序首先执行语句1,创建对象w,调用构造函数,num得到初值5.程序接着执行语句2,输出第1行结果。当程序结束时,释放对象w,析构函数被调用,输出第2行结果。

include

using namespace std;

class A {

public:

A(int n) : num(n) {

cout << "create obj,num=" << num << endl;

A() {

cout << "delete obj,num=" << num << endl;

private:

int num;

int main() {

A w(5);

cout << "Exit main" << endl;

return 0;

输出结果为:

create obj,num=5

Exit main

delete obj,num=5

参考程序如下,定义了两个类A和B,其中A类有一个私有变量num,B类有一个私有变量ptr。在主函数中,创建

了一个A类的对象a和一个B类的对象b,并将a的地址赋值给b的ptr变量。然后输出a的地址和b的ptr变量的值。

include

using namespace std;

class A {

public:

int num;

class B {

public:

A* ptr;

int main() {

A a;

B b;

=

cout << &a << endl;

cout << << endl;

return 0;

请在下方输入2个浮点数x,y:

cin。x。y;

float z = pow(x。y);

cout << "pow(" << x << "。" << y << ")=" << z << endl;

return 0;

输出结果】

请在下方输入2个浮点数x,y: 3.1 2

pow(3.1.2)=9.61

解析过程:

为了使用系统函数pow(x。y),需要包含头文件cmath。

为了计算xy的值,需要先输入x和y的值。为了通用性,最好通过交互的方式输入。

然后使用pow函数计算xy的值,并输出结果。


本文标签: 函数 对象 成员 程序 实现