09计科(1)(2)《面向对象程序设计》C 综合练习(学生版_)_-_含答案
- 格式:doc
- 大小:266.50 KB
- 文档页数:45
《面向对象程序设计c》综合复习题集及答案详解综合复习题集一、单选题1.C++源程序文件的缺省扩展名为(A)。
A.cppB.e某eC.objD.lik2.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。
A.cppB.e某eC.objD.lik3.由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。
A.cppB.e某eC.objD.lik4.编写C++程序一般需经过的几个步骤依次是()。
A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接5.以下标识符中不全是保留字的是()。
A.caeforintB.defaultthenwhileC.boolclalongD.gotoreturnchar6.能作为C++程序的基本单位是()。
A.字符B.语句C.函数D.源程序文件7.程序中主函数的名字为()。
A.mainB.MAINC.MainD.任意标识符8.C++程序的基本模块为()。
A.表达式B.标识符C.语句D.函数9.可用作C++语言用户标识符的一组标识符是()。
A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaeD.2aDOizeof10.存储以下数据,占用存储字节最多的是()。
A.0B.‘0’C.“0”D.0.011.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车12.设”inta=12;”,则执行完语句”a+=a某a;”后,a的值是()。
A.12B.144C.156D.28813.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式1/abc的表达式是()。
A.1.0/a某b某cB.1/(a某b 某c)C.1/a/b/(float)cD.1.0/a/b/c14.设”inta=15,b=26;”,则”cout<A.15B.26,15C.15,26D.2615.设某是一个bool型的逻辑量,y的值为10,则表达式某&&y的值为()。
c面向对象程序设计第二版答案面向对象程序设计是一种以对象为中心的编程范式,它将数据和处理数据的方法结合在一起,形成对象。
这种设计方法强调的是数据的封装、继承和多态性。
以下是《面向对象程序设计第二版》的一些常见问题及其答案。
1. 面向对象程序设计的核心概念是什么?面向对象程序设计的核心概念包括:类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。
2. 什么是类?类是现实世界中某些具有共同属性和行为的事物的抽象描述。
它定义了创建对象的蓝图或模板。
3. 什么是对象?对象是根据类创建的实例,具有类定义的属性和方法。
4. 封装是什么?封装是将数据(属性)和操作数据的方法(行为)组合在一起的过程,同时隐藏对象的内部状态和实现细节。
5. 什么是继承?继承是一种机制,允许一个类(子类)继承另一个类(父类或超类)的属性和方法。
6. 多态性是什么?多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
7. 面向对象程序设计有哪些优点?面向对象程序设计的优点包括代码重用、易于维护、易于扩展、提高代码的可读性等。
8. 如何实现封装?实现封装通常通过使用访问修饰符(如private、protected和public)来控制对类成员的访问。
9. 什么是接口?接口是一种特殊的抽象类,它只包含方法的声明,不包含方法的实现。
它用于定义一个类必须遵循的契约。
10. 什么是抽象类?抽象类是不能被实例化的类,通常包含抽象方法。
它用于定义一个类的基本结构,而具体的实现留给子类。
11. 如何实现多态?多态可以通过方法重载(Overloading)和方法重写(Overriding)来实现。
方法重载是同一个类中具有相同名字但参数不同的方法,而方法重写是子类重写父类的方法。
12. 什么是构造函数?构造函数是一种特殊的方法,用于在创建对象时初始化对象的状态。
第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。
这种范型的主要特征是:程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。
第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。
这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。
类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再由类生成对象。
类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:(1)每一个对象必须有一个名字以区别于其他对象。
(2)需要用属性来描述它的某些特性。
(3)有一组操作,每一个操作决定了对象的一种行为。
(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。
例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:1966.10.1 工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。
《C++面向对象程序设计》习题答案(总29页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除《C++程序设计》习题解答目录第2部分习题解答................................................................................................... 错误!未定义书签。
第1章面向对象程序设计概述.................................. 错误!未定义书签。
第2章面向过程程序设计...................................... 错误!未定义书签。
第3章类和对象.............................................. 错误!未定义书签。
第4章继承与派生............................................ 错误!未定义书签。
第5章多态性与虚函数........................................ 错误!未定义书签。
第6章友元与静态成员........................................ 错误!未定义书签。
第7章运算符重载............................................ 错误!未定义书签。
第8章泛型编程.............................................. 错误!未定义书签。
第9章输入/输出............................................. 错误!未定义书签。
第10章异常处理............................................. 错误!未定义书签。
面向对象程序设计C++期末考试题及答案一、选择题(每题5分,共40分)1. 下面哪个不是面向对象程序设计的特点?A. 封装B. 继承C. 多态D. 顺序结构答案:D2. C++中,构造函数的名称与类名相同,下列关于构造函数的说法错误的是:A. 构造函数可以重载B. 构造函数不能有返回值C. 构造函数可以没有参数D. 构造函数的参数列表中不能有默认参数答案:D3. 在C++中,析构函数的名称是:A. ~类名B. 类名~C. 析构函数D. ~析构函数答案:A4. 关于静态成员的说法,下列正确的是:A. 静态成员函数不能访问非静态成员B. 静态成员函数只能访问静态成员C. 静态成员变量在类的每个对象中都有独立的副本D. 静态成员变量在类的所有对象中共享一个副本答案:D5. 下面哪个操作符不能用于重载?A. =B. +C. []D. :答案:D6. 关于虚函数的说法,下列错误的是:A. 虚函数可以是构造函数B. 虚函数可以是析构函数C. 虚函数必须有函数体D. 虚函数的返回类型可以是void答案:A7. 在C++中,纯虚函数的定义是:A. virtual 返回类型函数名(参数列表) = 0;B. virtual 返回类型函数名(参数列表) {}C. 返回类型函数名(参数列表) = 0;D. 返回类型函数名(参数列表) {}答案:A8. 下面哪个关键字用于定义模板类?A. templateB. typenameC. classD. template class答案:A二、填空题(每题5分,共30分)1. 面向对象程序设计中的三大特性是:________、________、________。
答案:封装、继承、多态2. 在C++中,构造函数的调用顺序是:先调用基类的构造函数,再调用________的构造函数。
答案:派生类3. 在C++中,析构函数的调用顺序是:先调用________的析构函数,再调用基类的析构函数。
c面向对象程序设计课后习题答案C面向对象程序设计课后习题答案在学习C面向对象程序设计课程的过程中,课后习题是巩固知识、提升能力的重要途径。
通过认真完成习题,我们可以更好地理解课程内容,掌握编程技巧,提高解决问题的能力。
下面我们将针对一些常见的C面向对象程序设计课后习题进行答案解析。
1. 请编写一个C++程序,实现一个简单的学生信息管理系统,包括学生姓名、学号、成绩等信息的录入、查询和修改功能。
答案解析:首先,我们需要定义一个学生类,包括姓名、学号、成绩等属性,并实现相应的方法来实现信息的录入、查询和修改功能。
然后在主函数中创建学生对象,调用相应的方法即可实现学生信息管理系统。
2. 编写一个C++程序,实现一个简单的图书管理系统,包括图书名称、作者、出版社等信息的录入、查询和删除功能。
答案解析:同样地,我们需要定义一个图书类,包括图书名称、作者、出版社等属性,并实现相应的方法来实现信息的录入、查询和删除功能。
在主函数中创建图书对象,调用相应的方法即可实现图书管理系统。
3. 设计一个C++程序,模拟实现一个简单的银行账户管理系统,包括账户余额、存款、取款等功能。
答案解析:在这个问题中,我们需要定义一个银行账户类,包括账户余额、存款、取款等属性,并实现相应的方法来实现账户管理系统。
在主函数中创建账户对象,调用相应的方法即可实现银行账户管理系统。
通过以上习题的解答,我们可以看到C面向对象程序设计的重要性和实际应用。
通过不断地练习和实践,我们可以更好地掌握面向对象程序设计的知识和技能,提高编程能力,为今后的工作和学习打下坚实的基础。
希望同学们能够认真对待课后习题,不断提升自己的编程水平。
c 面向对象程序设计教程习题答案C面向对象程序设计教程习题答案在学习C面向对象程序设计的过程中,习题答案是非常重要的一部分。
通过练习习题,可以加深对知识点的理解,提高编程能力。
下面我们就来看一些常见的C面向对象程序设计习题及其答案。
1. 什么是面向对象程序设计?面向对象程序设计是一种程序设计范式,它以对象为中心,通过封装、继承和多态等特性来组织和管理代码。
面向对象程序设计可以提高代码的可维护性和可重用性,是现代软件开发中非常重要的一部分。
2. 什么是类和对象?类是一种抽象的数据类型,它描述了一类对象的共同特征和行为。
对象是类的实例,它具体描述了一个具体的实体。
在C面向对象程序设计中,类和对象是非常重要的概念。
3. 请编写一个简单的类和对象的例子。
```c#include <stdio.h>// 定义一个简单的类class Person {public:int age;char name[20];void display() {printf("Name: %s, Age: %d\n", name, age);}};int main() {// 创建一个对象Person p;p.age = 25;strcpy(, "Alice");p.display();return 0;}```4. 什么是封装?封装是面向对象程序设计中的一种重要特性,它将数据和行为封装在一个类中,对外部隐藏了内部的实现细节。
封装可以保护数据的安全性,同时提供了简单的接口供外部访问。
5. 请编写一个简单的封装例子。
```c#include <stdio.h>// 定义一个简单的类class Circle {private:double radius;public:void setRadius(double r) {radius = r;}double getArea() {return 3.14 * radius * radius;}};int main() {// 创建一个对象Circle c;c.setRadius(5.0);printf("Area: %f\n", c.getArea());return 0;}```以上就是一些常见的C面向对象程序设计习题及其答案。
一、填空题(每空1分,共14分)1、观看以下程序:class point{public:void show() {cout<<”point”<<endl;}};void main(){point p1;point *p;p=&p1;_______________//通过对象p1访问show函数______________//通过指针p访问show函数}2、在C++类中可以包含______________、______________和______________三种具有不同访问控制权的成员。
3、定义类时,在类头中将使用关键字_____________来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为________________。
5、C++类的组成包括数据成员和______________,友元_____(是、不是)该类的成员函数。
6、友员函数是用关键字____________修饰的非成员函数。
7、若有:int i;int &j=i;i=10;j=i+1;则i=__________,j=__________。
8、 new的功能是____________________,delete的功能是____________________。
二、选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是()。
(A)数据封装(B)继承(C)多态性(D)模板2、()是给变量取一个别名,它引入了变量的同意词。
(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。
(A)share (B)public (C)private (D)protected4、关于构造函数,下列说法不正确的是()。
(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。
C++面向对象程序设计习题册姓名学号学院班级第三章类和对象一、选择题1. 在一个类的定义中,包含有(C )成员的定义。
A. 数据B. 函数C. 数据和函数D. 数据或函数2. 在类作用域中能够通过直接使用该类的(D)成员名进行访问。
A. 私有B. 公用C. 保护D. 任何3. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。
A. x(a)B. x[a]C. x->aD. x.a4. 假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为(B )。
A. x.aB. x.a()C. x->aD. x->a()5. 假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为(C )。
A. px(a)B. px[a]C. px->aD. px.a6. 假定AA为一个类,a为该类私有的数据成员,GetV alue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。
A. x.aB. x.a()C. x->GetV alue()D. x.GetV alue()7. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A)。
A. int AA::a()B. int AA:a()C. AA::a()D. AA::int a()8. 假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为(A)。
A. aB. AA::aC. a()D. AA::a()9. 若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( B )放在函数原型或函数头的前面。
A. inB. inlineC. inLineD. InLiner10. 在多文件结构的程序中,通常把类的定义单独存放于(D )中。
A. 主文件B. 实现文件C. 库文件D. 头文件11. 在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于(B)中。
A. 主文件B. 实现文件C. 库文件D. 头文件12. 在多文件结构的程序中,通常把含有main()函数的文件称为(A)。
A. 主文件B. 实现文件C. 程序文件D. 头文件13. 在C++程序中使用的cin标识符是系统类库中定义的( A)类中的一个对象。
A. istreamB. ostreamC. iostreamD. fstream14. 在C++程序中使用的cout标识符是系统类库中定义的( B )类中的一个对象。
A. istreamB. ostreamC. iostreamD. fstream15. 假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为(D)。
A. intB. charC. AAD. AA*16. 假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为(C)。
A. abcB. *thisC. thisD. this&17. 假定AA是一个类,“AA& abc();”是该类中一个成员函数的原型,若该函数存在对*this赋值的语句,当用x.abc()调用该成员函数后,x的值(A)。
A. 已经被改变B. 可能被改变C. 不变D.不受函数调用的影响18. 假定AA是一个类,“AA* abc()const;”是该类中一个成员函数的原型,若该函数返回thi s值,当用x.abc()调用该成员函数后,x的值(C )。
A. 已经被改变B. 可能被改变C. 不变D. 受到函数调用的影响19. 类中定义的成员默认为( B )访问属性。
A. publicB. privateC. protectedD. friend20. 结构中定义的成员默认为(A)访问属性。
A. publicB. privateC. protectedD. friend21. 当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为( C )。
A. nB. n+1C. n-1D. n-222. 对于一个类的构造函数,其函数名与类名( A)。
A. 完全相同B. 基本相同C. 不相同D. 无关系23. 对于一个类的析构函数,其函数名与类名( C )。
A. 完全相同B. 完全不同C. 只相差一个字符D. 无关系24. 类的构造函数是在定义该类的一个( C)时被自动调用执行的。
A. 成员函数B. 数据成员C. 对象D. 友元函数25. 类的析构函数是一个对象被( B)时自动调用的。
A. 建立B. 撤消C. 赋值D. 引用26. 一个类的构造函数通常被定义为该类的( A)成员。
A. 公用B. 保护C. 私有D. 友元27. 一个类的析构函数通常被定义为该类的( C )成员。
A. 私有B. 保护C. 公用D. 友元28. 假定AB为一个类,则执行“AB x;”语句时将自动调用该类的( B )。
A. 带参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数29. 假定AB为一个类,则执行“AB x(a,5);”语句时将自动调用该类的( A)。
A. 带参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数30. 假定AB为一个类,则执行“AB *s=new AB(a,5);”语句时得到的一个动态对象为____D___。
A. sB. s->aC. s.aD. *s31. 假定AB为一个类,则执行“AB r1=r2;”语句时将自动调用该类的( D)。
A. 无参构造函数B. 带参构造函数C. 赋值重载函数D. 拷贝构造函数32. 若需要使类中的一个指针成员指向一块动态存储空间,则通常在( B )函数中完成。
A. 析构B. 构造C. 任一成员D. 友元33. 当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储( A)个整数。
A. nB. n+1C. n-1D. 134. 假定一个类的构造函数为“A(int aa, int bb) {a=aa; b=aa*bb;}”,则执行“A x(4,5);”语句后,x.a和x.b的值分别为( C )。
A. 4和5B. 5和4C. 4和20D. 20和535. 假定一个类的构造函数为“A(int aa=1, int bb=0) {a=aa; b=bb;}”,则执行“A x(4);”语句后,x.a和x.b 的值分别为( D )。
A. 1和0B. 1和4C. 4和1D. 4和036. 假定AB为一个类,则( B )为该类的拷贝构造函数的原型说明。
A. AB(AB x);B. AB(AB& x);C. void AB(AB& x);D. AB(int x);37. 假定一个类的构造函数为“B(int ax, int bx): a(ax), b(bx) {}”,执行“B x(1,2),y(3,4);x=y;”语句序列后x.a的值为( C)。
38. 假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为( D )。
A. AB() {a=0;}B. AB(int aa=0): a(aa) {}C. AB(int aa): a(aa) {}D. AB() {}39. 假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为( C )。
A. AB() {}B. AB(): a(0){}C. AB(int aa=0) {a=aa;}D. AB(int aa) {}40. 对于任一个类,用户所能定义的构造函数的个数至多为( D )。
A. 0B. 1C. 2D. 任意个41. 对于任一个类,用户所能定义的析构函数的个数至多为( B )。
A. 0B. 1C. 2D. 任意个42. 假定AB为一个类,则执行“AB *px=new AB[n];”语句时将( A)。
A. 动态分配一个数组B. 动态分配一个对象C. 静态分配一个数组D. 静态分配一个对象43. 设px是指向一个类对象的指针变量,则执行“delete px;”语句时,将自动调用该类的( C )。
A. 无参构造函数B. 带参构造函数C. 析构函数D. 拷贝构造函数44. 当一个类对象离开它的作用域时,系统自动调用该类的( D )。
A. 无参构造函数B. 带参构造函数C. 拷贝构造函数D. 析构函数45. 假定一个类对象数组为A[n],当离开它定义的作用域时,系统自动调用该类析构函数的次数为( C )。
A. 0B. 1C. nD. n-146. 假定AB为一个类,则执行“AB a[10];”语句时调用该类无参构造函数的次数为( D )。
A. 0B. 1C. 9D. 1047. 假定AB为一个类,则执行“AB *px=new AB[n];”语句时调用该类无参构造函数的次数为( A)。
A. nB. n-1C. 1D. 048. 假定AB为一个类,则执行“AB a, b(3), *p;”语句时共调用该类构造函数的次数为( A)。
A. 2B. 3C. 4D. 549. 假定AB为一个类,则执行“AB a(2), b[3], *p[4];”语句时共调用该类构造函数的次数为(B )。
A. 3B. 4C. 5D. 950. 假定AB为一个类,则执行“AB a, b(2), c[3], *p=&a;”语句时共调用该类无参构造函数的次数为( D )。
A. 5B. 6C. 3D. 451. 假定AB为一个类,则执行“AB *p=new AB(1,2);”语句时共调用该类构造函数的次数为( B )。
A. 0B. 1C. 2D. 352. 假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete []px;”语句时共调用该类析构函数的次数为( C )。
A. 0B. 1C. nD. n+153. 对类对象成员的初始化是通过构造函数中给出的( D )实现的。
A. 函数体B. 初始化表C. 参数表D. 初始化表或函数体54. 对类中常量成员的初始化是通过构造函数中给出的( C )实现的。
A. 函数体B. 参数表C. 初始化表D. 初始化表或函数体55. 对类中引用成员的初始化是通过构造函数中给出的( C )实现的。
A. 函数体B. 参数表C. 初始化表D. 初始化表或函数体56. 一个类的静态数据成员所表示属性( C)。
A. 是类的或对象的属性B. 只是对象的属性C. 只是类的属性D. 类和友元的属性57. 类的静态成员的访问控制( D )。