11427-C++面向对象程序设计-习题答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
intIn_SeQueue(datatype x);
intOut_SeQueue();
voidPrint_SeQueue();
};
//queue.cpp
#include"iostream"
usingnamespacestd;
#include"queue.h"
int_tmain(intargc, _TCHAR* argv[])
sq.Print_SeqStack();
return0;
}
Stack::Stack()
{
top=-1;
}
intStack::Push_SeqStack(datatype x)
{
if(top==MAXSIZE-1)
{
return(0);
}
else
{
top++;
data[top]=x;
return(1);
{
private:
datatype data[MAXSIZE];
inttop;
public:
Stack();
intPush_SeqStack(datatype x);
intPop_SeqStack();
voidPrint_SeqStack();
};
//stack.cpp
#include"iostream"
public:
void Ini_Stack();//初始化栈
void Push_Stack();//入栈
void Pop_Stack();//出栈
void Empty(); //判栈空
};
2.设计一个队列类,实现的操作有初始化队列、入队、出队、判队空。
解:
class Queue
{
private:
int front,rear;
constintMAXSIZE=5;//queue.h
structdatatype
{
longno;
charname[10];
floatscore;
};
classStudent
{
private:
datatype data[MAXSIZE];
intfront,rear;
intnum;
public:
Student();
7.C++支持多态性主要表现在哪些方面?
解:C++支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态性是通过重载来实现的,运行时的多态性是通过虚函数来实现的。
思考题
1.设计一个栈类,实现的操作有初始化栈、入栈、出栈、判栈空。
解:
class Stack
{
private:
int top;
int s[100];
}
2.定义一个图书类,图书信息有图书名称、作者、出版社、价格。要求利用栈实现图书的入库、出库和显示等功能。
constintMAXSIZE=5;//stack.h
structdatatype
{
charname[10],author[10],publish[20];
floatprice;
};
classStack
3.什么是封装性和继承性?
解:封装是面向对象方法的一个重要特点,即将对象的属性和行为封装在对象的内部,形成一个独立的单位,并尽可能隐蔽对象的内部细节。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
4.什么是多态性?
解:多态性是面向对象方法的重要特征。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
num--;
return1;
}
}
voidStudent::Print_SeQueue()
{
inti;
intnumber=num;
for(i=(front+1)%MAXSIZE;number>0;number--,i=(i+1)%MAXSIZE)
cout<<data[i].no <<" "<<data[i].name <<" "<<data[i].score <<endl;
第
1.什么是面向对象方法学?
解:面向对象方法学就是尽量模拟人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程,从而使描述问题的问题空间(即问题域)与实现解法的解空间(即求解域)在结构上尽可能一致。
2.什么是对象?它与传统的数据有何关系?有什么不同?
解:对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。它与传统数据有本质的不同,传统数据是被动地等待对它进行处理,对象是进行处理的主体。
private:
intX,Y;
};
classDistance
{
public:
floatfDist(Point a,Point b);
};
//point.cpp
5.关于构造函数的叙述正确的是(B)。
A.构造函数可以有返回值B.构造函数的名字必须与类名完全相同
C.构造函数必须带有参数D.构造函数必须定义,不能默认
6.关于析构函数特征描述正确的是(C)。
A.一个类中可以有多个析构函数B.析构函数名与类名完全相同
C.析构函数不能指定返回类型D.析构函数可以有一个或多个参数
{
Student sq;
inti;
for(i=1;i<=3;i++)
{
datatype stu;
cout<<"input no,name,score"<<endl;
cin>>stu.no >>stu.name >>stu.score ;
sq.In_SeQueue (stu);
}
cout<<"PrFra Baidu biblioteknt_SeQueue"<<endl;
12.下面关于友元函数的描述中,正确的说法是(A)。
A.友元函数是独立于当前类的外部函数
B.一个友元函数不能同时定义为两个类的友元函数
C.友元函数必须在类的外部定义
D.在外部定义友元函数时,必须加关键字friend
13.一个类的友元函数能够访问该类的(D)。
A.私有成员B.保护成员C.公有成员D.所有成员
usingnamespacestd;
#include"stack.h"
int_tmain(intargc, _TCHAR* argv[])
{
Stack sq;
inti;
for(i=1;i<=3;i++)
{
datatype b;
cout<<"input name,author,publish,price"<<endl;
int que[100];
public:
void Ini_Queue();//初始化队列
void In_Queue();//入队
void Out_Queue();//出队
void Empty(); //判队空
};
第
1.构造函数和析构函数的主要作用是什么?
解:构造函数的功能是在创建对象时,给数据成员赋初值,即对象的初始化。析构函数的功能是释放一个对象,在对象删除之前,用它来做一些内存释放等清理工作。
解:Visual C++6.0支持面向对象编程、可视化、模块化、代码可重用和组件共享等技术,可以大大提高软件系统的设计、管理和开发速度。Java语言是一种通用、并发、基于类的面向对象程序设计语言。Java语言具有简捷性、面向对象、分布式、健壮性、安全性、可移植性、解释型、高性能、多线程、动态性等特点。C#(读做“C sharp”)是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#集C语言的简洁强大、C++的面向对象、VB的图形化设计方法、Java的编译与执行机制等优点于一身。C#是创新性的新式编程语言,它巧妙地结合了最常用的行业语言和研究语言中的功能,并引入了多种潜在的新功能,提高了开发人员在语言构造方面的效率,将快速的应用程序开发与对底层平台各种功能的访问紧密结合在一起,使得程序员能够在.NET平台上快速开发各种应用程序。
4.什么是静态数据成员?静态数据成员的定义和初始化方法是什么?
解:类的静态数据成员拥有一块单独的存储区,不管用户创建了多少个该类的对象,所有这些对象的静态数据成员都共享这一块静态存储空间,是这些对象互相通信的一种方法。
静态数据成员的定义格式:static类型名静态成员名;
静态数据成员的初始化格式:类型类名∷静态数据成员=初始化值;
{
if(num==MAXSIZE)
{
return(-1);
}
else
{
rear=(rear+1)%MAXSIZE;
data[rear]=x;
num++;
return(1);
}
}
intStudent::Out_SeQueue()
{
if(num==0)
{
return-1;
}
else
{
front=(front+1)%MAXSIZE;
sq.Print_SeQueue ();
sq.Out_SeQueue ();
cout<<"After Out_SeQueue "<<endl;
sq.Print_SeQueue ();
return0;
}
Student::Student()
{
front=rear=MAXSIZE-1;
num=0;
}
intStudent::In_SeQueue(datatype x)
int age;//年龄
float fGrade;//成绩
public:
void Input();//输入学生信息
void Print();//输出学生信息
void Insert();//插入学生信息
void Del(); //删除学生信息
void Find(); //查找学生信息
};
6.目前常用的面向对象程序设计语言有哪些?各有哪些特点?
2.什么是this指针?它的主要作用是什么?
解:this指针称为自引用指针。每当对象调用成员函数时,系统就将该对象的地址赋给this指针,这时C++编译器将根据this指针所指向的对象来确定应该引用哪一个对象的数据成员。
3.什么是友元函数?
解:友元函数不是当前类中的成员函数,它可以是一个不属于任何一个类的一般函数(即非成员函数),也可以是另外一个类的成员函数。
}
3.有Distance类和Point类,将Distance类定义为Point类的友元类来实现计算两点之间距离。
//point.h
classDistance;
classPoint
{
public:
Point(intxx=0,intyy=0)
{
X=xx;
Y=yy;
}
friendclassDistance;
10.this指针是C++实现(B)的一种机制。
A.抽象B.封装C.继承D.重载
11.已知类中的一个成员函数说明为:void Set(X &a)其中,X &a的含义是(C)。
A.指向类X的指针为a
B.将a的地址赋给变量
C.a是类X的对象引用,用来作为Set()的形参
D.变量X与a按位与作为函数Set()的形参
5.试写出学生管理系统中所涉及的类(属性和方法)。学生管理系统中学生信息有:姓名、学号、年龄、成绩;学生管理系统完成学生信息输入、学生信息输出、插入学生信息、删除学生信息、查找学生信息。
解:
class Student
{
private:
char cName[12];//姓名
long lNum;//学号
}
}
intStack::Pop_SeqStack()
{
if(top==-1)
{
return0;
}
else
{
top--;
return1;
}
}
voidStack::Print_SeqStack()
{
inti;
for(i=0;i<=top;i++)
cout<<data[i].name<<" "<<data[i].author<<" "<<data[i].publish<<" "<<data[i].price<<endl;
7.构造函数是在(B)时被执行的。
A.程序编译B.创建对象C.创建类D.程序装入内存
8.定义A是一个类,那么执行语句“A a, b(3),*p;”调用了(A)次构造函数。
A.2B.3C.4D.5
9.在下列函数原型中,可以作为类Base析构函数的是(B)。
A.void~BaseB.~Base()C.~Base()constD.Base()
cin>>b.name >>b.author >>b.publish >>b.price ;
sq.Push_SeqStack(b);
}
cout<<"Print_SeqStack"<<endl;
sq.Print_SeqStack();
sq.Pop_SeqStack ();
cout<<"After Pop"<<endl;
14.友元的作用之一是(A)。
A.提高程序的运行效率B.加强类的封装性
C.实现数据的隐藏性D.增强成员函数的种类
15.n=15
16.s=10
17.
Constructing
10
Destructing
20
Destructing
思考题
1.定义一个学生类,学生信息有学号、姓名和成绩。成绩包括计算机、英语、数学成绩和平均分。要求利用队列实现学生的入队、出队和显示等功能。
intOut_SeQueue();
voidPrint_SeQueue();
};
//queue.cpp
#include"iostream"
usingnamespacestd;
#include"queue.h"
int_tmain(intargc, _TCHAR* argv[])
sq.Print_SeqStack();
return0;
}
Stack::Stack()
{
top=-1;
}
intStack::Push_SeqStack(datatype x)
{
if(top==MAXSIZE-1)
{
return(0);
}
else
{
top++;
data[top]=x;
return(1);
{
private:
datatype data[MAXSIZE];
inttop;
public:
Stack();
intPush_SeqStack(datatype x);
intPop_SeqStack();
voidPrint_SeqStack();
};
//stack.cpp
#include"iostream"
public:
void Ini_Stack();//初始化栈
void Push_Stack();//入栈
void Pop_Stack();//出栈
void Empty(); //判栈空
};
2.设计一个队列类,实现的操作有初始化队列、入队、出队、判队空。
解:
class Queue
{
private:
int front,rear;
constintMAXSIZE=5;//queue.h
structdatatype
{
longno;
charname[10];
floatscore;
};
classStudent
{
private:
datatype data[MAXSIZE];
intfront,rear;
intnum;
public:
Student();
7.C++支持多态性主要表现在哪些方面?
解:C++支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态性是通过重载来实现的,运行时的多态性是通过虚函数来实现的。
思考题
1.设计一个栈类,实现的操作有初始化栈、入栈、出栈、判栈空。
解:
class Stack
{
private:
int top;
int s[100];
}
2.定义一个图书类,图书信息有图书名称、作者、出版社、价格。要求利用栈实现图书的入库、出库和显示等功能。
constintMAXSIZE=5;//stack.h
structdatatype
{
charname[10],author[10],publish[20];
floatprice;
};
classStack
3.什么是封装性和继承性?
解:封装是面向对象方法的一个重要特点,即将对象的属性和行为封装在对象的内部,形成一个独立的单位,并尽可能隐蔽对象的内部细节。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
4.什么是多态性?
解:多态性是面向对象方法的重要特征。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
num--;
return1;
}
}
voidStudent::Print_SeQueue()
{
inti;
intnumber=num;
for(i=(front+1)%MAXSIZE;number>0;number--,i=(i+1)%MAXSIZE)
cout<<data[i].no <<" "<<data[i].name <<" "<<data[i].score <<endl;
第
1.什么是面向对象方法学?
解:面向对象方法学就是尽量模拟人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程,从而使描述问题的问题空间(即问题域)与实现解法的解空间(即求解域)在结构上尽可能一致。
2.什么是对象?它与传统的数据有何关系?有什么不同?
解:对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。它与传统数据有本质的不同,传统数据是被动地等待对它进行处理,对象是进行处理的主体。
private:
intX,Y;
};
classDistance
{
public:
floatfDist(Point a,Point b);
};
//point.cpp
5.关于构造函数的叙述正确的是(B)。
A.构造函数可以有返回值B.构造函数的名字必须与类名完全相同
C.构造函数必须带有参数D.构造函数必须定义,不能默认
6.关于析构函数特征描述正确的是(C)。
A.一个类中可以有多个析构函数B.析构函数名与类名完全相同
C.析构函数不能指定返回类型D.析构函数可以有一个或多个参数
{
Student sq;
inti;
for(i=1;i<=3;i++)
{
datatype stu;
cout<<"input no,name,score"<<endl;
cin>>stu.no >>stu.name >>stu.score ;
sq.In_SeQueue (stu);
}
cout<<"PrFra Baidu biblioteknt_SeQueue"<<endl;
12.下面关于友元函数的描述中,正确的说法是(A)。
A.友元函数是独立于当前类的外部函数
B.一个友元函数不能同时定义为两个类的友元函数
C.友元函数必须在类的外部定义
D.在外部定义友元函数时,必须加关键字friend
13.一个类的友元函数能够访问该类的(D)。
A.私有成员B.保护成员C.公有成员D.所有成员
usingnamespacestd;
#include"stack.h"
int_tmain(intargc, _TCHAR* argv[])
{
Stack sq;
inti;
for(i=1;i<=3;i++)
{
datatype b;
cout<<"input name,author,publish,price"<<endl;
int que[100];
public:
void Ini_Queue();//初始化队列
void In_Queue();//入队
void Out_Queue();//出队
void Empty(); //判队空
};
第
1.构造函数和析构函数的主要作用是什么?
解:构造函数的功能是在创建对象时,给数据成员赋初值,即对象的初始化。析构函数的功能是释放一个对象,在对象删除之前,用它来做一些内存释放等清理工作。
解:Visual C++6.0支持面向对象编程、可视化、模块化、代码可重用和组件共享等技术,可以大大提高软件系统的设计、管理和开发速度。Java语言是一种通用、并发、基于类的面向对象程序设计语言。Java语言具有简捷性、面向对象、分布式、健壮性、安全性、可移植性、解释型、高性能、多线程、动态性等特点。C#(读做“C sharp”)是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#集C语言的简洁强大、C++的面向对象、VB的图形化设计方法、Java的编译与执行机制等优点于一身。C#是创新性的新式编程语言,它巧妙地结合了最常用的行业语言和研究语言中的功能,并引入了多种潜在的新功能,提高了开发人员在语言构造方面的效率,将快速的应用程序开发与对底层平台各种功能的访问紧密结合在一起,使得程序员能够在.NET平台上快速开发各种应用程序。
4.什么是静态数据成员?静态数据成员的定义和初始化方法是什么?
解:类的静态数据成员拥有一块单独的存储区,不管用户创建了多少个该类的对象,所有这些对象的静态数据成员都共享这一块静态存储空间,是这些对象互相通信的一种方法。
静态数据成员的定义格式:static类型名静态成员名;
静态数据成员的初始化格式:类型类名∷静态数据成员=初始化值;
{
if(num==MAXSIZE)
{
return(-1);
}
else
{
rear=(rear+1)%MAXSIZE;
data[rear]=x;
num++;
return(1);
}
}
intStudent::Out_SeQueue()
{
if(num==0)
{
return-1;
}
else
{
front=(front+1)%MAXSIZE;
sq.Print_SeQueue ();
sq.Out_SeQueue ();
cout<<"After Out_SeQueue "<<endl;
sq.Print_SeQueue ();
return0;
}
Student::Student()
{
front=rear=MAXSIZE-1;
num=0;
}
intStudent::In_SeQueue(datatype x)
int age;//年龄
float fGrade;//成绩
public:
void Input();//输入学生信息
void Print();//输出学生信息
void Insert();//插入学生信息
void Del(); //删除学生信息
void Find(); //查找学生信息
};
6.目前常用的面向对象程序设计语言有哪些?各有哪些特点?
2.什么是this指针?它的主要作用是什么?
解:this指针称为自引用指针。每当对象调用成员函数时,系统就将该对象的地址赋给this指针,这时C++编译器将根据this指针所指向的对象来确定应该引用哪一个对象的数据成员。
3.什么是友元函数?
解:友元函数不是当前类中的成员函数,它可以是一个不属于任何一个类的一般函数(即非成员函数),也可以是另外一个类的成员函数。
}
3.有Distance类和Point类,将Distance类定义为Point类的友元类来实现计算两点之间距离。
//point.h
classDistance;
classPoint
{
public:
Point(intxx=0,intyy=0)
{
X=xx;
Y=yy;
}
friendclassDistance;
10.this指针是C++实现(B)的一种机制。
A.抽象B.封装C.继承D.重载
11.已知类中的一个成员函数说明为:void Set(X &a)其中,X &a的含义是(C)。
A.指向类X的指针为a
B.将a的地址赋给变量
C.a是类X的对象引用,用来作为Set()的形参
D.变量X与a按位与作为函数Set()的形参
5.试写出学生管理系统中所涉及的类(属性和方法)。学生管理系统中学生信息有:姓名、学号、年龄、成绩;学生管理系统完成学生信息输入、学生信息输出、插入学生信息、删除学生信息、查找学生信息。
解:
class Student
{
private:
char cName[12];//姓名
long lNum;//学号
}
}
intStack::Pop_SeqStack()
{
if(top==-1)
{
return0;
}
else
{
top--;
return1;
}
}
voidStack::Print_SeqStack()
{
inti;
for(i=0;i<=top;i++)
cout<<data[i].name<<" "<<data[i].author<<" "<<data[i].publish<<" "<<data[i].price<<endl;
7.构造函数是在(B)时被执行的。
A.程序编译B.创建对象C.创建类D.程序装入内存
8.定义A是一个类,那么执行语句“A a, b(3),*p;”调用了(A)次构造函数。
A.2B.3C.4D.5
9.在下列函数原型中,可以作为类Base析构函数的是(B)。
A.void~BaseB.~Base()C.~Base()constD.Base()
cin>>b.name >>b.author >>b.publish >>b.price ;
sq.Push_SeqStack(b);
}
cout<<"Print_SeqStack"<<endl;
sq.Print_SeqStack();
sq.Pop_SeqStack ();
cout<<"After Pop"<<endl;
14.友元的作用之一是(A)。
A.提高程序的运行效率B.加强类的封装性
C.实现数据的隐藏性D.增强成员函数的种类
15.n=15
16.s=10
17.
Constructing
10
Destructing
20
Destructing
思考题
1.定义一个学生类,学生信息有学号、姓名和成绩。成绩包括计算机、英语、数学成绩和平均分。要求利用队列实现学生的入队、出队和显示等功能。