当前位置:文档之家› C 实验二 类与对象(附答案).

C 实验二 类与对象(附答案).

C   实验二 类与对象(附答案).
C   实验二 类与对象(附答案).

实验二类与对象

实验目的和要求

1.掌握类、类的数据成员、类的成员函数的定义方式。

2.理解类成员的访问控制方式。

3.掌握对象的定义和操作对象的方法。

4.理解构造函数和析构函数的定义与执行过程。

5.掌握重载构造函数的方法。

6.了解拷贝构造函数的定义方法。

实验内容

1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。#include

class Aa

{

public:

Aa(int i=0)

{

a=i;

cout<<"Constructor "<

}

~Aa()

{

cout<<"Destructor "<

}

void print()

{

cout<

}

private:

int a;

};

int main()

{

Aa al(1),a2(2);

al.print();

cout<

return 0;

}

2.检查下面的程序,找出其中的错误,并改正。然后上机调试,使程序能正常运行。

(1)

#include

class Date

{

void set_date();

void show_date();

int year;

int month;

int day;

};

Date d;

int main()

{

set_date();

show_date();

}

void set_date()

{

cin>>d.year;

cin>>d.month;

cin>>d.day;

}

void show_date()

{

cout<

(2)

#include

class A

{

public:

void A(int i=0)

{

m=i;

}

void show()

{

cout<

}

void ~A(){}

private:

int m;

};

int main()

{

A a(5);

a.m+=10;

a.show();

return 0;

}

(3)

#include class X

{

private:

int a=0;

int &b;

void setA(int i)

{

a=i;

}

X(int i)

{

a=i;

}

public:

int X()

{

a=b=0;

}

X(int i,int j)

{

a=i;

b=j;

}

void setC(int k)

{

c=c+k;

}

};

void main()

{

X x1;

X x2(2);

X x3(1,2);

x1.setA(3);

}

3.调试下列程序。

#include

class TPoint

{

private:

int X,Y;

public:

TPoint(int x,int y)

{

X=x;

Y=y;

cout<<"Constructor is called"<

}

TPoint(TPoint &p);

~TPoint()

{ cout<<"Destructor is called"<

int getx()

{ return X; }

int gety()

{ return Y; }

};

TPoint::TPoint(TPoint &p)

{

X=p.X;

Y=p.Y;

cout<<"Copy-initialization Constructor is called"<

}

void main()

{

TPoint p1(4,9);

TPoint p2(p1);

TPoint p3 = p2;

cout<<"p3=("<

}

(1)写出程序的输出结果,并解释输出结果。

(2)按下列要求进行调试:

在主函数体内,添加下列说明语句:

TPoint p4,p5(2);

调试程序会出现什么现象?为什么?如何解决?(提示:对已有的构造函数进行适当修改)结合运行结果分析如何使用不同的构造函数创建不同的对象。

(3)在主函数内使用new创建不同参数动态两个动态对象,输出其坐标,并用delete 删除之。运行程序,分析运行结果。

(4)在程序中定义个全局对象,在主函数最前添加语句:

cout<<"Enter main"<

运行程序,分析运行结果。

4.完善程序,并写出运行结果

根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。

如果某个自然数除了1和它本身外还有其他因子,则这个自然数就是合数(非素数)。试定义一个类NUM,从3开始向上试探找出n个连续的自然数,且它们都是合数。当找到第一组连续的n个合数后,即停止查找。

具体要求如下:

(1)私有成员

int n : 存放满足条件的连续自然数的个数。

int *p: 根据n的值申请一个动态数组用来存放求出的满足条件的n个自然数。

(2)公有成员函数

NUM(int n1): 构造函数,用n1初始化n,根据n的值申请动态数组空间,使p指向该动态数组空间。

int yes(int x): 判断x是否为合数。如果是,返回1,否则返回0。

void fun(): 从3开始向上试探找出n个连续的自然数,且它们都是合数,并依次存入动态数组。

void print(): 输出满足条件的n个合数。

~NUM(): 析构函数,释放动态数组所占用的存储空间。

(3)在主函数中定义一个NUM类的对象num,求出10个连续的合数。然后通过对象num调用成员函数求出10个连续的合数,并输出计算结果。

#include

class NUM

{ //定义数据类NUM

private:

int n;

int *p;

public:

NUM(int n1)

{

n=n1;

p= ; //动态分配存放连续合数的存储空间

}

int yes(int x)

{

for(int i=2;i<=x/2;i++)

if (x%i==0)

return 1;

return 0;

}

void fun(void)

{

int j;

for(int i=3;1;i++)

{

j=0;

while( &&j

{

p[j]=i;

j++;

i++;

}

if(j==n)

break;

}

}

void print(void)

{

cout<<"找到的"<

for(int i=0;i

cout<

cout<

}

~NUM()

{

; //释放在构造函数中申请的存储空间

}

};

void main()

{

cout<<"请输入要求的连续合数的个数(例如10):";

int n;

cin>>n;

NUM num(n);

; //寻找连续的合数,并存入动态申请的存储空间中

; //输出寻找到的合数

}

5.请定义一个矩形类(Rectangle),私有数据成员为矩形的长度( len)和宽度(wid),缺省构造函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长、求矩形面积、取矩形长度和宽度、修改矩形长度和宽度为对应形参的值、输出矩形尺寸等公有成员函数。要求输出矩形尺寸的格式为“length:长度,width:宽度”。编写主函数对定义的类进行测试。

6.声明一个时间类,时间类中有3个私有数据成员(Hour,Minute,Second)和两个公有成员函数(SetTime和PrintTime)。SetTime根据传递的3个参数为对象设置时间;PrintTime负责将对象表示的时间显示输出,输出格式为“Hour:Minute:Second”。

(1)在主函数中,建立一个时间类的对象,设置时间为9点20分30秒并显示该时间。

(2)使用构造函数代替上面的SetTime成员函数,并在主函数中使用构造函数设置时间为10点40分50秒,并显示该时间。

(3)重载时间类的构造函数(不带参数)使小时、分、秒均为0。

(4)在时间类的析构函数中输出"Good bye!”

(5)定义拷贝构造函数并调用。

7.下面是一个整型链表类intList的声明,请给出该类所有数据成员的类外定义,并在主函数中测试该类。

class intList

{

protected:

struct Node

{

int data;

Node *next;

};

Node *L;

public:

intList(); //构造函数

~intList(); //析构函数

bool Insert(int i,int elem);

bool Remove(int i,int &elem);

//删除链表的第i个位置的元素,删除成功返回true,失败返回false

int Find(int elem);

//在链表中查找值为elem的元素,找到返回该元素在链表中的位置,否则返回0

int Length(); //返回链表长度(元素个数)

void PrintList(); //输出链表

};

参考答案(非权威,仅仅是我自己的理解,如有错误,欢迎批评指正!)

第一题:

#include

class Aa

{

public:

Aa(int i=0)

{

a=i;

cout<<"Constructor "<

}

~Aa()

{

cout<<"Destructor "<

}

void print()

{

cout<

}

private:

int a;

};

int main()

{

Aa al(1),a2(2);

al.print();

a2.print();

return 0;

}

第二题

(1)

#include

class Date

{

public:

void set_date();

void show_date(); private:

int year;

int month;

int day;

};

Date d;

int main()

{

d.set_date();

d.show_date();

return 0;

}

void Date::set_date()

{

cin>>year;

cin>>month;

cin>>day;

}

void Date::show_date()

{

cout<

(2)

#include

class A

{

public:

A(int i=0)

{

m=i;

}

void show()

{

cout<

}

~A(){}

friend void add(A &); private:

int m;

};

void add(A &a)

{

a.m+=10;

}

int main()

{

A a(5);

add(a);

a.show();

return 0;

}

#include class X

{

private:

int a,b,c; public:

X(int i)

{

a=i;

}

X()

{

a=b=0;

}

X(int i,int j)

{

a=i;

b=j;

}

void setC(int k)

{

c=c+k;

}

void setA(int i)

{

a=i;

}

};

void main()

{

X x1;

X x2(2);

X x3(1,2);

x1.setA(3);

}

(1)

void main()

{

TPoint p1(4,9); //调用构造函数初始化p1

TPoint p2(p1); //显示调用拷贝构造函数初始化p2

TPoint p3 = p2; //对象之间的赋值,由于之前没有定义p3,因此用另一个同类的对象给其赋值时,会调用拷贝构造函数。

cout<<"p3=("<

}

(2)

答:调试程序会程序错误,原因是对于无输入的对象和只要一个输入值的对象没有相应的构造函数,要解决也挺简单,就是在说明部分加上相应的构造函数就可以了。

修改后的程序如下:

#include

class TPoint

{

private:

int X,Y;

public:

TPoint()

{

X=Y=0;

cout<<"A Constructor is called"<

}

TPoint(int i)

{

X=i;

Y=0;

cout<<"B Constructor is called"<

}

TPoint(int x,int y)

{

X=x;

Y=y;

cout<<"Constructor is called"<

}

TPoint(TPoint &p);

~TPoint()

{ cout<<"Destructor is called"<

int getx()

{ return X; }

int gety()

{ return Y; }

};

TPoint::TPoint(TPoint &p)

{

X=p.X;

Y=p.Y;

cout<<"Copy-initialization Constructor is called"<

}

void main()

{

TPoint p1(4,9);

cout<<"p1=("<

TPoint p2(p1);

cout<<"p2=("<

TPoint p3 = p2;

cout<<"p3=("<

TPoint p4,p5(2);

cout<<"p4=("<

cout<<"p5=("<

(3)

#include

class TPoint

{

private:

int X,Y;

public:

TPoint(int x,int y)

{

X=x;

Y=y;

cout<<"Constructor is called"<

}

TPoint(TPoint &p);

~TPoint()

{

cout<<"Destructor is called"<

}

int getx()

{ return X; }

int gety()

{ return Y; }

};

TPoint::TPoint(TPoint &p)

{

X=p.X;

Y=p.Y;

cout<<"Copy-initialization Constructor is called"<

}

void main()

{

TPoint *p1=new TPoint(4,9);

cout<<"p1=("<getx()<<","<gety()<<")"<

delete p1;

}

(4)

#include

class TPoint

{

private:

int X,Y;

public:

TPoint(int x,int y)

{

X=x;

Y=y;

cout<<"Constructor is called"<

}

TPoint(TPoint &p);

~TPoint()

{

cout<<"Destructor is called"<

}

int getx() { return X; }

int gety() { return Y; }

void ShowPoint()

{

cout<<"p1=("<

}

};

TPoint::TPoint(TPoint &p)

{

X=p.X;

Y=p.Y;

cout<<"Copy-initialization Constructor is called"<

void main()

{

cout<<"Enter main"<

TPoint *p1=new TPoint(4,9);

p1->ShowPoint();

delete p1;

}

第四题:

#include

class NUM

{ //定义数据类NUM

private:

int n;

int *p;

public:

NUM(int n1)

{

n=n1;

p=new int[n]; //动态分配存放连续合数的存储空间

}

int yes(int x)

{

for(int i=2;i<=x/2;i++)

if (x%i==0) return 1;

return 0;

}

void fun(void)

{

int j;

for(int i=3;1;i++)

{

j=0;

while(yes(i)&&j

{

p[j]=i;

j++;

i++;

}

if(j==n) break;

}

}

void print(void)

{

cout<<"找到的"<

for(int i=0;i

cout<

cout<

}

~NUM()

{

if(p) delete[]p; //释放在构造函数中申请的存储空间

}

};

void main()

{

cout<<"请输入要求的连续合数的个数(例如10):";

int n;

cin>>n;

NUM num(n);

num.fun(); //寻找连续的合数,并存入动态申请的存储空间中

num.print() ; //输出寻找到的合数

}

第五题:

#include

class Rectangle

{

private:

int len,wid;

public:

Rectangle()

{

len=wid=0;

cout<<"First Constructor is called"<

}

Rectangle(int i,int w)

{

len=i;

wid=w;

cout<<"Second Constructor is called"<

}

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 using namespace std; enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7}; class CPU { //CPU类的定义 private: //私有数据成员 CPU_Rank rank; int frequency;

实验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.doczj.com/doc/ab11327574.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 using namespace std; class Date { public: Date(int,int,int); Date(int,int); Date(int); Date(); void display(); private: int month; int day; int year; }; Date::Date(intm,intd,int y):month(m),day(d),year(y) {} Date::Date(intm,int d):month(m),day(d) {year=2005;} Date::Date(int m):month(m) { day=1; year=2005; }

Date::Date() { month=1; day=1; year=2005; } void Date::display() { cout< using namespace std; class Student { public: Student(intn,float s):num(n),score(s) {}; void change(intn,float s) { num=n; score=s; } void display() { cout<

实验2 类和对象(一)

实验2 类和对象(一) 1、实验目的 (1)掌握声明类的方法,类和类的成员的的概念以及定义对象的方法。 (2)初步掌握用类和对象编制基于对象的程序。 (3)学习检查和调试基于对象的程序。 2、实验内容 (1)有以下程序: #include using namespace std; class Time //定义Time类 {public: //数据成员为公用的 int hour; int minute; int sec; }; int main( ) { Time t1; //定义t1为Time类对象 cin>>t1.hour; //输入设定的时间 cin>>t1.minute; cin>>t1.sec; cout<

C上机实验报告实验四

实验四数组、指针与字符串 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显示

实验一 类和对象

实验一类和对象 Visual C++ 6.0集成开发环境的使用: Visual C++系列产品是微软公司推出的一款优秀的C++集成开发环境,其产品定位为Windows 95/98、NT、2000 系列Win32 系统程序开发,由于其良好的界面和可操作性,被广泛应用。由于2000 年以后,微软全面转向.NET 平台,Visual C++6.0 成为支持标准C/C++规范的最后版本。 1.启动 安装完系统后,可以选择如下两种方式启动 1) 点击Windows “开始”菜单,选择“程序”菜单下“Microsoft Visual Studio 6.0”子菜单下的快捷方式Microsoft Visual C++ 6.0 启动Visual C++ 6.0。 2) 点击Windows “开始”菜单,选择“运行”,输入msdev,即可启动。启动后的界面如下: 图 1 启动界面 2.建立工程

选择“File”菜单下的“New”菜单项或直接按Ctrl+N,启动新建向导,如图2 所示: 图 2 新建向导 选择在“Projects”属性页选择Win32 Console Application,在Project Name 中输入项目名称demo,在Location 中选择项目文件,如图2 中c:\test\demo,项目所有文件将保存在此文件。输入完毕,单击确定按钮,进入下一界面如图3:

图 3 项目类型向导 在图 3 所示界面中选择a simple application,然后点击Finish 按钮,系统显示图4 所示界面。如果想退回上一步可以选择“Back”按钮。 图 4 项目信息 在图 4 中选择OK 按钮,系统完成项目的创建,并保存项目相关的信息。项目的目录结构如图5 所示。 1) Demo.dsw 是项目工作区文件,双击此文件,即可打开此项目; 2) Demo.dsp 为项目文件; 3) demo.cpp 是项目中的一个源程序;stdafx.h 和stdafx.cpp 为自动创建的源程序,一般不用修改。 图 5 目录结构

C++语言程序设计实验答案_类与对象

实验04 类与对象(6学时) (第4章类与对象) 一、实验目的 二、实验任务 4_1 声明一个CPU类。 包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 4_2 声明一个简单的Computer类。 有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 4_3 声明一个表示时间的结构体。 可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。

4_4(习题4-10)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、内联成员函数、组合。 三、实验步骤 1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。 首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:。(程序见步骤2) ★程序的运行结果: 2.(示例)调试程序文件。 使用调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下: 操作)调试操作步骤如下: (1)单击“调试 | 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS 窗口出现,此时Visual Studio中光标停在main()函数的入口处。

实验一.类与对象实验报告

浙江理工大学信息学院 面向对象程序设计实验报告 实验名称:类的定义与使用学时安排:3 实验类别:设计性实验实验要求:1人1组姓名:邵旸珂学号:2016329621068  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的 1)掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性; 2)掌握类对象的定义; 3)理解类的成员的访问控制的含义,公有、私有和保护成员的区别; 4)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数; 二、实验原理介绍 通过建立类及对象,用类的成员函数和对象访问类的成员; 利用建立类的构造函数,完成类的成员的初始化工作; 三、实验设备介绍 软件需求: windows或linux下的c++编译器 硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU

处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。 四、实验内容 编写一个程序,模拟电梯的功能。功能接口包括电梯上行按钮、下行按钮、楼层选择和电梯在行驶过程中的楼层显示。 要求: 1.由用户选择按上行按钮还是下行按钮,选择操作后再由用户输入要进入的楼层,进而电梯开始运行,显示所到的每一楼层层数。 2.如果是上行,则选择输入的楼层号不能比当前楼层号小,否则应给出不合法提示。 3. 如果是下行,则选择输入的楼层号不能比当前楼层号大,否则应给出不合法提示。 4.电梯一旦开始运作就会始终运行,直到窗口关闭。 5.电梯在经过不同楼层时,最好每个楼层的显示之间能有延迟,最终停靠的楼层的输出形式能更加醒目。如果可以,在电梯最初开始运行时,能在电梯由内部显示当前日期(提示:实现这些功能时,需要调用系统api,实现时间显示功能可以使用CDate类)。 五程序清单 #include #include #include using namespace std;

C++实验二类与对象(附答案)

实验二类与对象 实验目的和要求 1.掌握类、类的数据成员、类的成员函数的定义方式。 2.理解类成员的访问控制方式。 3.掌握对象的定义和操作对象的方法。 4.理解构造函数和析构函数的定义与执行过程。 5.掌握重载构造函数的方法。 6.了解拷贝构造函数的定义方法。 实验容 1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。#include class Aa { public: Aa(int i=0) { a=i; cout<<"Constructor "<

(1) #include class Date { void set_date(); void show_date(); int year; int month; int day; }; Date d; int main() { set_date(); show_date(); } void set_date() { cin>>d.year; cin>>d.month; cin>>d.day; } void show_date() { cout< class A { public: void A(int i=0) { m=i; } void show() { cout<

C++类和对象实验报告

计算机科学与技术实验报告 实验二类和对象(1) 姓名:易XX 班级:计科二班学号:2015110121 实验目的:深入理解类和对象,学会定义类,申明私有、公有变量,学会定义对象,并调用成员函数,解决实际问题。 实验内容: (一)、题目要求: 定义一个描述角度的类CAngle,包含的内容如下: (1)私有成员变量value,表示角度,类型为double; (2)公有成员变量SetValue,实现功能是使用形参为value赋值。 声明为:viod SetValue(double); (3)公有成员函数GetCos,实现功能计算余弦值,并作为返回值返回。 声明为 double GetCos(); 编程实现如下功能:定义一个Cangle类的对象deg,调用成员函数设置deg的角度为30度,调用成员函数计算并输出deg的余弦值。 代码: #include #include using namespace std; #define PI 3.1415 //定义宏常量PI class CAngle{ double value; //定义角度 public: void Setvalue(double x){ value =x/180*PI; //把角度转化为弧度 } double Getcos(){ return ( cos(value) ); //计算cos值 } }; int main(){ CAngle deg; //定义一个Cangle类的对象deg deg.Setvalue(30); cout<

实验报告4类与对象

实验名称:类与对象 一.实验目的: (1)理解C#语言是如何体现面向对象编程基本思想; (2)掌握类对象的定义; (3)了解类的封装方法,以及如何创建类和对象; (4)了解成员变量和成员方法的特性; (5)掌握静态成员的用法; (6)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数; (7)掌握参数传递的用法; (8)掌握属性的作用和使用。 二.上机内容: 1)创建MyDataTime类,熟悉构造函数、析构函数的定义方法、属性的定义方法以及一般方法的定义过程。 (2)创建Fraction类,掌握运算符重载、静态方法的使用及其与实例方法的区别。(3)创建Swap类,掌握C#方法中参数的传递。 (4)整理上机步骤,总结经验和体会。 (4)完成实验报告。 四.上机步骤: 类的创建与应用: 创建一个MyDataTime类,要求如下: (1)私有字段:year,month,day; (2)属性:Year,Month,Day。注意在定义Month和Day的settor时要检验设置值的有效性,其中,,同时在对Day进行设置的时候要注意闰年和平 年的2月的天数。 (3)方法:构造函数:根据需求确定不同参数列表的构造方法。 析构函数:提示析构对象。 PrintMyDataTime:以“2011/4/24”、“2011年4月24日”、“2011.4.24”、“二〇一一年四月二十四日”的形式输出Year,Month和Day。 using System; using ; namespace ConsoleApplication1 { class MyDataTime { private int year; public int Year { set { year = value; } get { return year; }

实验二 类和对象的使用_参考答案

实验二类和对象的使用 班级:学号:姓名:成绩: 一.实验目的 1.掌握类和对象的概念、定义和使用方法。 2.掌握不同特性对象成员的访问方法。 二.使用的设备和仪器 计算机+Windows XP +Visual C++6.0 三.实验内容及要求 1.定义一个Book类,在该类定义中包括以下数据成员和成员函数: 数据成员:bookname(书名)、price(价格)、number(存书数量) 成员函数:set()输入图书信息;display()显示图书的情况;borrow()将存书数量减1,并显示当前存书数量;restore()将存书数量加1,并显示当前存书数量。 在主函数中,要求创建某一图书对象,并对该图书进行简单的显示、借阅和归还等管理。 2.定义一个中国好声音歌手类。其中,包括每个歌手的名字、年龄、来自哪个省份、所唱的曲目等。可以实现报名、显示、修改等功能。 3.定义一个时间类,实现课堂中第五节中的例2.2。 数据成员:时、分、秒 成员函数:输入时间、设置时间、按12小时制显示时间、按24小时制显示时间、增加1小时、减少1小时等功能。 4.定义一个学生类Student,要求如下: (1)数据成员包括学号、姓名、数学成绩、英语成绩和C++成绩;要求对所输入的成绩的合法性进行判断。 成员函数包括:设置学生的信息函数;输入学生的信息函数;输出学生的信息函数; 计算学生平均成绩的函数。 (2)添加新的数据成员:出生年月日;实现多个学生信息的添加、成绩的修改(一次只能修改一科成绩)等功能。要求单独定义一个日期类,并对所输入的出生年月日的合法性进行判断。 (3)设计一个菜单函数。 ****************************************************************** * * * 1.添加 2.设置 3.显示 4.修改成绩 5.计算平均分0.退出* * *

实验二 类与对象

实验二类与对象 一、实验目的 1、学习类与对象的定义,掌握类与对象的使用方法。 2、学习数据成员与成员函数的访问方式,理解构造函数和析构函数的定义与执行过程,学会构造函数的重载方法。 3、掌握数组与指针的定义与使用方法,理解数组与指针的存储分配与表示。 4、掌握用指针和引用向函数传递参数。 5、掌握静态数据成员和静态成员函数的使用。 6、理解友元与友元函数的作用与使用方法。 二、实验内容 1、下面是一个计算器类的定义,请完成该类成员函数的实现。 class Counter { public: Counter(int number); void increment(); //给原值加1 void decrement(); //给原值减1 int getValue(); //取得计数器值 int print(); //显示计数 private: int value; }; #include class count { public: counter(int number); void increment(); void decrement(); int getvalue(int); int print();

private: int value; }; void count::increment() { int a=value+1; } void count::decrement() { int b=value-1; } int count::getvalue(int s) { value=s; return 0; } int count::print() { cout<

cout<<"Copy initianization constructor is called."< class Date{ public: void printDate(); //显示日期 void setDay(int); //设置日的值 void setMonth(int); //设置月的值 void setYear(int); //设置年的值

实验二-类与对象(二)

实验二-类与对象(二)

实验三类与对象(2) 【实验类型】验证性实验【实验课时】2学时 【实验目的】 (1)掌握对象数组定义与使用方法。 (2)理解对象指针的概念,学会用指针引用对象。 (3)了解this指针的工作方式。 (4)掌握静态数据成员和静态成员函数的基本使用方法。 (5)理解友元与友元函数的作用,掌握其使用方法。 【实验环境】 硬件:计算机 软件:Microsoft Visual C++ 6.0 【实验内容】 1、按要求阅读、修攺、调试和运行以下程序。 (1)实验内容 ① 定义一个类Stock,记录一支股票交易的基本信息,信息包括交易日序号(表示本月的第几个交易日,用整数表示)、当日最高价、当日

最低价、当日开盘价和当日收盘价。尽量发挥想象力,为该类设计成员函数。 ② 在主函数中建立两个股票对象,分别存储该股票昨天和今天两天的信息,以当日收盘价计算该股票今天的涨幅。 ③ 使用股票类Stock,定义一个对象数组存放连续5个交易日的股票信息。编写一个主函数,计算两个Stock对象(前后两日)的当日收盘价计算当日涨幅。用指针引用对象数组中的两个对象。在主函数中调用该函数计算从第2个交易日开始每天的当日涨幅。 ④ 在Stock类中定义一个静态数据成员,记录当前Stock对象的数量。 ⑤ 设计一个成员函数Assign_stock为对象赋值,其中的形式参数是对另一个Stock对象的引用,使用this指针避免对自己的赋值,在主函数中显示用Assign_stock赋值的对象。 ⑥ 定义一个友元函数计算Stock对象的当日开盘价是否高于当日收盘价。若是,返回真,否则,返回假。 (2)实验程序及运行结果(参考) ①以当日收盘价计算该股票今天的涨幅

实验二类和对象

实验二类和对象 1.实验目的: (1) 掌握Visual C++6.0基本操作 (2) 了解C++程序运行环境; (3) 掌握简单的C++程序的开发过程(编辑、编译、连接和运行)。 (4) 掌握类及其成员的定义方法; (5) 掌握对象的创建方法; 2.实验内容: 2.1按要求分析程序指出程序运行的结果: 1)分析下面的程序,并给出程序运行的结果: #include class change {char c1,c2; public: void set(char a){c2=((c1=a)-32);} void print() {cout< class pair {char c1,c2; public: void set(char b) {c1=1+(c2=b);} unsigned where_am_I() {return((unsigned)this);}

实验二 类与对象

实验二类与对象(2) 一、实验目的 1、掌握类的定义和使用。 2、掌握类声明和类体。 3、掌握成员变量和局部变量的区别和使用方法。 4、多维数组的使用。 二、实验设备 1、硬件:PC机。 2、软件:DOS运行环境、EditPlus编辑软件。 三、实验预习要求 1、阅读3.2节类的定义和使用。 2、阅读3.2.2 成员变量和局部变量的区别的使用方法。 3、预习程序【例3-1】【例3-2】 4、多维数组的使用。熟悉程序【例2-32】 四、实验内容和步骤 1、展示简单数据类型与引用数据的区别 import java.io.*; public class PassTest { float ptValue; public void changeInt(int value) { value = 55; // 在方法内部对值参数进行了修改 } public void changeObjValue(PassTest ref) { ref.ptValue = 99f; // 在方法内部对引用参数进行了修改 } public static void main(String args[]) { int val; PassTest pt = new PassTest(); val = 11; System.out.println("初始的整型值是: " + val); pt.changeInt(val); // 值参数 System.out.println("改变后整型值是: " + val); // 值参数值的修改,没有影响值参数的值 pt.ptValue = 101f; System.out.println("初始的整型值是: " + pt.ptValue); pt.changeObjValue(pt); // 引用类型的参数 System.out.println("改变后整型值是: " + pt.ptValue); // 引用参数值的修改,改变了引用参数的值 } } 2、展示局部变量和类成员变量作用域 class Variable { int x = 0, y = 0, z = 0; //类的成员变量

实验二、类和对象

实验二、类和对象 一、对象的创建和使用。编写一个圆环类Ring的Java程序。圆环类有3个数据成员,分别是内半径innerRadius,外半径outerRadius和颜色color,这些属性可以查看get也可以重新设置set,另外,圆环还可以返回其面积area。程序清单如5-1,完成其中的代码1~代码4。 二、修改上题程序。现在请为该圆环类Ring再添加两个方法以返回内圆和外圆的周长,然后在主函数main()中分别创建两个对象ring1,ring2以显示周长。 三、类的静态成员与实例成员。编写一个圆类Circle,其中有圆周率,半径和圆对象个数,其中圆周率和圆对象个数为static成员。此外,Circle中还有两个static方法分别是设置圆周率和显示当前圆对象个数的,其余都是实例成员。 四、方法重载。编写一个Java程序,反映出方法重载的使用特点,该程序包含多个重载的加法运算,例如:整型加法、实型加法、以及混合加法运算等。程序清单如5-3,完成其中的代码1~代码5。 1、public class Lesson1{ private double innerRadius; private double outerRadius; public String color; public Lesson1(double iRadius,double oRadius,String c){ innerRadius=iRadius; outerRadius=oRadius; //初始化外半径 color=c; } public double getInnerRadius(){ return innerRadius; //返回内半径 } public double getOuterRadius(){ return outerRadius; } public void setInnerRadius(double iRadius){ innerRadius=iRadius; } public void setOuterRadius(double oRadius){ outerRadius=oRadius; } public void setColor(String c){ this.color=c; //设置颜色 } public double getArea(){ return (outerRadius*outerRadius- innerRadius*innerRadius)*3.1415; } public double getzhouchangwai(){ return (outerRadius*outerRadius)*3.1415*2; } public double getzhouchangnei(){ return (innerRadius*innerRadius)*3.1415*2; } public static void main(String[] args){ Lesson1 ring=new Lesson1(5,8,"red"); System.out.println("圆环的内半径:"+ring.getInnerRadius()); System.out.println("圆环的外半径:"+ring.getOuterRadius()); System.out.println("圆环的颜色:"+ring.color); System.out.println("圆环的面积:"+ring.getArea()+"\n"); ring.setInnerRadius(4); ring.setOuterRadius(6); //设置圆环ring的外半径为6 ring.setColor("blue"); System.out.println("圆环的内半径:"+ring.getInnerRadius()); System.out.println("圆环的外半径:"+ring.getOuterRadius());

实验报告实验类与对象精修订

实验报告实验类与对象标准化管理部编码-[99968T-6889628-J68568-1689N]

实验报告_实验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(floatradius),getPerimeter(),getArea()都是公有权限 2.写出Rectangle类的程序代码: classRectangle

{ privatefloatwidth; privatefloatlength; publicfloatgetWidth() //获取矩形宽度 {returnwidth;} publicfloatgetLength() //获取矩形长度 {returnlength;} publicfloatgetPerimeter() //获取矩形周长 {return2*(width+length);} publicfloatgetArea() //获取矩形面积 {return(width*length);} publicvoidsetWidth(floatw) //设置矩形宽度 {width=w;} publicvoidsetLength(floatl) //设置矩形长度 {length=l;} } 3.回答下列问题: (1)该程序中有几个类主类是什么如果将这两个类放在一个文件中,源程序文件名应是什么? 答:两个类:Circle、CircleTest;主类是CircleTest;源程序文件名是CircleTest。 (2)Circle类定义了几个构造方法(即构造器) Circle类中存在无参构造方法吗?如果要使用无参构造方法,应如何做? 答:Circle类定义了个构造方法;不存在,写入Circle(){}; (3)CircleTest类中创建了几个Circle对象?这些对象是如何创建的? 答:CircleTest类创建了两个Circle对象;Circle对象名=newCircle()。 (4)CircleTest类中如何调用对象的方法? 答:CircleTest类调用对象方法:对象名.方法 4.写出OverrideTest中所缺的三行代码:

相关主题
文本预览
相关文档 最新文档