没有合适的资源?快使用搜索试试~ 我知道了~
C++程序练习题有答案.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 200 浏览量
2023-02-27
20:06:27
上传
评论
收藏 1.1MB PDF 举报
温馨提示
试读
27页
.
资源推荐
资源详情
资源评论
选择题部分
1. 编写 C++程序一般需经过的几个步骤依次是(B)
A. 编辑、调试、编译、链接
B. 编辑、编译、链接、运行
C. 编译、调试、编辑、链接
D. 编译、编辑、链接、运行
2. 下列关于 C++函数的叙述中,正确的是(D)
A. 每个函数都必须有参数
B. 每个函数都必须返回一个值
C. 函数在被调用之前可以不先声明
D. 函数可以自己调用自己
3. 在什么阶段可能会遇到一个关于找不到某个函数或符号未定义的错误?(B)
A. 在编译的过程中
B. 在链接的过程中
C. 在程序启动时
D. 在你调用方法的时候
4. 编译和链接分开的好处?(D)
A. 没有好处
B. 更容易分析错误因为你可以知道问题出自链接阶段还是编译阶段
C. 这样做只让有改动的文件重新编译,节省了编译和链接时间
D. 这样做只让有改动的文件重新编译,节省了编译时间
5. C++中声明常量的关键字是(A)
A. const B. extern C. public D. enum
6. 对于如 f(int &i)声明的函数以及变量 int a = 10,则下面调用正确的是(C)。
A. f(10); B. f(10,a); C. f(a); D. f(&a)
7. 对于如下定义的变量
const char* p = “test”;
下列语句哪个是错误的(D)。
A. printf(“%s\n,” p);
B. printf(“%c\n”, p[0]);
C. p = “TEST”;
D. *(p + 0) = ‘T’;
8. 下列表示引用的方法中,(A)是正确的。已知:int i = 50;
A. int & a = i;
B. char &a;
C. int &a = 50;
D. float &a = &i;
9. 下列哪一项不适合使用引用?(A)
A. 返回一个某函数的临时变量的引用
B. 为了避免一个较大的值传递给函数时的复制操作
C. 为了强制函数的一个参数,其值永远不能为 NULL
D. 为了让一个函数能够访问传递给它的原始变量,而无需使用指针
10. 不能作为函数重载判断依据的是(C)
A . 参数顺序 B. 参数类型 C. 返回类型 D. 参数个数
11. 对于语句 cout << a << endl;错误的是描述是(A)
A.“cout”是一个输入流对象
B.“endl”的作用
是换行并刷新与设备相关联的缓冲区
C.“cout”是一个输出流对象
D.“cout”的类型是 ostream
12. 下面叙述不正确的是(D)
A. 派生类一般都用公有派生
B. 对基类成员的访问必须是无二义性的
C. 赋值兼容规则也适用于多重继承的组合
D. 基类的公有成员在派生类中仍然是公有的
13. 对基类和派生类的关系描述中,错误的是(A)
A. 基类继承了派生类的属性
B. 派生类是基类的具体化
C. 派生类是基类定义的延续
D. 派生类是基类的特殊化
14. 关于 this 指针使用说法正确的是(C)
A. 保证基类私有成员在子类中可以被访问
B. 保证每个对象拥有自己的数据成员以及各自独立的一份成员函数代码
C. 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码
D. 保证基类公有成员在子类中可以被访问
15. 下列不是类的成员函数的是(C)
A. 类的构造函数 B. 类的析构函数 C. 类的友元函数
16. 定义类的析构函数时,应该注意(C)
A. 其名与类名完全相同
B. 返回类型是 void 类型
C. 无形参,也不可重载
D. 函数体中必须有 delete 语句
17. 对类的构造函数和析构函数描述正确的是(B)。
A. 构造函数不能重载,析构函数可以重载
B. 构造函数可以重载,析构函数不能重载
C. 构造函数可以重载,析构函数也可以重载
D. 构造函数不能重载,析构函数也不能重载
18. 关于在构造函数中使用初始化列表,以下表述正确的是(D)
D. 类的=操作符重载函数
A.
B.
C.
D.
在你想要让构造函数尽可能地高效以及想要避免构造空的对象时
在你初始化一个常量的时候
在你想要运行类的某个非默认构造函数的时候
以上都正确
19. 假定 AB 为一个类,则执行 AB x; 语句时将自动调用该类的(B)。
A.有参构造函数 B.无参构造函数 C.拷贝构造函数 D.赋值构造函数
20. 关于 new 运算符的下列描述中,错误的是(D)
A. 它可以用来动态创建对象和对象数组
B. 使用它创建的对象或对象数组可以使用运算符 delete 删除
C. 使用它创建对象时要调用构造函数
D. 使用它创建数组时必须指定初始值。
21. 对于动态分配内存空间描述正确的是(D)
A.使用 new 运算符分配的内存空间的长度必需是常量
B.delete 运算符可以释放动态的存储空间和静态的存储空间
C.用 malloc 分配空间,将触发构造函数的调用
D.delete 运算符只能释放由 new 分配的动态存储空间
22. 面向对象程序设计数据与(A)放在一起,作为一个相互依存、不可分割的整体来处理。
A.对数据的操作 B.信息 C.数据隐藏 D.数据抽象
23. 下面说法中,正确的是(D)
A. 一个类只能定义一个构造函数,但可以定义多个析构函数
B. 一个类只能定义一个析构函数,析构函数能够带参数
C. 构造函数与析构函数同名,其中构造函数名字前加了一个求反符号(~)
D. 构造函数和析构函数不可以指定返回类型
24. 下面对友元函数的描述中正确的是(C)。
A.友元函数的实现必须在类的内部定义
B.友元函数是类的成员函数
C.在类中必须用 friend 声明友元函数
D.友元函数不能访问类的私有成员
25. 如果类 A 被声明为类 B 的友元,则以下哪个说法是正确的(D)。
A. 类 B 也一定是类 A 的友元
B. 类 B 的成员即类 A 的成员
C. 类 A 的成员即类 B 的成员
D. 类 A 的成员函数可以访问类 B 的成员
26. 下面哪个选项定义了结构体
struct MyStruct {
int func();
};
中声明的 func 方法?(C)
A. int func() { return 1;}
B. MyStruct::int func() { return 1;}
C. int MyStruct::func() { return 1;}
D. int MyStruct func() { return 1;}
27. 下列哪个成员函数表示纯虚函数(C)
A. virtual int vf(int);
B. void vf(int) = 0;
C. virtual void vf () = 0;
D. virtual void vf (int) { }
28. 下面关于抽象类的说法,哪一项是错误的?(D)
A. 一个纯虚函数代表一个抽象方法
B. 一个类只要有一个纯虚函数,就是抽象类
C. 抽象类不能创建对象,创建对象的工作由抽象类的具体子类来实现;
D. 对于抽象类中的纯虚函数来说,在抽象类中既要指定方法名和参数,又要指定实现代码
29. 下列不能作为类的成员的是(B)
A. 自身类对象的指针
B. 自身类对象
C. 自身类对象的引用
D. 另一个类的对象
30. 下列关于抽象类描述不正确的是(D)。
A. 抽象类不可实例化。
B. 其派生类没有定义纯虚函数,则仍是抽象类。
C. 其派生类定义所有纯虚函数,则派生类可以被实例化。
D. 不能定义指向抽象类的指针变量。
31. 能够被自动执行来释放对象所占资源的是(B)
A. 友元函数 B. 析构函数 C.构造函数 D.静态成员函数
32. 任意一个类,析构函数的个数最多是(B)
A. 不限个数 B. 1 C. 2 D. 3
33. 对于 struct 中定义的成员,其默认的访问权限是(A)
A. public B.protected C.private D.static
34. 对于 class 中定义的成员,其默认的访问权限是(C)
A. public B.protected C.private D.static
35. 声明类 A 的拷贝构造函数的正确形式是(D)
A. int A; B. void A(); C.A(void); D. A(const A&);
36. 在 32 位机下,对于如下的类定义
class A {
int a;
virtual void foo() { }
void foo1(int a) { }
};
sizeof(A)的值(B)
A. 4 B. 8 C. 12. D. 1
37. 下面描述中,正确的是(A)
A. virtual 可以用来声明虚函数
B. 含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类
C. 即使基类的构造函数没有参数,派生类也必须建立构造函数
D. 静态数据成员可以通过成员初始化列表来初始化
38. 关于虚函数的描述中,(D)是正确的。
A. 虚函数是一个 static 类型的成员函数
B. 虚函数是一个友元函数
C. 基类中说明了虚函数后,派生类中与其对应的函数必须再次说明为虚函数
D. 派生类的虚函数与基类的虚函数具有相同的参数个数和类型
39. 下列运算符中,在 C++语言中不能重载的是(C)
A. + B. >= C. :: D. /
40. 在运算符重载函数中若双目运算符“-”是作为成员函数重载的运算符,则 operator-有__个显式参数,若“-”
是作为友元函数重载的运算符,则 operator-有__个显式参数。(C)
A. 2、2 B. 2、1 C. 1、2 D. 1、1
41. 有如下定义的类:
class A{ };
声明变量 A* list[3];时,编译器会自动调用(A)次 A 类的构造函数。
A. 0 B. 1 C. 2 D. 3
42. 假定 A 为一个类,f()为该类公有的成员函数,a1 为该类的一个对象,则
下列哪个语句完成对于 a1 对象中成员函数 f()的访问。(B)
A. a1.f; B. a1.f(); C. a1->f(); D.(*a1).f ();
43. 类模板的使用实际上是将类模板实例化成一个具体的(C)。
A. 函数 B.对象 C. 类 D.模板类
44. 在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的(A)。
A. 私有成员 B. 公有成员 C. 保护成员 D. 保护成员或私有成员
45. int a(0); 和 int a = 0; 之间有什么区别?(B)
A. int a(0); 在 C++中是错误代码,因为 int 不是类
B. 没有区别
C. int a(0) 调用 int 的构造函数,int a=0 调用 int 类的操作符=
D. int a(0) 在编译时初始化,而 int a=0 在运行时初始化
46. 要使用 cout,需要包含哪个头文件?(C)
A. #include<stdio.h>
B. #include<stream>
C. #include<iostream>
D. 不需要包含任何头文件
47. 下面哪个不是正确的函声明方式?(C)
A. int foo(char, int *);
剩余26页未读,继续阅读
资源评论
xxpr_ybgg
- 粉丝: 6513
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功