12级计科C++期末复习题.doc_第1页
12级计科C++期末复习题.doc_第2页
12级计科C++期末复习题.doc_第3页
12级计科C++期末复习题.doc_第4页
12级计科C++期末复习题.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

试题1 满分值:2.0分 状态:已答 实际得分:2.0分 试题: 设置虚基类的目的是().A简化程序 B消除二义性 C提高运行效率 D减少目标代码长度 参考答案 B消除二义性 我的答案 B消除二义性 试题2 满分值:2.0分 状态:已答 实际得分:2.0分 试题: 可以用pa的形式访问派生类对象p的基类成员a,则a是().A私有继承的公有成员 B公有继承的私有成员 C公有继承的保护成员 D公有继承的公有成员 参考答案 D公有继承的公有成员 我的答案 D公有继承的公有成员试题3 满分值:2.0分 状态:已答 实际得分:2.0分 试题: class XX int xdata;public:XX ( int n= 0 ) : xdata ( n ) ;class YY: public XX int ydata;public:YY ( int m= 0,int n= 0 ) : XX ( m ) ,ydata ( n ) ; ()A1 B2 C3 D4 参考答案 B2 我的答案 B2试题4 满分值:2.0分 状态:已答 实际得分:0.0分 试题: 下面对静态数据成员的叙述中,正确的是()A静态数据成员可以在类体内进行初始化 B静态数据成员不可以被类的对象调用 C静态数据成员不能受private控制符的作用 D静态数据成员可以直接用类名调用 参考答案 D静态数据成员可以直接用类名调用 我的答案 B静态数据成员不可以被类的对象调用试题5 满分值:2.0分 状态:已答 实际得分:0.0分 !试题: 下列有关类成员的叙述中,正确的是()A友元函数是类的成员函数 B类成员的默认访问权限是私有的 C类成员函数必须声明为公有的 D类的静态数据成员不能是常成员 参考答案 B类成员的默认访问权限是私有的 我的答案 A友元函数是类的成员函数试题6 满分值:2.0分 状态:已答 实际得分:2.0分 试题: 一个类的友元函数或友元类能够通过成员操作符访问该类的()。A私有成员 B受保护成员 C公有成员 D所有成员 参考答案 D所有成员 我的答案 D所有成员试题7 满分值:2.0分 状态:已答 实际得分:0.0分 试题: 函数模板的作用是_。A.可以取代重载函数 B.创建一个通用功能的函数 C.支持多种不同形参 D.简化重载函数的函数体设计 参考答案 B.创建一个通用功能的函数 我的答案 D.简化重载函数的函数体设计试题8 满分值:2.0分 状态:已答 实际得分:2.0分 试题: 通常复制构造函数(拷贝构造函数Copy Constructor)的参数是:A.某个对象名 B.某个对象的成员名 C.某个对象的引用名 D.某个对象的指针名 参考答案 C.某个对象的引用名 我的答案 C.某个对象的引用名 试题9 满分值:2.0分 状态:已答 实际得分:2.0分 试题: 有关析构函数的说法不正确的是:A.一个类中析构函数有且只有一个 B.析构函数无任何函数返回类型 C.析构函数和构造函数一样可以有形参 D.析构函数作用是在对象被撤消时收回先前分配的资源 参考答案 C.析构函数和构造函数一样可以有形参 我的答案 C.析构函数和构造函数一样可以有形参试题10 满分值:2.0分 状态:已答 实际得分:2.0分 试题: #includeint main()ifstream file 1;ofstream file 2;fstream file3;file3.open(“log.txl”,ios:in);file3.close();file3.open(“log.txt”,ios:out);()A对象file1可用于文件的输入和输出操作 B对象file2可用于文件的输入和输出操作 C对象file3可用于文件的输入和输出操作 D对象file3在文件关闭后,不能再打开另一个文件 参考答案 C对象file3可用于文件的输入和输出操作 我的答案 C对象file3可用于文件的输入和输出操作 试题11 满分值:2.0分 状态:已答 实际得分:2.0分试题: 在C的基础上,对C+作了很多改进,下列描述中( )使得C+语言发生了质变,从面向过程变成了面向对象。A增加了一些新的运算符; B引进了类和对象的概念; C规定函数说明必须用原型; D允许函数重载,并允许设置缺省参数; 参考答案 B引进了类和对象的概念; 我的答案 B引进了类和对象的概念; 试题12 满分值:2.0分 状态:已答 实际得分:2.0分试题: 下列关于构造函数的描述中,( )是正确的。A构造函数可以设置缺省参数; B构造函数可以被继承; C构造函数可以对静态数据成员进行初始化; D构造函数可以说明为虚函数; 参考答案 A构造函数可以设置缺省参数; 我的答案 A构造函数可以设置缺省参数;试题13 满分值:2.0分 状态:已答 实际得分:2.0分 !试题: 下列对函数重载的要求中,错误的是 A要求函数的参数个数不同 B函数的返回值不同 C当参数个数相同时,至少有一个参数类型不同 D要求函数名相同 参考答案 B函数的返回值不同 我的答案 B函数的返回值不同试题14 满分值:2.0分 状态:已答 实际得分:2.0分 试题: 如果有以下定义,则下列说法中错误的是。int*p=new int;A声明了指向整型变量的指针p B可以用*p来表示所指向的整型变量 C通过运算符new,分配了一整型数据的空间,并将其内存地址赋予指针p D系统为指针变量p分配了一个整型数据的存储空间 参考答案 D系统为指针变量p分配了一个整型数据的存储空间 我的答案 D系统为指针变量p分配了一个整型数据的存储空间 试题15 满分值:2.0分 状态:已答 实际得分:0.0分 试题: 1下列关于内联函数的叙述中,不正确的是( )。A类的内联函数可以在类体外通过使用关键词inline进行定义 B引入内联函数的目的是为了解决程序中函数调用的效率问题 C对于内联函数,程序在运行时将该函数的目标代码插入每个调用该函数的地方 D对于内联函数,程序在编译时将该函数的目标代码插入每个调用 参考答案 C对于内联函数,程序在运行时将该函数的目标代码插入每个调用该函数的地方 我的答案 D对于内联函数,程序在编译时将该函数的目标代码插入每个调用 二 判断题试题1 满分值:2.0分 状态:已答 实际得分:2.0分 试题: 在保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承。参考答案 正确 我的答案 正确 试题2 满分值:2.0分 状态:已答 实际得分:2.0分 试题: 在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。参考答案 错误 我的答案 错误 试题3 满分值:2.0分 状态:已答 实际得分:2.0分 试题: 使用关键字class定义的类中缺省的访问权限是私有(private)的。参考答案 正确 我的答案 正确 阅读下列C+程序并填空1:(每空2分,共10分)阅读下列说明和C+代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 1.【C+代码】#include #include #include using namespace std;class AbstractFile protected : string name; / 文件或目录名称public: void printName()cout name; / 打印文件或目录名称 virtual void addChild(AbstractFile *file)=0; / 给一个目录增加子目录或文件 virtual void removeChild(AbstractFile *file)=0; / 删除一个目录的子目录或文件 virtual list *getChildren()=0; / 获得一个目录的子目录或文件;class File : public AbstractFile public : File(string name) (1) = name; void addChild(AbstractFile *file) return ; void removeChild(AbstractFile *file) return ; (2) getChildren() return (3); ;class Folder :public AbstractFile private : list childList; / 存储子目录或文件public : Folder(string name) (4) = name; void addChild(AbstractFile *file) childList.push_back(file); void removeChild(AbstractFile *file) childList.remove(file); list *getChildren() return (5) ; ;void main() / 构造一个树形的文件/目录结构 AbstractFile *rootFolder = new Folder(c:); AbstractFile *compositeFolder = new Folder(composite); AbstractFile *windowsFolder = new Folder(windows); AbstractFile *file = new File(TestComposite.java); rootFolder-addChild(compositeFolder); rootFolder-addChild(windowsFolder); compositeFolder-addChild(file);参考答案:this-name list * NULL this-name 2. 对象是_和_的封装体。参考答案:数据操作3. 请你简述面向对象程序设计的基本思想。参考答案:答:面向对象程序设计(Object-Oriented Programming,简称OOP)的主要思想是:用面向对象程序设计语言中的对象和类直接模拟现实世界中的对象,将问题空间直接映射到软件空间。从而设计出尽可能直接、自然地表示问题求解方法的软件。面向对象方法按照对象来划分系统,以对象为模块,分而治之。4. 我们应该如何利用类库?答:如要利用类库,程序员必须知道类库的组织情况。 我们可以通过联机帮助或类库参考手册(类库工作手册)了解:软件开发系统提供的类库的类层次结构。 可能需要用到的类及其父类的属性和方法。通过联机文档提供的例子学习有关类的使用方法。5. 什么是模板?在C+语言中有几种模板?模板有什么用处?答:所谓模板是一种是使用类型(type)作为参数来产生一系列函数或类的机制。或者说,模板是一种模式(pattern),它使我们在不关心数据类型的情况下能够实现各种算法。在C+语言中有两种模板:函数模板和类模板。函数模板可以用来创建适应多种数据类型的通用函数(通用算法);类模板可以用来创建适应多种数据类型的通用类。6. 面向对象程序设计中的封装性有什么好处?答:封装性实现接口和实现的分离。从而将操作对象的内部复杂性与应用程序的其他部分隔离开来。这样能够降低程序设计的复杂性。除此以外,还有其他多项好处:增加了软件模块的独立性,便于多人合作开发软件;阻止外界对模块内部的数据的非法访问,增强软件的可靠性;如果维持接口不变,内部实现的改变不需要修改应用该类的代码,有利于软件的扩充和维护。简单的模块接口便于软件重用等等。7. 面向对象程序设计中的继承性有何益处?在C+语言中如何实现继承性? 答:面向对象程序设计中的继承性的主要益处是很好地实现了软件重用,有利于降低软件的开发和维护成本。并且有利于软件扩充,改进软件的可维护性。在C+语言中主要通过派生类来实现继承性。也可以在新类中创建已有类的对象作为成员来实现。8. 将绝对值函数abs( )重载三次。请在主函数中演示这三个函数,求出并输出整型数168,长整型数+1000000,双精度数 -2.781828的绝对值。#includeiostreamusing std:cout;using std:endl;int abs(int a)if(a0) a=-a return(a);long abs(long a) if(a0) a=-a; return(a);double abs(double a) if(a0) a=-a; return(a);int main() int x1=168; long x2=+1000000; double x3=-2.781828; coutx1=abs(x1)endl; coutx2=abs(x2)endl; coutx3=abs(x3)endl; return 0;9. 下列shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状的图形面积总和的函数。请从shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求面积函数。请在main( )函数中创建一个三角形对象(高=3,底=4)和一个矩形对象(长=4,宽=5),并使用total( )求它们的面积之和。(10分)class shape public: virtual float area( )=0; ; float total(shape *s ,int n) float sum=0.0; for(int i=0;iarea( ); return sum; 答:class shape public: virtual float area( )=0; ;float total(shape *s ,int n) float sum=0.0; for(int i=0;iarea( ); return sum;class Triangle:public Shapepublic:Triangle(double h,double w)H=h;W=w;double Area() constreturn H*W*0.5;private:double H,W;class Rectangle:public Shapepublic:Rectangle(double h,double w)H=h;W=w;double Area()constreturn H*W;private:double H,W;int main( )Triangle tri(3,4); Rectangle rect(4,5);Shape *s2;s0=&tri; s1=▭coutSum of area is: total(s,2)endl;return 0;10 .创建一个函数模板max( ),该模板返回两个参数中的最大值,例如:max(3,4)返回4, max(c,a)返回c,并在主函数中演示这个模板。答:#include template T max(T x, T y) return (xy) ? x:y;int main( ) coutmax(3,4)endl; coutmax(c,a)endl; return 0;11. 从键盘输入若干个同学的姓名(使用拼音表示),按字典顺序排序后输出。要求利用C+标准模板库STL或者你熟悉的其他类库编程实现。答:#include #include #include #include using namespace std;int main( ) list lst; int i; char classmates_name20; for( i = 0; i 6; i+) coutPlease input a classmates name:endl; cin.getline(classmates_name,n); lst.push_back(classmates_name); cout Original contents: ; list :iterator p = lst.begin(); while( p != lst.end() cout *p; ; p+; cout endl endl;lst.sort(); cout Sorted contents: endl; p = lst.begin(); while( p != lst.end() cout *pendl; p+; cout endl; return 0;12. 设计一个简单的电话本软件。当用户从键盘输入联系人的姓名,能够查找到对应的电话号码。要求利用C+标准模板库或者你熟悉的其他类库编程实现。答:#include #include #include using namespace std;int main( ) mapm; int i; m.insert(pair(WangGang,88168898); m.insert(pair(LiNa,88168558); m.insert(pair(LiTing,88163798);m.insert(pair(FengGang,88144368);string s; coutEnter the name:s; map:iterator p; p=m.find(s); if( p != m.end() cout s s phone number is: second endl; else cout s s phone number is not in the phonebook.n; return 0;13. 编写类String的构造函数、拷贝构造函数、析构函数和赋值函数已知类String的定义为:class Stringpublic: String(const char *str = NULL); / 普通构造函数 String(const String &other); / 拷贝构造函数 String(void); / 析构函数 String & operate =(const String &other); / 赋值函数private: char *m_data; / 用于保存字符串;请编写String类的上述4个成员函数。答:略14. C+中的一个空类,编译后默认产生哪些类成员函数?答:默认生成下列成员函数:class Emptypublic: Empty(); / 缺省构造函数 Empty( const Empty& ); / 拷贝构造函数 Empty(); / 析构函数 Empty& operator=( const Empty& ); / 赋值运算符 Empty* operator&(); / 取址运算符 const Empty* operator&() const; / 取址运算符 const;#include 15. #include class person char name10; int age;public: person()age=0; void set(int i,char *str) age=i; strcpy(name,str); void display( ) coutname is age years old.endl; ;class student : public person int math, chinese, english;public: student( ) math=chinese=english=0; void SetScore(int i,int j,int k) math=i; chinese=j; english=k; void display() coutThe students score is: endlmath: math endlchinese: chinese endlenglish: englishendl; ;int main( ) student st; st.set(15,Wang); st.SetScore(88,85,90); st.person:display(); st.display(); return 0;该程序的输出结果:在该程序中创建了哪些类:哪部分是类的私有成员?哪部分是类的公有成员?哪些是只读的方法?请直接在程序代码上标明。哪部分是类的接口?哪部分是类的实现?请直接在程序代码上标明。在该程序中哪些类是基类,哪些是派生类:列出在该程序中的所有对象:哪些是构造函数:哪些是析构函数:哪些是发送给对象的消息:答:该程序的输出结果:Wang is 15 years old.The students score is:math: 88chinese: 85english:90在该程序中创建了哪些类:person,student哪部分是类的私有成员?哪部分是类的公有成员?哪些是只读的方法?请直接在程序代码上标明。哪部分是类的接口?哪部分是类的实现?请直接在程序代码上标明。在该程序中哪些类是基类,哪些是派生类:基类person, 派生类student列出在该程序中的所有对象:st, cout哪些是构造函数:person( ),student( )哪些是析构函数:哪些是发送给对象的消息:st.set(15,Wang); st.SetScore(88,85,90); st.person:display( )

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论