c++类与对象实验作业
![c++类与对象实验作业](https://img.360docs.net/img92/04e2b6a5fn6nkrx83qdn-21.webp)
![c++类与对象实验作业](https://img.360docs.net/img92/04e2b6a5fn6nkrx83qdn-52.webp)
实验二类和对象
实验目的
学习类的定义、实例化的方法,
学习使用构造函数和析构函数
学习类成员访问控制的运用
学习new和delete运算符的运用
学习使用静态成员
了解用多个文件组建工程的方法
进一步熟悉Visual C++的编译连接错误,掌握Visual C++调试工具
实验内容
1. 链表类LinkList
[实现要求]
(1)链表元素的空间是动态申请的。
(2)在链表类的构造函数中初始化链表,在链表类的析构函数中释放链表所有元素的空
间。
(3)链表类用单独的文件“linklist.cpp”实现,链表类的定义放在一个头文件“linklist.h”
中,主文件名为“mian.cpp”。具体步骤如下:
1)新建一个项目,命名为“linklist”
2)用File|New创建一个新的”C++ Source File”,命名为main.cpp
3)用File|New创建一个新的”C++ Source File”,命名为linklist.cpp
4)用File|New创建一个新的”C/C++ Header File”,命名为linklist.h
5)在main.cpp和linklist.cpp 中包含进头文件:#include “linklist.h”
(4)链表类中元素为整数,并具有以下功能:
void putTail (int newData); //在表尾加入一个新元素
void putHead (int newData); //在表头插入一个新元素
int getHead (void); //从表头取出一个元素,并释放该结点
int peekHead(void) ; //查看表头元素的值,假定链表至少有一个元素
bool empty ( ); //检查链表是否空
int getElemCount() ; //取链表元素个数
bool是C++定义的数据类型,它其实是一种整数类型。具有bool类型的变量只有两种值:true或false。一个条件表达式返回的值就是bool类型的。如表达式i!=0在i的值为0时返回false,在不为0时返回true。
Linklist.h:
#include
class node{
public:
int data;
node *next;
};
class LinkList
{
protected:
int count; //链表中元素的个数
static int Lnumber; //链表个数
node * dataLinkHead, * dataLinkTail; //表头、表尾指针
public:
LinkList() //构造函数
{
dataLinkHead=dataLinkTail=NULL;
count=0;
Lnumber++;
}
void del()
{
while(dataLinkHead)
{ node *temp=dataLinkHead;
dataLinkHead=dataLinkHead->next;
delete temp;
count=0;
}
}
~LinkList() //析构函数
{
del();
Lnumber--;
}
void putTail (int newData); //在表尾加入一个新元素
void putHead (int newData); //在表头插入一个新元素
int getHead (void); //从表头取出一个元素,并释放该结点
int peekHead(void); //查看表头元素的值,假定链表至少有一个元素
bool empty (); //检查链表是否空
int getElemCount(); //取链表元素个数
static int getListNumber(); //取列表个数
};
Linklist.cpp:
#include "linklist.h"
int LinkList::Lnumber=0;
void LinkList::putTail (int newData)
{
//建立一个新的结点
node *pNew=new node;
if(pNew==NULL)
{
return;
}
pNew->data=newData;
pNew->next=NULL;
if(dataLinkTail==NULL)
dataLinkHead=dataLinkTail=pNew;
else {
dataLinkTail->next = pNew;
dataLinkTail = pNew;
}
count++;
}
int LinkList:: getHead (void)
{
int n;
if(count==0)
return 0;
else {
n=dataLinkHead->data;
node *temp=dataLinkHead;
dataLinkHead=dataLinkHead->next;
delete temp;
}
count--;
return n;
}
void LinkList::putHead (int newData)
{
node *pNew = new node;
if (pNew == NULL)
{
return;
}
pNew->data = newData;
if(dataLinkHead!=NULL)
{
pNew->next =dataLinkHead;
dataLinkHead=pNew;
}
else
{
pNew->next = NULL;
dataLinkHead = dataLinkTail=pNew;
}
count++;
}
int LinkList:: peekHead(void)
{
return dataLinkHead->data;
}
int LinkList:: getElemCount()
{
return count;
}
bool LinkList::empty()
{
if(dataLinkHead==dataLinkTail==NULL)
return true;
else
return false;
}
int LinkList::getListNumber()
{
return Lnumber;
}
Main.cpp:
#include
#include "linlist.h"
void main() {
LinkList l1,l2,l3;
LinkList *l4,*l5;
cout << "Total LinkList:" << LinkList::getListNumber() << endl;
l4 = new LinkList;
l5 = new LinkList;
cout << "Total LinkList:" << LinkList:: getListNumber() << endl;
delete l4;
cout << "Total LinkList:" << LinkList:: getListNumber() << endl; delete l5;
l1.putTail(1);
l2.putTail(2);
l3.putTail(3);
}
C++实验报告 第四章 类与对象
C++实验报告 实验4 类与对象 一、实验目的 1、掌握类的声明和使用 2、掌握类的声明和对象的声明 3、复习具有不同访问属性的成员的访问方式 4、观察构造函数和析构函数的执行过程 5、学习类的组合使用方法 6、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序 二、实验任务 1、声明一个CPU类,包含等级rank、频率frequency、电压voltage等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU-Rank,声明为enum CPU-Rank{P1=1,P2,P3,P4,P5,P6,P7}, frequency为MHz的整数型,voltage为浮点型的电压值。观察构造函数好析构函数的调用顺序。 2、声明一个简单的Computer类,有数据成员芯片cpu、内存ram、光驱cdrom 等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM 类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 3、设计一个用于人事管理的People类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number编号、sex性别、birthday出生日期、id身份证号等。其中出生日期声明为一个日期类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内嵌成员函数、组合。 三、实验内容 任务1:首先声明枚举类型,在这里出现了知识性错误,不清楚具体应如何声明,经查询相关书籍,知道应在类外进行声明。初次用类来进行编程,在概念上是有一些混乱的,例如构造函数和析构函数的调用顺序等。在用debug单步调试后,明白其中道理。 源程序: //Lab4_1.cpp #include
实验3 类和对象
实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.360docs.net/doc/9a2819133.html,); error!! } } class Account { private String account; private String name; private String address; private double balance;
C++实验九类和对象的使用实验报告
实验九类和对象的使用实验报告 一实验目的 1、学会用构造函数对类对象进行初始化 2、掌握析构函数,并了解构造函数和析构函数的调用顺序 3、了解对象数组和对象指针的用法 4、学会共用数据的保护,了解常对象、常成员函数等的使用限制 二实验内容和要求 1.回顾课本知识,掌握重点和难点,认真分析例题熟悉本章内容。 2.完成本章课后习题2、6、7题,认真分析每一题的代码。 三实验环境 Visual C++6.0开发环境 四源程序 2、 #include
Date::Date() { month=1; day=1; year=2005; } void Date::display() { cout< 实验报告_实验3 类与对象(学生学号_姓 名) 一、实验目的 1.熟悉类的组成,掌握类的声明方法; 2.理解构造方法的作用,并掌握构造方法的定义; 3.熟练使用访问器和设置器实现信息隐藏和封装; 4.熟悉一般方法、构造方法的重载; 5.能够正确地区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用;6.掌握对象的创建、引用和使用及向方法传递参数的方式; 7.掌握this关键字的使用以及对象数组的创建和访问; 8.掌握Java包的创建、包成员的各种访问方式; 9.掌握一维数组:声明,创建,初始化,数组元素的访问; 10.掌握多维数组的概念:二维数组的声明,初始化,元素的访问。 二、实验内容与步骤 1.请回答下列问题: (1)Cirecle类定义了几个属性?它们的类型、访问权限各为什么? 答:两个PI,floatl类型,静态私有权限 Radius,float;类型,私有权限 (2)类中的“PI”的值可以在程序的方法中更改吗? 答:不可以,因为PI为静态变量 (3)Cirecle类定义了几个方法?它们的访问权限怎样? 答:四个,getRadius(),setRadius(float radius),getPerimeter(),getArea()都是公有权限 2.写出Rectangle类的程序代码: class Rectangle { private float width; private float length; public float getWidth( ) //获取矩形宽度 {return width;} public float getLength( ) //获取矩形长度 {return length;} public float getPerimeter( ) //获取矩形周长 {return 2*(width+length);} public float getArea( ) //获取矩形面积 {return (width*length);} public void setWidth(float w) //设置矩形宽度 {width=w;} public void setLength(float l) //设置矩形长度 {length=l;} } 3.回答下列问题: (1)该程序中有几个类?主类是什么?如果将这两个类放在一个文件中,源程序文件名应是什么?答:两个类:Circle、CircleTest;主类是CircleTest;源程序文件名是CircleTest。 实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。 4.使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。 5.在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,在成员函数中,构造函数用来初始化所有数据成员;display()中使用cout显示实验报告_实验3 类与对象
C上机实验报告实验四
C++实验二类与对象(附答案)