欢迎光临“moocC++程序设计_7课后答案(mooc2023课后作业答案)-五煦查题”,如有问题请及时联系我。

moocC++程序设计_7课后答案(mooc2023课后作业答案)

moocC++程序设计_7课后答案(mooc2023课后作业答案)

第一单元 从 C 到C++

第一单元 测验

1、序设下面程序片段哪个没错?
A、计课int n = 4; int & r = n * 5;
B、后答后作int n = 6; const int & r = n; r = 7;
C、案m案int n = 8; const int & r1 = n; int & r2 = r1;
D、业答int n = 8; int & r1 = n; const int r2 = r1;

2、序设下面程序片段输出结果是计课什么? int a = 1,b = 2; int & r = a; r = b; r = 7; cout << a << endl;
A、1
B、后答后作2
C、案m案7
D、业答8

3、序设下面说法哪种是计课对的?
A、常引用所引用的后答后作变量,其值不能被修改
B、案m案不能通过常量指针,业答去修改其指向的变量
C、常量指针一旦指向某个变量,就不能再指向其他变量
D、1+1 = 3

4、表达式 “new int”的返回值类型是:
A、int
B、int *
C、int &
D、void

5、下面小段程序,哪个是正确的:
A、char * p = new char[10]; p[0] = 'K'; delete [] p;
B、int *p = new int[25]; p[10] = 100; delete p
C、char * p = new int; p = 'a'; delete p;
D、int * p = new char[20];

6、下面说法正确的是:
A、多个重载函数的参数个数必须不同。
B、两个函数,参数表相同,返回值类型不同,它们是重载关系。
C、调用一个第二个和第三个参数都有有缺省值的函数时,可以不写第二个实参而写第三个实参。
D、使用内联函数的目的是提高程序的运行速度。

7、简单的swap 通过码是 ( 请参考公告中的“关于编程作业的说明”完成编程作业(请注意,编程题都要求提交通过码,在openjudge上提交了程序并且通过以后,就可以下载到通过码。)

8、难一点的swap的通过码是

9、好怪异的返回值 通过码是

10、神秘的数组初始化 通过码是

第一单元 测验(需要补做的同学做)

1、下面程序片段哪个没错?
A、int n = 4; int & r = n * 5;
B、int n = 6; const int & r = n; r = 7;
C、int n = 8; int & r1 = n; const int r2 = r1;
D、int n = 8; int & r1 = n; const int r2 = r1;

2、下面程序片段输出结果是什么? int a = 1,b = 2; int & r = a; r = b; r = 7; cout << a << endl;
A、1
B、2
C、7
D、8

3、下面说法哪种是对的?
A、常引用所引用的变量,其值不能被修改
B、不能通过常量指针,去修改其指向的变量
C、常量指针一旦指向某个变量,就不能再指向其他变量
D、1+1 = 3

4、表达式 “new int”的返回值类型是:
A、int
B、int *
C、int &
D、void

5、下面小段程序,哪个是正确的:
A、char * p = new char[10]; p[0] = 'K'; delete [] p;
B、char * p = new char[10]; p[0] = 'K'; delete [] p;
C、char * p = new int; p = 'a'; delete p;
D、int * p = new char[20];

6、下面说法正确的是:
A、多个重载函数的参数个数必须不同。
B、两个函数,参数表相同,返回值类型不同,它们是重载关系。
C、调用一个第二个和第三个参数都有有缺省值的函数时,可以不写第二个实参而写第三个实参。
D、使用内联函数的目的是提高程序的运行速度。

7、简单的swap 通过码是 ( 请参考公告中的“关于编程作业的说明”完成编程作业(请注意,编程题都要求提交通过码,在openjudge上提交了程序并且通过以后,就可以下载到通过码。)

8、难一点的swap的通过码是

9、好怪异的返回值 通过码是

10、神秘的数组初始化 通过码是

第二单元 类和对象基础

第二单元 测验

1、有类A如下定义: class A { int v; public: A ( int n) { v = n; } }; 下面哪条语句是编译不会出错的?
A、A) A a = new A();
B、B) A a2;
C、C) A * p = new A();
D、D) A a1(3);

2、假设 A 是一个类的名字,下面的语句生成了几个类A的对象? A * arr[4] = { new A(), NULL,new A() };
A、A) 1
B、B) 2
C、C) 3
D、D) 4

3、假设A 是一个类的名字,下面哪段程序不会用到A的复制构造函数?
A、A) A a1,a2; a1 = a2;
B、B) void func( A a) { cout << "good" << endl; }
C、C) A func( ) { A tmp; return tmp; }
D、D) A a1; A a2(a1);

4、类A定义如下: class A { int v; public: A(int i) { v = i; } A() { } }; 下面哪段程序不会引发类型转换构造函数被调用?
A、A) A a1(4)
B、B) A a2 = 4;
C、C) A a3; a3 = 9;
D、D) A a1,a2; a1 = a2;

