MOOC 面向对象程序设计(河南农业大学)1001969012 最新慕课完整章节测试答案
第二部分 过程化编程技术-函数应用
函数单元测试
1、单选题:
下列函数原型声明中错误的是____。
选项:
A: void Fun(int x=0,int y=0);
B: void Fun(int x,int y);
C: void Fun(int x,int y=0);
D: void Fun(int x=0,int y)
答案: 【 void Fun(int x=0,int y)】
2、单选题:
已知函数f的原型是:void f(int *a,long &b);,变量v1、v2的定义是;int v1; long v2;,正确的调用语句是____。
选项:
A: f(v1,&v2);
B: f(v1,v2);
C: f(&v1,v2);
D: f(&v1,&v2);
答案: 【 f(&v1,v2);】
3、单选题:
有以下程序#include <iostream>using namespace std;class MyClass{public: MyClass(int n) {number=n;} //拷贝构造函数 MyClass(MyClass&other){number=other.number;} ~MyClass(){}private: int number;};MyClass fun(MyClass p); { MyClass temp(p); return temp;}int main(){ MyClass obj1(10),obj2(0); MyClass obj3(obj1); obj2=fun(obj3); return 0;}程序执行时,MyClass类的拷贝构造函数被调用的次数是____。
选项:
A: 5
B: 4
C: 3
D: 2
答案: 【 4】
4、单选题:
在C++中用来实现运行时多态性的是____
选项:
A: 重载函数
B: 析构函数
C: 构造函数
D: 虚函数
答案: 【 虚函数】
5、单选题:
下列关于C++函数的描述中正确的是____。
选项:
A: 主函数是程序的入口,它由用户定义的函数调用
B: 函数在调用之前必须先被声明
C: 每个用户定义函数只能被其他函数调用一次
D: 函数是C++中面向对象程序设计框架的基本组成单元
答案: 【 函数在调用之前必须先被声明】
6、单选题:
以下函数值的类型是____。fun(float x){ float y; y=3*x-4; return(y);}
选项:
A: int
B: char
C: void
D: float
答案: 【 void】
7、单选题:
下面关于转换函数重载的说法正确的是____
选项:
A: 转换函数的重载与普通函数的重载是一样的,也是靠函数的参数的个数和类型来区别不同的函数
B: 转换函数没有参数,因此不能重载,否则将发生二义性
C: 转换函数虽然没有参数,但可以依靠函数的类型区别,所以可以重载
D: 对转换函数进行调用时,必须使用强制类型转换以指明调用的是哪个转换函数
答案: 【 转换函数虽然没有参数,但可以依靠函数的类型区别,所以可以重载】
8、单选题:
关于成员函数的重载,说法正确的是____
选项:
A: 就是在类中设计多个函数名相同,参数个数及参数类型也相同的函数
B: 析构函数可以重载
C: 函数重载,要求函数名相同,但参数个数不同,或参数相同,但其类型不同
D: 构造函数不可重载
答案: 【 函数重载,要求函数名相同,但参数个数不同,或参数相同,但其类型不同】
9、单选题:
下面关于C++语言说法不正确的是____
选项:
A: 具有函数式的程序结构,其程序至少由一个函数构成,不论是主函数,还是其他函数
B: 变量的数据类型丰富,而且使用不同的存储类别,以控制函数内外信息的交换
C: 具有编译预处理的功能,为程序的设计与修改、调试、移植带来方便
D: 既是面向结构的程序设计语言,又是面向对象的程序设计语言,使用起来很方便
答案: 【 具有函数式的程序结构,其程序至少由一个函数构成,不论是主函数,还是其他函数】
10、单选题:
有如下函数调用语句:func(a,a+b,(a+b,a+c,c));在该语句中,含有的实参个数是____
选项:
A: 3
B: 4
C: 5
D: 有语法错
答案: 【 有语法错】
11、单选题:
派生类的构造函数的成员初始化列表中,不能包含____
选项:
A: 基类的构造函数
B: 派生类中对象的初始化
C: 基类中子对象的初始化
D: 派生类中一般数据成员的初始化
答案: 【 基类中子对象的初始化】
12、单选题:
已知类X成功地重载了――、=、+、和[ ]这几个运算符,则其中肯定属于成员函数的运算符是____
选项:
A: +和=
B: [ ]和后置――
C: =和[ ]
D: 前置――和[ ]
答案: 【 =和[ ]】
13、单选题:
关于模板函数与函数模板的说法正确的是____
选项:
A: 其实质是一样的,只是说法不同
B: 两者的形参类型是一样的
C: 模板函数是函数模板的实例化
D: 函数模板是模板函数的实例化
答案: 【 模板函数是函数模板的实例化】
14、单选题:
下列关于构造函数的描述中,错误的是____
选项:
A: 构造函数可以设置默认参数
B: 构造函数在说明类变量时自动执行
C: 构造函数可以对静态数据成员进行初始化
D: 构造函数可以重载
答案: 【 构造函数可以对静态数据成员进行初始化】
15、单选题:
关于函数的调用下面不正确的是____
选项:
A: 由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行
B: 函数的调用可以在任意函数之间进行,只要有需要
C: 一个函数可以自己调用自己
D: 函数返回时可以不必带返回值,这时函数在定义时其类型应用void标示
答案: 【 由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行】
16、单选题:
以下叙述中不正确的是____
选项:
A: 在C++中,函数中的自动变量可以赋初值,每调用一次,赋一次初值
B: 在C++中,在调用函数时,参数和对应形参在类型上只需赋值兼容
C: 在C++中,外部变量的隐含类别是自动存储类别
D: 在C++中,函数形参可以说明为register变量
答案: 【 在C++中,函数形参可以说明为register变量】
17、单选题:
下列函数的声明正确的是____
选项:
A: float sum(float x,y) {.......}
B: flaot sum(float,float );
C: float sum(x,y)
D: float sum(floatx,floaty) {.......}
答案: 【 flaot sum(float,float );】
18、单选题:
在C++中,函数原型不能标识____
选项:
A: 函数的返回类型
B: 函数参数的个数
C: 函数参数类型
D: 函数的功能
答案: 【 函数的功能】
19、单选题:
下列有关重载函数的说法中正确的是____
选项:
A: 重载函数必须具有不同的返回值类型
B: 重载函数参数个数必须相同
C: 重载函数必须有不同的形参列表
D: 重载函数名可以不同
答案: 【 重载函数必须有不同的形参列表】
20、单选题:
决定C++语言中函数的返回值类型的是____
选项:
A: return语句中的表达式类型
B: 调用该函数时系统随机产生的类型
C: 调用该函数时的主调用函数类型
D: 在定义该函数时所指定的数据类型
答案: 【 在定义该函数时所指定的数据类型】
21、单选题:
已知f1和f2是同一类的两个成员函数,但f1不能直接调用f2,这说明____
选项:
A: f1和f2都是静态函数
B: f1不是静态函数,f2是静态函数
C: f1是静态函数,f2不是静态函数
D: f1和f2都不是静态函数
答案: 【 f1是静态函数,f2不是静态函数】
22、单选题:
所有在函数中定义的变量,连同形式参数,都是____
选项:
A: 全局变量
B: 局部变量
C: 静态变量
D: 寄存器变量
答案: 【 局部变量】
23、单选题:
一个函数功能不太复杂,但要求被频繁调用,则应把它定义为____
选项:
A: 内联函数
B: 重载函数
C: 递归函数
D: 嵌套函数
答案: 【 内联函数 】
24、单选题:
下列重载为非成员函数的运算符函数原型中,错误的____
选项:
A: Fraction operator -(Fraction);
B: Fraction& operator =(Fraction&, Fraction);
C: Fraction& operator +=(Fraction&, Fraction);
D: Fraction operator +(Fraction, Fraction);
答案: 【 Fraction& operator +=(Fraction&, Fraction);】
25、单选题:
对下面的程序说法正确的是____。#include<iostream.h>void sum (float m,float n){ float sum=m+n; }main( ){cout<<sum(5.3,6.5)<<endl;}
选项:
A: 该程序是错误的,错误之处在于没有对sum( )函数进行说明
B: 程序书写规整,无语法错误,是正确的
C: 该程序语法无错误,但在调用函数sum( )时出错,因为sum( )函数被定义为void类型,但却被主函数调用,因而是错误的
D: 虽然sum( )函数被定义为void类型,但调用时也不会出错,程序能够编译通过
答案: 【 该程序语法无错误,但在调用函数sum( )时出错,因为sum( )函数被定义为void类型,但却被主函数调用,因而是错误的】
26、单选题:
在重载一个运算符函数时,其参数表中没有任何参数,这说明该运算符是____
选项:
A: 一元非成员运算符
B: 一元成员运算符
C: 二元非成员运算符
D: 二元成员运算符
答案: 【 一元成员运算符】
27、单选题:
下列关于函数的调用,不正确的是____
选项:
A: 如果一个问题的解决要依靠另一个问题的解决,而另一个问题的解决的方法与原问题相同,则此问题可用递归方法来解决
B: 函数的调用可作为函数的实参
C: 函数的调用可作为函数形参
D: 函数的调用可出现在执行语句中,也可出现在表达式中
答案: 【 函数的调用可作为函数形参】
28、单选题:
以下说法中正确的是____
选项:
A: C++语言程序总从第一个的函数开始执行
B: 在C++语言程序中,要调用的函数必须在main( )函数中定义
C: C++语言程序总是从main( )函数开始执行
D: C++语言程序中的main( )函数必须放在程序的开始部分
答案: 【 C++语言程序总是从main( )函数开始执行】
29、单选题:
关于内联函数的说法不正确的是____
选项:
A: 在说明类的同时定义成员函数,则函数隐含为内联函数
B: 也可在类外用inline关键字,对成员函数进行说明,则该函数也为内联函数
C: 当内联函数被调用时,内联函数的代码在调用处被打开
D: 当内联函数被调用时,内联函数将返回结果
答案: 【 当内联函数被调用时,内联函数将返回结果】
30、单选题:
下面属于同一函数模板的是____
选项:
A: template<class t1> t1 max(t1 &a,t1 &b) {...} template<class t2> t2 max(t2 &a,t2 &b) {...}
B: template<class t1> t1 max(t1 a,t1 b) {...} template<class t2> t2 max(t2 &a,t2 &b) {...}
C: template<class t1> t1 max(t1 *a,t1 *b) {...} template<class t2> t2 max(t2 &a,t2 &b) {...}
D: template<class t1> t1 max(t1 a,t1 b) {...} template<class t2> t2 max(t2 &a,t2 &b,t2 c) {...}
答案: 【 template<class t1> t1 max(t1 a,t1 b) {...} template<class t2> t2 max(t2 &a,t2 &b,t2 c) {...}】
31、单选题:
关于函数的返回值正确的是____
选项:
A: 由return语句返回时,只带回一值,其类型在函数定义时确定
B: 其类型由调用表达式决定
C: 函数可以没有返回值,这时在函数定义,函数的类型说明就没必要了
D: 函数调用就要有返回值,否则调用就没有意义了
答案: 【 由return语句返回时,只带回一值,其类型在函数定义时确定】
32、单选题:
关于函数的返回不正确的是____
选项:
A: 使程序的执行重新返回到主函数,使程序继续往下执行
B: 释放调用函数时临时分配的存储单元
C: 返回一个值给主调函数
D: 其返回值可为数值、地址,也可没有任何返回值
答案: 【 返回一个值给主调函数】
33、单选题:
下面减运算符函数重载的运算结果是____。#include<iostream.h>class autominus{float x;public:autominus(){ x=0;}autominus(float i){ x=i;}void operator --(){ --x;}void operator --(int){ x-=2;}void show(){ cout<<"x="<<x<<" ";}};void main(){ autominus p(6);p.show();--p;p.show();p--;p.show();}
选项:
A: X=6 X=5 X=4
B: X=4 X=5 X=6
C: X=6 X=5 X=3
D: X=5 X=4 X=6
答案: 【 X=6 X=5 X=3】
34、单选题:
在进行了任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入操作的函数的函数名是____
选项:
A: fail
B: eof
C: bad
D: good
答案: 【 eof】
35、单选题:
在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是____
选项:
A: 地址传递
B: 单向值传递
C: 由实参传给形参,再由形参传回实参
D: 传递方式由用户指定
答案: 【 单向值传递】
函数应用单元测验
1、单选题:
C++语言中所有在函数中定义的变量,连同形式参数,都属于()
选项:
A: 全局变量
B: 局部变量
C: 静态变量
D: 函数
答案: 【 局部变量】
2、单选题:
当一个函数无返回值时,定义它的函数的类型是( )
选项:
A: void
B: int
C: 无
D: long
答案: 【 void】
3、单选题:
函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为()
选项:
A: 1
B: 2
C: 4
D: 5
答案: 【 2 】
4、单选题:
实现两个相同类型数加法的函数模板的声明是()
选项:
A: add(T x,T y)
B: T add(x,y)
C: T add(T x,y)
D: T add(T x,T y)
答案: 【 T add(T x,T y)】
5、单选题:
下列有关重载函数的说法中正确的是()
选项:
A: 重载函数必须具有不同的返回值类型
B: 重载函数参数个数必须相同
C: 重载函数必须有不同的形参列表
D: 重载函数名可以不同
答案: 【 重载函数必须有不同的形参列表】
6、单选题:
类型转换函数( )
选项:
A: 不能带有参数
B: 只能带一个参数
C: 只能带2个参数
D: 只能带3个参数
答案: 【 不能带有参数】
7、单选题:
设有函数模板 template <class Q> Q Sum(Q x,Q y) {return (x)+(y);} 则下列语句中对该函数模板错误的使用是()
选项:
A: Sum(10,2);
B: Sum(5.0,6.7);
C: Sum(15.2f,16.0f);
D: Sum(“AB”,”CD”);
答案: 【 Sum(“AB”,”CD”); 】
8、单选题:
一个交换两个浮点数的函数swap,并在主函数中调用这个 函数进行两个浮点数的交换,但结果未正确输出,只修改哪一行代码来使程序正确 Void swap(float a,float b){ float temp=a; a=b; b=temp; } void main( ) { float a=1,b=2; swap ( a, b ); }
选项:
A: 第1行
B: 第2行
C: 第4行
D: 第6行
答案: 【 第1行 】
9、单选题:
适宜采用inline定义函数情况是()
选项:
A: 函数体含有循环语句
B: 函数体含有递归语句
C: 函数代码少、频繁调用
D: 函数代码多、不常调用
答案: 【 函数代码少、频繁调用】
10、单选题:
一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 ()
选项:
A: 内联函数
B: 重载函数
C: 递归函数
D: 嵌套函数
答案: 【 内联函数】
11、单选题:
决定C++语言中函数的返回值类型的是()
选项:
A: return语句中的表达式类型
B: 调用该函数时系统随机产生的类型
C: 调用该函数时的主调用函数类型
D: 在定义该函数时所指定的数据类型
答案: 【 在定义该函数时所指定的数据类型】
12、单选题:
已知f1和f2是同一类的两个成员函数,但f1不能直接调用f2,这说明()
选项:
A: f1和f2都是静态函数
B: f1不是静态函数,f2是静态函数
C: f1是静态函数,f2不是静态函数
D: f1和f2都不是静态函数
答案: 【 f1是静态函数,f2不是静态函数 】
13、单选题:
下面判断是否构成重载函数的条件中,错误的判断条件是( )
选项:
A: 参数类型不同
B: 参数个数不同
C: 参数顺序不同
D: 函数返回值不同
答案: 【 函数返回值不同】
14、单选题:
在C++中,函数原型不能标识()
选项:
A: 函数的返回类型
B: 函数参数的个数
C: 函数参数类型
D: 函数的功能
答案: 【 函数的功能 】
第三部分 封装与信息隐藏-类与对象
类与对象单元测试3
1、单选题:
数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()
选项:
A: 类
B: 对象
C: 函数体
D: 数据块
答案: 【 对象】
2、单选题:
类的实例化是指( )
选项:
A: 定义类
B: 创建类的对象
C: 指明具体类
D: 调用类的成员
答案: 【 创建类的对象】
3、单选题:
以下有关构造函数的叙述不正确的是( )
选项:
A: 构造函数名必须和类名一致
B: 构造函数在定义对象是自动执行
C: 构造函数无任何函数类型
D: 在一个类中构造函数有且仅有一个(默认的只有一个)
答案: 【 在一个类中构造函数有且仅有一个(默认的只有一个)】
4、单选题:
以下叙述中正确的是( )
选项:
A: 在类中(class),不作特别说明的数据成员均为私有类型
B: 在类中,不作特别说明的数据成员均为公有类型
C: 类成员的定义必须是成员变量在前、成员函数在后
D: 类成员的定义必须放在类定义体内部(也可以在内体外)
答案: 【 在类中(class),不作特别说明的数据成员均为私有类型】
5、单选题:
有以下类的定义,其中出错的位置是( )
选项:
A: class Csample{ public:Csample(); // A int a=10; // B Csample(int a0); // C ~Csample(); // D};
B: class Csample{ public:Csample(); // A int a=10; // B Csample(int a0); // C ~Csample(); // D};
C: class Csample{ public:Csample(); // A int a=10; // B Csample(int a0); // C &nbs