C++程序设计试题(上)试卷(卷面60分)
(考试用时90分钟)
一、选择题(每题1分,共5分)
1.对于面向对象的程序设计(OOP)和过程性(SP)的程序设计,那些说法是正确的 。
A.面向对象的程序设计和过程性程序设计是两个独立的程序设计范型。
B.面向对象的程序设计和过程性程序设计不是两个独立的程序设计范型,前者包含后者。将两者分开并列是不妥的。
C.面向对象是编程的总体框架,而过程性是编写解决具体问题的程序段的工具。
D.面向对象只是一种语法现象,而过程性程序设计才是编程的工具。
2.下面有关函数调用的说法哪一个是错误的 。
A.实参与形参的数目要求必须是相同的。
析构函数的定义B.实参与形参的对应关系取决于位置而不是名字。
C.实参与对应的形参应类型匹配,即实参的类型可以转化为形参类型。
D.C++有两种调用方式:传值与引用。
3.C++中表示字符A的正确方法是 。
A.’\65’ B.”A” C.65 D.’A’
4.有关函数重载的要求哪一个是正确的 。
A.必须保证参数类型和返回值类型均不同。
B.必须保证返回值类型不同。
C.必须保证参数的数量不同。
D.必须保证参数类型或数量不同。
5.下列有关枚举类型的说明哪些是错误的?
A.枚举常量(或称枚举成员)是以标识符形式表示的整型量。
B.默认状态下,这个整数就是所列举元素的序号,序号从0开始。
C.类型定义时可以为部分或全部枚举常量指定整数值,其余的枚举常量仍按默认方式取值。
D.各枚举常量的值可以重复,但各枚举常量标识符必须不同。
C++程序设计试题(上)参考答案:
一、选择题(每题1分,共5分):
1.B.C. 2.A. 3.D. 4.D. 5.C.
C++程序设计试题(下)试卷(卷面60分)
(考试用时100分钟)
一、选择题(每题1分,共5分)
1.设计一个自定义类时,需要在屏幕上显示或向文件写入类对象的数据,最佳选择方法是 。
A.为屏幕显示和文件写入各自设计一个成员函数。
B.为屏幕显示和文件写入统一设计一个成员函数。
C.重载插入运算符(<<)。
D.重载提取运算符(>>)。
2.关于异常处理,那些说法是错误的 。
A.在C++程序中,由throw表达式抛出异常,而该表达式应直接或间接地被包含在try块中。
B.当抛出异常后,寻匹配的catch子句有固定的过程:逆着程序函数的调用链返回,称为栈展开(Stack Unwinding)。
C.当某条语句抛出异常时,跟在其后的语句将被跳过,但析构函数仍然执行,所以应该在析构函数中释放资源。
D.catch子句实际是一个特殊的函数。
3.下列关于动态资源分配的说法中错误的是 。
A.动态分配的资源不仅包括内存,还包括文件。
B.动态内存分配的优点在于可以随时给数组分配所需的内存而不会失败。
C.动态分配的资源通常要求在析构函数中释放。
D.对含有动态分配的数据成员的类对象应该采用深复制。
4.下列有关模板的描述那些是错误的 。
A.模板把数据类型作为一个设计参数,称为参数化程序设计。
B.模板参数除模板类型参数外,还有非类型参数。
C.类模板与模板类是同一概念。
D.使用时,模板参数与函数参数相同,是按位置而不是名称对应的。
5.关于多态,下面那些说法是正确的 。
A.多态分静态的(编译时)和动态的(运行时)。
B.运行时的多态与类的层次结构有关。
C.在基类定义了虚函数后,在派生类中重新定义时可以不加关键字virtual。
D.仅使用虚函数并不能实现运行时的多态性,还必须采用指针或引用来调用才能真正实现运行时的多态性。
二、填空题(每空0.5分,共5分)
1.运算符重载时,其函数名由 (1) 构成。成员函数重载双目运算符时,左操作数是 (2) ,右操作数是 (3) 。
2.C/C++中的多维数组用的是一个 (4) 的定义,即多维数组的基本定义是 (5) 构成的数组,三维数组的元素是 (6) 。
3.单链表的结点包含两个域: (7) 和 (8) 。使用链表的最大的优点是 (9) ,即使是动态数组也做不到这一点。
4.纯虚函数定义时在函数参数表后加=0,它表明程序员对函数体不定义,其本质是将指向函数体的指针定为 (10) 。
C++程序设计试题(下)参考答案:
一、选择题(每题1分,共5分):
1.C. 2.D. 3.B. 4.C. 5.全部
二、填空题(每空0.5分,共5分):
(1)关键字operator和重载的运算符 (2)对象
(3)该函数的参数 (4)递归
(5)数组 (6)二维数组
(7)数据域 (8)指针域
(9)用多少就开多少空间 (10)空指针
一、选择题(每小题1.5分,共30分)
1、下列特性中不是面向对象程序设计语言所特有的是( )。
(A)数据封装 (B)继承(C)多态性 (D)模板
2、( )是给变量取一个别名,它引入了变量的同意词。
(A)指针 (B)引用 (C)枚举 (D)结构
3、类成员的访问权限中,( )只能被本类的成员函数和其友元函数访问。
(A)share (B)public (C)private (D)protected
4、关于构造函数,下列说法不正确的是( )。
(A)构造函数名字和类名相同
(B)构造函数在创建对象时自动执行
(C)构造函数无任何函数返回类型
(D)构造函数有且只有一个
5、派生类可以访问其基类的( )。
(A)公有成员 | (B)保护成员 |
(C)私有派生 | (D)公有和保护成员 |
6、下列关于运算符重载的描述中,错误的是( )。
(A)运算符重载不可以改变操作数的个数 |
(B)运算符重载不可以改变运算符的功能 |
(C)运算符重载不可以改变结合方向 |
(D)运算符重载不可以改变运算优先级 |
7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是( )
(A)面向过程 (B)面向对象 (C)安全性 (D)复用性
8、对于类中定义的成员,其隐含访问权限为( )。
A.public B.protected
C.private D.static
9、下面有关重载函数的说法中正确的是( )
(A)重载函数必须具有不同的返回值类型; (B)重载函数形参个数必须不同;
(C)重载函数必须有不同的形参列表 (D)重载函数名可以不同;
10、有如下的对类“CSample”的说明,其中( )是错误的。
class CSample {
A.int a=23;
B.CSample();
public:
C.CSample(int val);
D.~ CSample();
11、在int a=3,int *p=&a;中,*p的值是( )
A.变量a的地址值 B.无意义
C.变量p的地址值 D.3
12、每个类( )构造函数。
(A)只能有一个 (B)只可有公有的
(C)可以有多个 (D)只可有缺省的
13、在一个类中可以对一个操作符进行( )重载。
(A)1 种 (B)2 种以下 (C)3 种以下 (D)多种
14、在公有继承的情况下,基类非私有成员在派生类中的访问权限( )
(A) 受限制 (B)保持不变 (C)受保护 (D)不受保护
15、应在下列程序划线处填入的正确语句是( )
#include <iostream.h>
class Base
{public:
void fun(){cout<<"Base::fun"<<ENDL;}
};
class Derived:public Base
{ void fun()
{_____________//显示调用基类的函数fun()
cout<<"Derived::fun"<<ENDL;
}
};
(A)fun(); (B)Base.fun(); (C)Base::fun(); (D)Base->fun();
16、执行下面的程序将输出( )
#include <iostream.h>
class BASE{
char c;
public:
BASE(char n):c(n){}
virtual ~BASE(){cout<<c;}
};
class DERIVED:public BASE{
char c;
public:
DERIVED(char n):BASE(n+1),c(n){}
~DERIVED(){cout<<c;}
};
int main()
{DERIVED a('X');
return 0;
}
(A)XY (B)YX (C)X (D)Y
17、下面描述中,表达错误的是( )
(A)公有继承时基类中的public成员在派生类中仍是public的
(B)公有继承是基类中的private成员在派生类中仍是private的
(C)公有继承时基类中的protected成员在派生类中仍是protected的
(D)私有继承时基类中的public成员在派生类中是private的
18、定义析构函数时,应该注意( )
(A)其名与类名完全相同 (B)返回类型是 void 类型
(C)无形参,也不可重载 (D)函数体中必须有 delete 语句
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论