5、假设A是一个类的名字,下面的程序片段会调用类A的调用析构函数几次? int main() { A * p = new A[2]; A * p2 = new A; A a; delete [] p; }
A、A) 1
B、B) 2
C、C) 3
D、D) 4

6、学生信息处理程序 通过码

7、奇怪的类复制 通过码

8、超简单的复数类 通过码

9、哪来的输出 通过码

第二单元 测验

1、有类A如下定义: class A { int v; public: A ( int n) { v = n; } }; 下面哪条语句是编译不会出错的?
A、A) A a = new A();
B、B) A a2;
C、C) A * p = new A();
D、D) A a1(3);

2、假设 A 是一个类的名字,下面的语句生成了几个类A的对象? A * arr[4] = { new A(), NULL,new A() };
A、A) 1
B、B) 2
C、C) 3
D、D) 4

3、假设A 是一个类的名字,下面哪段程序不会用到A的复制构造函数?
A、A) A a1,a2; a1 = a2;
B、B) void func( A a) { cout << "good" << endl; }
C、C) A func( ) { A tmp; return tmp; }
D、D) A a1; A a2(a1);

4、类A定义如下: class A { int v; public: A(int i) { v = i; } A() { } }; 下面哪段程序不会引发类型转换构造函数被调用?
A、A) A a1(4)
B、B) A a2 = 4;
C、C) A a3; a3 = 9;
D、D) A a1,a2; a1 = a2;

5、假设A是一个类的名字,下面的程序片段会调用类A的调用析构函数几次? int main() { A * p = new A[2]; A * p2 = new A; A a; delete [] p; }
A、A) 1
B、B) 2
C、C) 3
D、D) 4

6、学生信息处理程序 通过码

7、奇怪的类复制 通过码

8、超简单的复数类 通过码

9、哪来的输出 通过码

第三单元 类和对象提高

第三单元 测验

1、1) 以下说法不正确的是:
A、A) 静态成员函数中不能使用this指针
B、B) this指针就是指向成员函数所作用的对象的指针
C、C) 每个对象的空间中都存放着一个this指针
D、D) 类的非静态成员函数,真实的参数比所写的参数多1

2、2) 下面说法哪个不正确?
A、A) 静态成员函数内部不能访问同类的非静态成员变量,也不能调用同类的非静态成员函数
B、B) 非静态成员函数不能访问静态成员变量
C、C) 静态成员变量被所有对象所共享
D、D) 在没有任何对象存在的情况下,也可以访问类的静态成员

3、3) 以下说法正确的是:
A、A) 成员对象都是用无参构造函数初始化的
B、B) 封闭类中成员对象的构造函数先于封闭类的构造函数被调用
C、C) 封闭类中成员对象的析构函数先于封闭类的析构函数被调用
D、D) 若封闭类有多个成员对象,则它们的初始化顺序取决于封闭类构造函数中的成员初始化列表

4、4) 以下关于友元的说法哪个是不正确的?
A、A) 一个类的友元函数中可以访问该类对象的私有成员
B、B) 友元类关系是相互的,即若类A是类B的友元,则类B也是类A的友元
C、C) 在一个类中可以将另一个类的成员函数声明为友元
D、D) 类之间的友元关系不能传递

5、返回什么才好呢 通过码

6、Big & Base 封闭类问题 通过码

7、编程填空:统计动物数量 通过码

8、这个指针哪来的 通过码

9、魔兽世界之一:备战 通过码

第四周 运算符重载

第四周测验

1、1)如果将 [ ] 运算符重载成一个类的成员函数,则该重载函数有几个参数?
A、A) 0
B、B) 1
C、C) 2
D、D) 3

2、2)以下说法正确的是:
A、A) 成员对象都是用无参构造函数初始化的
B、B) 封闭类中成员对象的构造函数先于封闭类的构造函数被调用
C、C) 封闭类中成员对象的析构函数先于封闭类的析构函数被调用
D、D) 若封闭类有多个成员对象,则它们的初始化顺序取决于封闭类构造函数中的成员初始化列表

3、3)重载“<<”用于将自定义的对象通过cout输出时,以下说法哪个是正确的?
A、A) 可以将"<<"重载为 ostream 类的成员函数,返回值类型是 ostream &
B、B) 可以将"<<"重载为全局函数,第一个参数以及返回值,类型都是 ostream
C、C) 可以将"<<"重载为全局函数,第一个参数以及返回值,类型都是 ostream &
D、D) 可以将"<<"重载为 ostream 类的成员函数,返回值类型是 ostream

4、4)如何区分自增运算符重载的前置形式和后置形式?
A、A) 重载时,前置形式的函数名是 ++ operator,后置形式的函数名是 operator ++
B、B) 后置形式比前置形式多一个 int 类型的参数
C、C) 无法区分,使用时不管前置形式还是后置形式,都调用相同的重载函数
D、D) 前置形式比后置形式多了一个int类型的参数

5、MyString 通过码

6、看上去好坑的运算符重载 通过码

7、惊呆!Point竟然能这样输入输出

8、第四周程序填空题3

9、别叫,这个大整数已经很简化了! 通过码

