ImageVerifierCode 换一换
格式:DOC , 页数:14 ,大小:68.50KB ,
资源ID:4043062      下载积分:5 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-4043062.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C试题附答案.doc)为本站会员(坚持)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

C试题附答案.doc

1、C+ 试题一、 选择题:1. 关于类和对象不正确的说法是( C )A) 类是一种类型,它封装了数据和操作B) 对象是类的实例C) 一个类的对象只有一个D) 一个对象必属于某个类2. 在类定义的外部,可以被访问的成员有( C )A) 所有类成员 B) private 或 protected 的类成员C) public 的类成员 D) public 或 private 的类成员3. 关于 this 指针的说法错误的是( A )A) this 指针必须显示说明 B) 当创建一个对象后,this 指针就指向该对象C) 成员函数拥有 this 指针 D) 静态成员函数不拥有 this 指针4. 声明一个

2、类的对象时,系统自动调用( B )函数,撤消对象时,系统自动调用( C )函数A) 成员函数 B) 构造函数 C) 析构函数 D) 普通函数5. 下面对构造函数的不正确描述是( B )A) 系统可以提供默认的构造函数 B) 构造函数可以有参数,所以可以有返回值C) 构造函数可以重载 D) 构造函数可以设置默认参数6. 下面对析构函数的正确描述是( C )A) 系统不能提供默认的析构函数 B) 析构函数必须由用户定义C) 析构函数没有参数 D) 析构函数可以设置默认参数7. 对静态成员的不正确描述是( C )A) 静态成员不属于对象,是类的共享成员 B) 静态数据成员要在类外定义和初始化C) 调

3、用静态成员函数时要通过类或对象激活,所以静态成员函数拥有 this 指针D) 非静态成员函数也可以操作静态数据成员8. 下面选项中,不是类的成员函数为( C )A) 构造函数 B) 析构函数 C)友元函数 D) 缺省参数的构造函数方言9. 下面对友元的错误描述是( D )A) 关键字 friend 用于声明友元 B) 一个类的成员函数可以是另一个类的友元C) 友元函数访问对象的成员不受访问特性影响 D) 友元函数通过 this 指针访问对象成员10. 在 C+中,类与类之间的继承关系具有( C )A) 自反性 B) 对称性 C) 传递性 D) 反对称性11. 下列关于类的继承描述中,( A )

4、是错误的A) 派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数B) 派生类也是基类,但基类不一定具有派生类的全部属性和方法C) 继承描述类的层次关系,派生类可以具有与基类相同的属性和方法D) 一个基类可以有多个派生类,一个派生类可以有多个基类12. 当一个派生类仅有继承一个基类时,基类中的所有公有成员成为派生类的( A )A) public 成员 B) private 成员 C) protected 成员 D) 友元13. 当一个派生类私有继承一个基类时,基类中的所有仅有成员和保护成员成为派生类的( B )A) public 成员 B) private 成员 C) protecte

5、d 成员 D) 友元14. 不论派生类以何种方法继承基类,都不能使用基类的( B )A) public 成员 B) private 成员 C) protected 成员 D) public 成员和 protected 成员15. 下面描述中,错误的是( BC )(两个答案)A) 在基类定义的 public 成员在公有继承的派生类中可见,也能在类外被访问B) 在基类定义的 public 和 protected 成员在私有继承的派生类中可见,在类外可以被访问C) 在基类定义的 public 和 protected 成员在保护继承的派生类中不可见D) 在派生类中不可见的成员要变成可访问的,需要进行访

6、问声明16. 在 C+中,不能被派生类继承的函数是( BC )(两个答案)A) 成员函数 B) 构造函数 C) 析构函数 D) 静态成员函数17. 在创建派生类对象时,构造函数的执行顺序是( D )A) 对象成员构造函数、基类构造函数、派生类本身的构造函数B) 派生类本身的构造函数、基类构造函数、对象成员构造函数C) 基类构造函数、派生类本身的构造函数、对象成员构造函数D) 基类构造函数、对象成员构造函数、派生类本身的构造函数18. 当不同的类具有相同的间接基类时,有特点( AD )(两个答案)A) 各派生类对象将按继承路线产生自己的基类版本B) 派生类对象无法产生自己的基类版本C) 为了建立

7、惟一的间接基类版本,在基类定义前加 virtual 即可D) 为了建立惟一的间接基类版本,应该声明虚继承19. 在 C+中,要实现动态联编,必须使用( D )调用虚函数A) 类名 B) 派生类指针 C) 对象名 D) 基类指针20. 下列函数中,可以作为虚函数的是( CD )(两个答案)A) 普通函数 B) 构造函数 C)成员函数 D) 析构函数 21. 在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( B )A) 不同 B) 相同 C) 相容 D) 部分相同22. 下面函数原型声明中,( B )声明了 fun 为虚函数A) void fun()=0

8、; B) virtual void fun()=0; C) virtual void fun(); D) virtual void fun();23. 若一个类中含有纯虚函数,则该类称为( D )A) 基类 B) 纯基类 C) 派生类 D) 抽象类24. 假设 A 为抽象类,下列声明( B )是正确的A) A fun(int); B) A *p; C) int fun(A); D) A Obj;25. 下面描述中,正确的是( BD )(两个答案)A) 虚函数是没有实现的函数 B) 纯虚函数的实现在派生类中C) 抽象类是没有纯虚函数的类 D) 抽象类指针可以指向不同的派生类26. 关于函数模板,

