奥鹏作业答案 发表于 2017-5-12 15:58:59

《C++程序设计》第二套作业答案

《C++程序设计》第二套作业

说明:本套作业涵盖第4章——第6章所学的内容。本套作业共有33道单选题,33个答案,满分为100分,错一道题扣除3分。

1、在类的定义形式中,数据成员、成员函数和(   )组成了类定义体。
(A)成员的访问控制属性                (B)公有类型
(C)私有类型                                (D)保护类型

2、在下列关键字中,用以说明类中公有成员的是(   )。
(A)public                                (B)private
(C)protected                        (D)friend

3、(   )不是构造函数的特征。
(A)构造函数的函数名与类名相同
(B)构造函数可以重载
        (C)构造函数可以设置默认参数
(D)构造函数必须指定类型说明

4、(   )是析构函数的特征。
(A)一个类中只能定义一个析构函数
(B)析构函数名与类名不同
(C)析构函数的定义只能在类体内
(D)析构函数可以有一个或多个参数

5、关于成员函数特征的下述描述中,(   )是错误的。
(A)成员函数一定是内联函数
(B)成员函数可以重载
(C)成员函数可以设置参数的默认值
(D)成员函数可以是静态的

6、下列存储类标识符中,(   )的可见性与存在性不一致。
(A)外部类                (B)自动类                (C)内部静态类                (D)寄存器类

7、要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用(   )。
(A)内联函数        (B)重载函数        (C)递归调用        (D)嵌套调用

8、以下程序的输出结果是(   )。
#include<iostream>
using namespace std;

int func(int a, int b);

int main() {
        int k = 4, m = 1, p;
        p = func(k, m);
        cout << p << ",";
        p = func(k, m);
        cout << p << endl;
        return 0;
}

int func(int a, int b) {
        static int m, i = 2;
        i += m + 1;
        m = i + a + b;
        return m;
}
(A)8,17        (B)8,16        (C)8,20        (D)8,8

9、下面选项中,不是类的成员函数为(   )。
(A)构造函数        (B)析构函数        (C)友元函数        (D)拷贝构造函数

10、下面关于友元的描述中,错误的是(   )。
(A)友元函数可以访问该类的私有数据成员
        (B)一个类的友元类中的成员函数都是这个类的友元函数
        (C)友元可以提高程序的运行效率
        (D)类与类之间的友元关系可以继承

11、局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用(   )提供对全局变量的访问。
(A)作用域运算符        (B)extern关键字        (C)重载        (D)引用

12、对于常成员函数,在下列描述中,正确的是(   )。
(A)常成员函数只能修改常数据成员                (B)常成员函数只能修改一般数据成员
(C)常成员函数不能修改任何数据成员                (D)常成员函数只能通过常对象调用

13、下面对静态数据成员的描述中,正确的是(   )。
(A)静态数据成员是类的所有对象共享的数据
        (B)类的每个对象都有自己的静态数据成员
        (C)类的不同对象有不同的静态数据成员值
        (D)静态数据成员不能通过类的对象调用

14、友元访问类的对象的成员时使用(   )。
(A)类的成员名                                                (B)this指针指向成员名
(C)“类名::成员名” 的形式                        (D)“对象名.成员名”的形式

15、下列程序输出的结果是(   )。
        #include <iostream>
using namespace std;

void fun();
int main()
{
        for(int i=1; i<3; i++)
                fun();

        return 0;
}
void fun()
{
        static int n = 10;
        n++;
        cout << "n=" << n << endl;
}
(A)n=11                (B)n=11                (C)n=10                (D)n=10
               n=11                       n=12                       n=11                       n=10

16、以下对一维数组a的正确定义是(   )。
(A)int n = 5, a;                                (B)int a(5);
(C)const int n = 5; int a;                (D)int n; cout << n << endl;

17、下列数组定义语句中,不合法的是(   )。
(A)int a = {0, 1, 2, 3};                (B)int a[] = {0, 1, 2};
(C)int a = {0, 1, 2};                        (D)int a = {0};

18、已知int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p = a;,则不能表示数组a中元素的式子是(   )。
(A)*a                (B)*p                (C)a                (D)a

19、已知int a[] = {0, 2, 4, 6, 8, 10}, *p = a;,值不等于0的表达式是(   )。
(A)*(p++)                (B)*a                (C)*(p--)                (D)*(++p)

20、以下不能对二维数组a进行正确初始化的语句是(   )。
(A)        int a = {0};
(B)        int a[] = {{0,1},{0}};
(C)        int a = {{0,1}, {2,3}, {4,5}};
(D)        int a[] = {0, 1, 2, 3, 4, 5};

21、已知int a[] = {{0,1}, {2,3,4}, {5,6}, {7}},则a的值是(   )。
(A)0                (B)2                (C)6                (D)7

22、已知int a = 3, *p = &a; 则 *p的值是(   )。
(A)变量a的地址值                (B)无意义                (C)变量p的地址值                (D)3

23、对于int *pa; 的描述,(   )是正确的。
(A)        pa是一个指向数组的指针,所指向的数组是5个int型元素
(B)        pa是一个指向某数组中第5个元素的指针,该元素是int型变量
(C)        pa表示某个数组的 第5个元素的值
(D)        pa是一个具有5个元素的指针数组,每个元素是一个int型指针

24、指针可以用来表示数组元素,下列表达式中(   )是错误的。
已知:int a;
(A)*(a+1)        (B)*(*a+3)        (C)*(*(a+1))        (D)*(&a+2)

25、已知int a = {1, 2, 3, 4, 5, 6, 7, 8, 9},则不能表示数组元素a的地址是(   )。
(A)&a        (B)*(a+1)                (C)a+1                (D)*(a+2)+1

26、已知f1(int)是类A的公有成员函数,p是指向成员函数f1()的指针,采用(   )是正确的。
(A)p = f1                (B)p = A::f1                (C)p = A::f1()                (D)p = f1()

27、已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,(   )是正确的。
(A)A1.p = 5                (B)A1->p = 5                (C)A1.*p = 5                (D)*A1.p = 5

28、已知:类A中一个成员函数说明如下:
void Set(A&a);
其中,A&a的含义是(   )。
(A)指向类A的指针为a
(B)将a的地址值赋给变量Set
(C)a是类A的对象引用,用来作函数Set()的形参
(D)变量A与a按位相与作为函数Set()的参数

29、下列关于对象数组的描述中,(   )是错误的。
(A)对象数组的下标是从0开始的
(B)对象数组的数组名是一个常量指针
(C)对象数组的每个元素是同一类的对象
(D)对象数组只能赋初值,而不能在定义后赋值

30、下列定义中,(   )是定义指向数组的指针p。
(A)int *p                (B)int (*p)        (C)(int *)p        (D)int *p[]

31、已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,(   )是正确的。
(A)void print() const                        (B)const void print()               
(C)void const print()                        (D)void print(const)

32、关于new运算符的下列描述,(   )是错误的。
(A)它可以用来动态创建对象和对象数组
(B)使用它创建的对象或对象数组,可以使用运算符delete删除
(C)使用它创建对象时要调用构造函数
(D)使用它创建对象数组时必须指定初始值

33、关于delete运算符的下列描述中,(   )是错误的。
(A)它必须用于new返回的指针
(B)它也适用于空指针
(C)对一个指针可以使用多次该运算符
(D)指针名前只用一对方括号符,不管所删除数组的维数


(完)


langdeyan1 发表于 2017-5-20 19:55:22

在做作业,求解题参考资料。
页: [1]
查看完整版本: 《C++程序设计》第二套作业答案