C++笔试模拟试题1

  • 格式:doc
  • 大小:53.00 KB
  • 文档页数:8

传智播客C++综合测试题 姓名________得分_________ 一、 选择题(每题2分,共40分) 1、面向对象程序设计将描述事物的数据与 封装在一起,作为一个相互依存、不可分割的整体来处理。 A) 信息 B) 数据隐藏 C) 对数据的操作 D) 数据抽象

2、下列语句中,错误的是 。 A) int *p=new int(5); B) int *p=new int[5]; C) int *p=new int [20][(0); D) int *p=new int;

3、下面有关类和对象的说法中,正确的是 。 A) 系统为类和对象分配内存空间 B) 类和对象没有区别 C) 系统为类分配存储空间,不为对象分配存储空间 D) 类与对象的关系和数据类型与变量的关系类似

4、下列有关类和对象的说法中,不正确的是 。 A) 任何一个对象只能属于一个类 B) 对象是类的一个实例 C) 类实质上是一种数据类型 D) 一个类只能有一个对象

5、下列说法中,不正确的是 。 A) 要在类的外部直接使用类的私有成员是错误的 B) 一个对象数组中的所有数组元素属于同一个类 C) 当在类外部定义成员函数时,必须在函数名前加上类名和作用域运算符 D) 同一个类的两个对象占用相同的内存空间

6、在声明类时,下面的说法正确的是 。 A) 数据成员的数据类型可以是register B) 可以在类的声明中给数据成员赋初值 C) 没有用private,public,protected定义的数据成员是公有成员 D) 定义时,private,public,protected可以按任意顺序出现

7、下列关于构造函数的描述中,正确的是 。 A) 构造函数必须带有参数 B) 构造函数可以带有返回值 C) 构造函数的名字与类名完全相同 D) 构造函数必须定义,不能默认

8、下列有关析构函数叙述中,不正确的是 。 A) 析构函数必须与类名相同,并在其前面加上符号~,以便和构造函数名区别 B) 析构函数不能带有任何参数,不能有返回值 C) 析构函数可以重载 D) 对于全局定义的对象,在程序开始时调用构造函数,到程序结束时调用析构函数 9、关于成员函数特征的下列叙述中, 是错误的。 A) 成员函数一定是内联函数 B) 成员函数可以重载 C) 成员函数可以设置参数的默认值 D) 成员函数可以是静态的

10、下列说法中,不正确的是 。 A) 利用常对象只能调用类中的常成员函数 B) 类的常数据成员和引用成员必须在构造函数的初始化表中进行初始化 C) 常成员函数可以对类中的任何数据成员进行更新 D) 在程序中既可以定义指针数据成员,也可以定义对象指针

11、友元函数的作用是 。 A) 提高程序的运行效率 B) 加强类的封装性 C) 实现数据的隐藏性 D) 增加成员函数的种类

12、在下列有关静态成员函数的描述中,正确的是 。 A) 静态成员函数只能在类外定义 B) 在静态成员函数中可以使用this指针 C) 在建立对象前,就可以为静态数据成员赋值 D) 静态成员函数在类外定义时,要用static前缀

13、使用派生类的主要原因是 。 A) 提高程序的运行效率 B) 加强类的封装性 C) 提高代码的可重用性 D) 实现数据的隐藏

14、下列说法,不正确的是 。 A) 函数在重载时其函数名应相同 B) 基类中定义了虚函数ab(int,int),若在派生类中重新定义ab(int),则在派生类中ab为重载函数

C) C++中所有运算符都可以重载 D) 对于基类中定义的运算符重载函数,派生类中不一定可以继承

15、下列叙述中,不正确的说法是 。 A) 不能直接由抽象类建立对象 B) 至少有一个纯虚函数的类称为抽象类 C) 抽象类中能包含构造函数 D) 抽象类中不能有数据成员

16、下列说法中,不正确的是 。 A) 在派生过程中构造函数不被继承 B) 在派生过程中析构函数不被继承 C) 声明为指向基类对象的指针可以指向其公有派生的对象 D) 声明为指向公有派生类对象的指针可以指向其基类的对象 17、关于虚函数的描述中,正确的是 。 A) 虚函数是一个static类的成员函数 B) 虚函数是一个非静态成员函数 C) 派生类的虚函数与基类的虚函数具有不同的参数个数和类型 D) 内联函数、构造函数、静态变量可以声明为虚函数

18、模板的使用是为了 。 A) 实现多态性 B) 提高代码的运行效率 C) 加强类的封装性 D) 提高代码的可重用性

19、下列说法中,不正确的是 。 A) 类模板代表一个具体的、实际的类 B) 函数模板经实例化生成的具体函数称为模板函数 C) 在template语句与函数模板定义语句间不允许有别的语句 D) 模板函数类似于重载函数,只是更严格一些

20、当包含头文件iostream.h后,一个C++源程序中的cin是 。 A) 一个标准语句。 B) 预定义的类。 C) 预定义的函数。 D) 预定义的对象。

二、判断题(每题1分,共10分) 1、面向对象方法中的抽象,是指对具体问题进行概括,抽出一类对象的公共性质并加以描述的过程。 2、多态性是指一段程序能够处理多种类型对象的能力。 3、保护类型成员的性质和私有成员的性质相似,差别在于继承过程中对产生的新类影响不同。 4、拷贝构造函数是使用一个已经存在的对象,去初始化同类的一个新对象。 5、UML中的图形的作用是描述软件中类和对象以及它们的静态关系。 6、静态数据成员具有静态生存期。 7、条件编译是指程序中的某些内容要在满足一定条件的情况下才参与编译。 8、默认的拷贝构造函数完成的是深拷贝。 9、当类的继承方式为私有继承时,基类中的公有成员和保护成员都以私有成员身份出现在派生类中,基类的私有成员在派生类中不能直接访问。 10、如果基类声明了带有形参表的构造函数时,派生类就应当声明构造函数。 三、程序填空题(每题5分,共10分) 1、按照程序执行结果,填入合适语句: #include using namespace std; class Test{ private: int n; static int m; public: int p; static int q; Test(int arg); static void disp1(); void disp2(); }; ___(1)_________ ___(2)_________ Test::Test(int arg) { n=arg; p=arg; } void Test::disp1() {cout<<”m=”

2、按照程序执行结果,填入合适语句: #include #include using namespace std; int count(char *str) { int i,num=0; for(i=0;str[i];i++) { ____(1)_____________ num++; } ____(2)_____________ } int main() { char text[100]; cout<<”输入一句英语:”

四、程序阅读题(共20分) 1、阅读下面的程序,写出程序运行结果:(5分) #include #include #include #include using namespace std ; int main() { vector A(4); vector::iterator pi; pi=A.begin(); *pi++=51; *pi++=61; *pi++=51; *pi++=81; cout<<*(A.begin()+1)< cout<<*find(A.begin(),A.end(),51)< cout< reverse(A.begin(),A.end()); for (pi=A.begin();pi!=A.end();pi++) cout<<*pi<<" "; cout< sort(A.begin(),A.end()); for (pi=A.begin();pi!=A.end();pi++) cout<<*pi<<" "; cout< return 0; } 2、阅读下面的程序,写出程序运行结果:(5分) #include using namespace std ;

class A{ public: virtual void func(int data){cout<<"class A:"

class B: public A{ public: void func(int data) { cout<<"class B:"

int main(int argc,char *argv[]){ A *pa; B b; pa=&b; pa->func(1); pa->A::func(1); pa->func("haha"); b.func("haha",2);