9、描述错误的是( A )A) 函数模板必须由程序员实例化为可执行的函数模板B) 函数模板的实例化由编译器实现C) 一个类定义中,只要有一个函数模板,则这个类是类模板D) 类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化27. 下列的模板说明中,正确提( AD )(两个答案)A) template B) template C) template D) template 28. 假设有函数模板定义如下:Template Max(T a, T b, T 下列选项正确的是( AD )(两个答案)A) float x,y; float z; Max(x,y,z);B) int x,y,z

10、; Max(x,y,z);C) int x,y; float z; Max(x,y,z);D) float x; int y, z; Max(x,y,z);29. 关于类模板,描述错误的是( D )A) 一个普通基类不能派生类模板B) 类模板从普通类派生,也可以从类模板派生C) 根据建立对象时的实际数据类型,编译器把类模板实例化为模板类D) 函数的类模板参数须通过构造函数实例化30. 建立类模板对象的实例化过程为( C )A) 基类 派生类 B) 构造函数 对象C) 模板类 对象 D) 模板类 模板函数31. 在 C+中,容器是一种( D )A) 标准类 B) 标准对象 C) 标准函数 D)

11、标准类模板32. 下列类中( BD )(两个答案)不是输入/输出流类 iostream 的派生类A) fstream B) ofstream C) strstream D)ostrstream33. 在下列选项中( BCD )(三个答案)是 ostream 类的对象A) cin B) cerr C) clog D) cout34. read 函数的功能是从输入流中读取( D )A) 一个字符 B) 当前字符 C) 一行字符 D) 指定若干个字符35. 下列选项中,用于清除基数格式位置以十六制输出的语句是( B )A) coutsetf(ios:hex, ios:basefield);36. 下

12、列格式控制符,在 iostream.h 中定义的是( AD )(两个答案),在iomanip.h 中定义的是( BC )(两个答案)A) endl B) setfill C) setw D) oct37. 下列串流类,在 strstream.h 中定义的是( BD )(两个答案),在 sstream.h中定义的是( AC )A) istringstream B) istrstream C) ostringstream D) ostrstream38. 包含类 fstream 定义的头文件是( A )A) fstream.h B) ofstream.h C) ifstream.h D) iost

13、ream.h39. 要求打开文件 d:file.dat,可写入数据,正确的语句是( D )A) ifstream infile(“d:file.dat”, ios:in);B) ifstream infile(“d:file.dat”, ios:in);C) ofstream infile(“d:file.dat”, ios:out);D) fstream infile(“d:file.dat”, ios:in| ios:out);40. 假定已定义浮点型变量 data,以二进制方式把 data 的值写入输出文件流对象outfile 中去,正确的语句是( C )A) outfile.write

14、(float *) B) outfile.write(float *) C) outfile.write(char *) D) outfile.write(char *) 二、 简答题:1. 什么是预编译,何时需要预编译:回答:总是使用不经常改动的大型代码体。 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。2. C 和 C+有什么不同?从机制上:c 是面向过程的(但 c 也可以编写面向对象的程序);C+是面向对象的,提供了类。但是,C+编写面向对象的程序比 C 容易从适用的方向:C 适合要求代码体积小的,效率高的场合

15、,如嵌入式;C+适合更上层的,复杂的; llinux 核心大部分是 c 写的,因为它是系统软件,效率要求极高。从名称上也可以看出,C+比 C 多了+,说明 C+是 C 的超集;那为什么不叫 C+而叫 C+呢,是因为 C+比C 来说扩充的东西太多了,所以就在 C 后面放上两个+;于是就成了 C+C 语言是结构化编程语言,C+是面向对象编程语言。C+侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。3. C 和 C+中的 struct 有什么不同?回答:C 和 C+中 struct 的主要区别是 C 中的 struct 不可以含有成员函数,而 C+中的 struct可以。C+中 struct

16、和 class 的主要区别在于默认的存取权限不同,struct 默认为public,而 class 默认为 private4. 多态的实现机制。 回答:虚函数表和动态联编。 5. 纯虚函数的概念,有什么作用。 回答:基类中要派生类必须只继承其接口且必须由派生类自己提供相应的实现的函数。其作用就是建立一个公共的接口。 6. 简述使用友元函数的优点和缺点。回答:友元函数的优点:不需要修改类的成员函数而可以访问类的私有成员,并且提高了执行效率。 缺点:破坏了类的封装性及信息的隐蔽性。8. 多态。overload 和 override 的区别。回答:重载在相同范围(同一个类中),函数名字相同,参数不同

17、,virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,不同的范围,函数名字相同,参数相同,基类函数必须有 virtual 关键字。9. 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?答:一些变量整个程序中都是可见的,它们称为全局变量,一些变量在函数内部定义且只在函数中可知,则称为局部变量。全局变量由编译器建立且存放在内存的全局数据区,局部变量存放在栈区三、有关内存的思考题1. void GetMemory(char *p)p = (char *)malloc(100);void Test(void) char *str = NULL;GetMemory(str);strcpy(str, “hello world“);printf(str);请问运行 Test 函数会有什么样的结果?回答:程序崩溃。因为 GetMemory 并不能传递动态内存,Test 函数中的 str 一直都是 NULL。strcpy(str, “hello world“);将使程序崩溃。2. char *GetMemory(void)char p = “hello world“;return p;void Test(void)char *str = NULL;str = GetMemory();

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。