第二部分 过程化编程技术-函数应用

函数单元测试

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

剩余75%内容付费后可查看

发表评论

电子邮件地址不会被公开。 必填项已用*标注