《面向对象程序设计C++》样题分析
- 格式:doc
- 大小:32.00 KB
- 文档页数:4
《面向对象程序设计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++面向对象程序设计2010期末考试编程题1、编写一个程序根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、直角三角形)。
#include<iostream>#include<math.h>using namespace std;int main(){double a,b,c;double v,p;cout<<"请输入三角形三条边:"<<endl;cin>>a>>b>>c;if(a+b>c&&a+c>b&&b+c>a){p=(a+b+c)/2;v=sqrt(p*(p-a)*(p-b)*(p-c));cout<<"该三角形面积是"<<v<<endl;if(a==b&&a==c)cout<<"该三角形是等边三角形!"<<endl;elseif(a==b&&a!=c||a==c&&a!=b||b==c&&b!=a)cout<<"该三角形是等腰三角形!"<<endl;if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a))cout<<"该三角形是直角三角形!"<<endl;}elsecout<<"这三条边组不成三角形!"<<endl;return 0;}2、定义一个学生类,其中有3 个数据成员:学号、姓名、年龄,以及若干成员函数。
同时编写main 函数使用这个类,实现对学生数据的赋值和输出。
c面向对象程序设计第二版答案面向对象程序设计是一种以对象为中心的编程范式,它将数据和处理数据的方法结合在一起,形成对象。
这种设计方法强调的是数据的封装、继承和多态性。
以下是《面向对象程序设计第二版》的一些常见问题及其答案。
1. 面向对象程序设计的核心概念是什么?面向对象程序设计的核心概念包括:类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。
2. 什么是类?类是现实世界中某些具有共同属性和行为的事物的抽象描述。
它定义了创建对象的蓝图或模板。
3. 什么是对象?对象是根据类创建的实例,具有类定义的属性和方法。
4. 封装是什么?封装是将数据(属性)和操作数据的方法(行为)组合在一起的过程,同时隐藏对象的内部状态和实现细节。
5. 什么是继承?继承是一种机制,允许一个类(子类)继承另一个类(父类或超类)的属性和方法。
6. 多态性是什么?多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
7. 面向对象程序设计有哪些优点?面向对象程序设计的优点包括代码重用、易于维护、易于扩展、提高代码的可读性等。
8. 如何实现封装?实现封装通常通过使用访问修饰符(如private、protected和public)来控制对类成员的访问。
9. 什么是接口?接口是一种特殊的抽象类,它只包含方法的声明,不包含方法的实现。
它用于定义一个类必须遵循的契约。
10. 什么是抽象类?抽象类是不能被实例化的类,通常包含抽象方法。
它用于定义一个类的基本结构,而具体的实现留给子类。
11. 如何实现多态?多态可以通过方法重载(Overloading)和方法重写(Overriding)来实现。
方法重载是同一个类中具有相同名字但参数不同的方法,而方法重写是子类重写父类的方法。
12. 什么是构造函数?构造函数是一种特殊的方法,用于在创建对象时初始化对象的状态。
模拟试题(1)一、判断对错题(10%)(对√,错×)()1.自动变量用堆方式创建,它与块共存亡。
()2.运算符+=是右结合的。
()3.表达式cout<<99的类型为int。
()4.++i是左值,但i++不是左值。
()5.Y[I][J]与*(*Y+I)+J不等价。
()6.从外部看类的private 成员和protected成员有区别。
()7.运算符&不可以重载。
()8.基类的protected成员经过protected派生,在派生类中它变成了private成员。
()9.2.0/-3.0是一个正确的表达式。
()10.字符'\12'的ASCII为12。
二、填空题(20%)#include <iostream.h>typedef struct node{long data;node * next;};class stack{private:node * head;①__________stack();~stack();void push (②__________);③__________ pop();④__________ print();};stack::stack(){ head = new ⑤__________head->next = ⑥__________ }stack::~stack(){node * p;p = head;while (p){head = head->next;⑦__________p = head;}}void stack::push(long x){node * p = new node;p->data = x;p->next = head->next;⑧__________ = p;cout<<"Push" <<x<<" ok !"<<endl;}long stack::pop(){node *p = head->next;if(p!=NULL){long x = p->data;head->next = p->next;⑨__________cout<<"pop "<<x<<" ok !"<<endl;return x;}elsecout<<"Stack is empty !"<<endl;return 0;}void stack::print(){node * p = head->next;cout<<"Stack_Top"<<endl;while (p){cout<<p->data<<endl;⑩__________;}cout<<"Stack_bottom"<<endl;}三、简答题(20%)(按条列出论点)1.注解。
c面向对象程序设计第三版答案面向对象程序设计是一种以对象为中心的编程范式,它将现实世界中的事物抽象为对象,并通过对象之间的交互来实现程序的功能。
第三版《面向对象程序设计》教材通常包含了面向对象编程的基本概念、原理和应用实践。
以下是对这本书中可能包含的一些关键概念和问题的答案概述。
面向对象程序设计基本概念1. 对象(Object):对象是现实世界中事物的抽象,它包含了数据(属性)和行为(方法)。
2. 类(Class):类是对象的模板,定义了对象的属性和方法。
3. 封装(Encapsulation):封装是将对象的数据和行为结合在一起,并隐藏内部细节,只暴露必要的接口。
4. 继承(Inheritance):继承是一种机制,允许一个类(子类)继承另一个类(父类)的属性和方法。
5. 多态(Polymorphism):多态允许将不同类的对象视为同一类型,通常是通过接口或抽象类实现。
类和对象的创建- 定义类:使用类关键字定义一个类,指定其属性和方法。
- 创建对象:使用类名作为构造函数来创建对象的实例。
继承和多态的使用- 实现继承:通过扩展父类来创建子类,可以使用`extends`关键字。
- 方法重写(Overriding):子类可以重写父类的方法,以提供特定的- 多态的实现:通过接口或抽象类定义统一的接口,然后由不同的子类实现。
封装的实践- 私有成员:将类的成员变量设置为私有,防止外部直接访问。
- 公共接口:提供公共的方法来访问和修改私有成员。
异常处理- try-catch块:使用`try`块来执行可能抛出异常的代码,`catch`块来捕获并处理异常。
- 自定义异常:可以创建自定义异常类来表示特定的错误情况。
设计模式- 设计模式:是解决特定问题的模板,如单例模式、工厂模式、观察者模式等。
面向对象分析与设计- UML图:统一建模语言(UML)用于可视化系统的设计,包括类图、对象图、状态图等。
- 面向对象分析(OOA):分析问题域,识别系统中的对象和它们的关系。
c面向对象程序设计课后习题答案C面向对象程序设计课后习题答案在学习C面向对象程序设计课程的过程中,课后习题是巩固知识、提升能力的重要途径。
通过认真完成习题,我们可以更好地理解课程内容,掌握编程技巧,提高解决问题的能力。
下面我们将针对一些常见的C面向对象程序设计课后习题进行答案解析。
1. 请编写一个C++程序,实现一个简单的学生信息管理系统,包括学生姓名、学号、成绩等信息的录入、查询和修改功能。
答案解析:首先,我们需要定义一个学生类,包括姓名、学号、成绩等属性,并实现相应的方法来实现信息的录入、查询和修改功能。
然后在主函数中创建学生对象,调用相应的方法即可实现学生信息管理系统。
2. 编写一个C++程序,实现一个简单的图书管理系统,包括图书名称、作者、出版社等信息的录入、查询和删除功能。
答案解析:同样地,我们需要定义一个图书类,包括图书名称、作者、出版社等属性,并实现相应的方法来实现信息的录入、查询和删除功能。
在主函数中创建图书对象,调用相应的方法即可实现图书管理系统。
3. 设计一个C++程序,模拟实现一个简单的银行账户管理系统,包括账户余额、存款、取款等功能。
答案解析:在这个问题中,我们需要定义一个银行账户类,包括账户余额、存款、取款等属性,并实现相应的方法来实现账户管理系统。
在主函数中创建账户对象,调用相应的方法即可实现银行账户管理系统。
通过以上习题的解答,我们可以看到C面向对象程序设计的重要性和实际应用。
通过不断地练习和实践,我们可以更好地掌握面向对象程序设计的知识和技能,提高编程能力,为今后的工作和学习打下坚实的基础。
希望同学们能够认真对待课后习题,不断提升自己的编程水平。
《面向对象程序设计C++》期末考试试卷(B)班级:姓名:学号:分数:试卷说明:本套试题共四个大题,全部题目都答在答题纸上,写在其他地方均无效。
(答题纸在本套试卷的第8页上)】一、单项选择题(每小题2分,共40分)1、关于C++与C语言关系的描述中,( D )是错误的。
A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的2、已知:int m=10; 下列表示引用的方法中,(A )是正确的。
A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m;3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是( C )。
>A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*');4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是( A )。
A.函数的返回值类型B.参数的类型C.函数名称D.参数个数5、下列有关C++类的说法中,不正确的是( D )。
A.类是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私有的^D.在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array[3];时,调用了(D )次构造函数。
A.0 B.1 C.2 D.37、有关析构函数的说法,不正确的是( B )。
A.析构函数有且仅有一个B.析构函数和构造函数一样可以有形参C.析构函数的功能是在系统释放对象之前作一些内存清理工作D.析构函数无任何函数类型。
《C++面向对象程序设计》习题解答陈腊梅目录第一章面向对象程序设计概述.............................................................. 错误!未定义书签。
第二章对C语言的基础扩充................................................................... 错误!未定义书签。
第三章类和对象的初步探讨 ................................................................. 错误!未定义书签。
第四章类和对象的进一步解析.............................................................. 错误!未定义书签。
第五章在对象中使用运算符—运算符重载.......................................... 错误!未定义书签。
第六章继承与派生 (2)第七章多态性与虚函数 (2)第一章面向对象程序设计概述一、选择题二、填空题1、多态性2、成员函数3、抽象4、处理这些数据的操作或处理这些数据的函数5、面向对象分析、面向对象分析、面向对象编程、对象对象测试、面向对象维护第二章对C语言的基础扩充二、程序阅读题1答案a=639,b=78,c=122答案a=5,b=8a=8,b=53答案104答案x=20.6 y=5 z=Ax=216.34 y=5 z=Ax=216.34 y=2 z=Ax=216.34 y=2 z=E5答案ic=11fc=7.82ic=5fc=2.15第三章类和对象的初步探讨一、选择题二、填空题1 数据成员、成员函数2 private 、protected 、public3 指向对象的指针、对象的引用4 属性、行为、属性、行为5 对象、属性和操作这些属性的操作、对外隐藏四、程序改错题#include <iostream>using namespace std;class Clock{//public:void set_clock(void);void show_clock(void);//private:int hour;int minute;int second;};Clock clock;int main( ){clock.set_clock( );clock.show_clock ( );//return 0 ;}void Clock::set_clock(void){cin>>hour;cin>>minute;cin>>second;}void Clock::show_clock(void){cout<<hour<<":"<<minute<<":"<<second<<endl;}第四章类和对象的进一步解析二、填空题1 this2所有成员3友元类、友元函数4 friend5 程序编译、程序结束三、程序阅读题1答案Default constructor called.constructor called.0,06,86,8Destructor called.0,0Destructor called.2答案x!=y3答案Initalizing defaultInitalizing default0 0Destructor is activeDestructor is active4答案n=2,sum=2n=3,sum=5n=5,sum=105答案x=36答案x=1,y=2x=30,y=407答案1 2 3 4 4exit main3 2 1 08答案n=1009答案the student is:Li Huthe teacher is:Wang Ping10答案211答案1035,789.50412答案13答案constructing object:x=1第五章在对象中使用运算符—运算符重载二、程序完善题1(1)A A::operator+(A &b)(2){ A temp;temp.i = i+b.i;return temp; }三、程序阅读题1.答案n=4n=3232.答案c1=10 c2=20c1=100 c2=200c1=11 c2=21c1=100 c2=2003.答案1 2 4 7 11 16第六章派生与继承1 继承2 具体化、抽象3 公有继承、保护继承、私有继承4 子对象5 public(共有的)、protected(保护的)、不可访问6 protected(保护的)、protected(保护的)、不可访问的7 private(私有的)、private(私有的)、不可访问的8 二义性1.C++语言中,既允许单继承,又允许多继承。
一、填空题(每空1分,共14分)1、观看以下程序:class point{public:void show() {cout<<”point”<<endl;}};void main(){point p1;point *p;p=&p1;______p1.show()_________//通过对象p1访问show函数_______p.show()_______//通过指针p访问show函数}2、在C++类中可以包含___公共___、___保护_____和___私有__三种具有不同访问控制权的成员。
3、定义类时,在类头中将使用关键字__class _____来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为_______抽象类_________。
5、C++类的组成包括数据成员和______成员函数________,友元__是___(是、不是)该类的成员函数。
6、友员函数是用关键字_____friend_______修饰的非成员函数。
7、若有:int i;int &j=i;i=10;j=i+1;则i=____11_____,j=___11______。
8、 new的功能是_______分配内存空间______,delete的功能是______释放内存空间______________。
二、选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是( D)。
(A)数据封装(B)继承(C)多态性(D)模板2、( B )是给变量取一个别名,它引入了变量的同意词。
(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。
(A)share (B)public (C)private (D)protected4、关于构造函数,下列说法不正确的是()。
(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。
一、选择题
1.下列关于类和对象的叙述中,错误的是( )。
A)一个类只能有一个对象 B)对象是类的具体实例
C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系
2.下列关于C++函数的叙述中,正确的是( )。
A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值
C)函数在被调用之前必须先声明 D)函数不能自己调用自己
3.对于语句 cout<<x<<endl;错误的是描述是( )。
A)“cout”是一个输出流对象 B)“endl”的作用是输出回车换行
C)“x”是一个变量 D)“<<”称作提取运算符
4.执行如下的程序段后,输出结果是( )。
cout.fill('*'); cout.width(6); cout.fill('#'); cout << 123 << endl;
A)###123 B)123### C)***123 D)123***
5.在下列函数原型中,可以作为类AA构造函数的是( )。
A)void AA(int); B)int AA(); C)AA(int)const; D)AA(int);
6.有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是( )。
class MyBASE
{ private: int k;
public: void set(int n){ k=n;}
int get( )const{ return k;} };
class MyDERIVED: protected MyBASE
{ protected: int j;
public: void set(int m, int n){ MyBASE::set(m); j=n;}
int get( ) const { return MyBASE::get( )+j; } };
A)4 B)3 C)2 D)1
7.有如下类声明:class XA
{ private: int x;
public: XA(int n){ x=n;} };
class XB: public XA
{ private: int y;
public: XB(int a,int b); };
在构造函数XB的下列定义中,正确的是( )。
A)XB::XB(int a,int b): x(a),y(b){ } B)XB::XB(int a,int b): XA(a),y(b){ }
C)XB::XB(int a,int b): x(a),XB(b){ } D)XB::XB(int a,int b): XA(a),XB(b){ }
8.应在下列程序划线处填入的正确语句是( )。
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();
9.下面四个选项中,( )是用来声明虚函数的。
A)virtual B)public C)include D)using namespace
10.在C++中,用于实现运行时多态性的是( )。
A)内联函数 B)重载函数 C)模板函数 D)虚函数
11.以下( )成员函数表示纯虚函数。
A)virtual int vf(int); B)void vf(int)=0;
C)virtual void vf()=0; D)virtual void vf(int){}
12.在表达式 x+y*z中, + 是作为成员函数重载的运算符,* 是作为非成员函数
重载的运算符。
则 operator+ 有个参数,operator* 有参数。
( ) A)2、2 B)2、1 C)1、2 D)1、1
二、写出执行下面程序的输出结果。
void fun(int &x, int y)
{
int t=x; x=y; y=t;
}
int main( )
{
int a[2] = {23, 42};
fun(a[1],a[0]);
std::cout<<a[0]<<","<<a[1]<<std::endl;
return 0;
}。