第五周 继承

第五周测验

1、1) 如果多种事物,有一些共同的特点,又有一些各自不同的特点,如何编写类来代表这些事物比较合适?
A、A) 为每种事物独立编写一个类,各类之间互相无关
B、B) 写一个类代表其中一种事物,代表其他事物的类,都从这个类派生出来
C、C) 概括所有事物的共同特点,写一个基类。然后为每种事物写一个类,都从基类派生而来
D、D) 一共就写一个类,包含所有事物的所有特点,然后用一个成员变量作为标记来区分不同种类的事物

2、2) 以下哪种派生关系是合理的
A、A) 从“虫子”类派生出“飞虫”类
B、B) 从“点”类派生出“圆”类
C、C) 从“狼”类派生出“狗”类
D、D) 从“爬行动物”类派生出“哺乳动物”类

3、3) 派生类和基类有同名同参数表的成员函数,这种现象:
A、A) 叫重复定义,是不允许的
B、B) 叫函数的重载
C、C) 叫覆盖。在派生类中基类的同名函数就没用了
D、D) 叫覆盖。体现了派生类对从基类继承得到的特点的修改

4、4) 以下说法正确的是:
A、A) 派生类可以和基类有同名成员函数,但是不能有同名成员变量
B、B) 派生类的成员函数中,可以调用基类的同名同参数表的成员函数
C、C) 派生类和基类的同名成员函数必须参数表不同,否则就是重复定义
D、D) 派生类和基类的同名成员变量存放在相同的存储空间

5、5) 以下说法正确的是:
A、A) 派生类对象生成时,派生类的构造函数先于基类的构造函数执行
B、B) 派生类对象消亡时,基类的析构函数先于派生类的析构函数执行
C、C) 如果基类有无参构造函数,则派生类的构造函数就可以不带初始化列表
D、D) 在派生类的构造函数中部可以访问基类的成员变量

6、全面的MyString 通过码

7、继承自string的MyString 通过码

8、魔兽世界2 通过码

9、统计动物数量 通过码

第六周 多态

第六周测验

1、看上去像多态 通过码

2、Fun和Do 通过码

3、这是什么鬼delete 通过码

4、怎么又是Fun和Do 通过码

第七周 输入输出和模板

第七周测验

1、简单的SumArray 通过码

2、简单的foreach 通过码

3、简单的Filter 通过码

4、你真的搞清楚为啥 while(cin >> n) 能成立了吗? 通过码

5、山寨版istream_iterator 通过码

6、这个模板并不难 通过码

7、排序,又见排序! 通过码

中国大学C++程序设计_7

本文主要介绍中国大学C++程序设计课程的第七部分内容。本部分主要涵盖了类与对象的相关内容。

类与对象

在C++中,类是一种用户定义的数据类型。类由数据成员和成员函数组成。数据成员表示类的属性,而成员函数则表示类的行为。当类被实例化为对象时,对象会拥有类的属性和行为。

定义一个类的语法如下:

class 类名{     private:        //私有数据成员    public:        //公有数据成员和成员函数};

其中,private关键字定义了私有数据成员,只有类的成员函数可以访问。public关键字定义了公有数据成员和成员函数,任何人都可以访问。

构造函数

构造函数是一种特殊的成员函数,它在对象被创建时自动调用。构造函数可以用来初始化对象的属性。C++中的构造函数与类同名,没有返回类型,也不需要在调用时使用函数名。

定义一个构造函数的语法如下:

class 类名{     private:        //私有数据成员    public:        类名(); //构造函数声明        //公有数据成员和成员函数};类名::类名(){     //构造函数定义}

析构函数

析构函数是一种特殊的成员函数,它在对象被销毁时自动调用。析构函数可以用来释放对象所占用的资源,例如动态分配的内存。

定义一个析构函数的语法如下:

class 类名{     private:        //私有数据成员    public:        类名(); //构造函数声明        ~类名(); //析构函数声明        //公有数据成员和成员函数};类名::~类名(){     //析构函数定义}

this指针

this指针是C++中的一个关键字,它指向当前对象的地址。在类的成员函数中,可以使用this指针来访问当前对象的属性和成员函数。

class 类名{     private:        int x;    public:        void setX(int x)        {             this->x = x;        }};类名 obj;obj.setX(10);

在上面的例子中,this->x表示当前对象的x属性。

友元函数

友元函数是一种不属于类的非成员函数,但可以直接访问类的私有成员。友元函数通常用于类的操作符重载或类的辅助函数。

定义一个友元函数的语法如下:

class 类名{     private:        int x;    public:        friend void 友元函数名(类名 &);};void 友元函数名(类名 &obj){     //访问obj的私有成员}

总结

以上是本文对中国大学C++程序设计课程的第七部分内容的介绍。通过学习本部分的内容,读者可以了解类与对象的概念,以及如何定义构造函数、析构函数、this指针和友元函数。

来源:本文由五煦查题原创撰写,欢迎分享本文,转载请保留出处和链接!

抢沙发

评论已关闭!