实验8-11

更新时间:2023-11-01 06:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验八 类和对象

一、 实验目的:

1. 通过实验掌握类和对象的概念及定义。 2. 掌握构造函数的设计,掌握对象的初始化。

3. 掌握拷贝构造函数、析构函数的作用和设计方法。 4. 能用OOP解决实际问题。

二、 实验学时

4学时

三、 实验内容

1.程序填空:

#include

#include < > using namespace std; class Stu

{ string Name; //学生姓名 float Chinese; //语文成绩 float Math; //数学成绩 public:

Stu(string s=\ { } float Average( ); //计算平均成绩 float Sum( ); //计算总分 void Show( ); //打印信息

void SetStudent(string,float ,float);//为对象置姓名、成绩 void SetName(string n){ ;} //为对象置姓名 string GetName( ){ } //取得学生姓名 };

float Stu::Average( ){ return ( }//平均成绩 float Stu::Sum( ){ return Chinese+Math; }//总分 void Stu::Show( ) //打印信息

{ cout<<\ \ \

Math<<'\\t'<<\ \ \ }

void Stu::SetStudent(string n,float chinese,float math) { Name=n; //置姓名

Chinese=chinese; //置语文成绩

Math=math; //置数学成绩 }

int main( ) { Stu p1,p2;

p1.SetStudent(\ qing\对象置初值 p2.SetStudent(\对象置初值 p1.Show();//打印信息 p2.Show();//打印信息

p1.SetName (\重新置p1对象的名字 p1.Show ();

cout<<\ \打印对象的名字 cout<<\ \打印对象的成绩 return 0; }

2、改写程序

有以下程序:

#include using namespace std; class Time {

public:

int hour; int minute; int sec; } ;

int main() {

Time t1;

cin>>t1.hour; cin>>t1.minute; cin>>t1.sec;

cout<

改写程序,要求:

(1) 将数据矶员改为私有的;

(2) 将输入和输出的功能改为由成员函数实现; (3) 在类体内定义成员函数。 (4) 然后编译和运行程序

3、程序设计

1) .定义人民币类RMB,要求能够通过构造函数进行对象初始化,能够通过拷贝构造函数用

已存在的对象构造新对象,能应用RMB对象进行简单的算术运算,包括计算XX元XX角XX分=XX.XX元,及其逆运算(例如,实现计算1.23元=1元2角3分,3元4角5分=3.45元)。

2) 已知一个源程序文件main.cpp.其中定义了用于表示日期的类Date,但类Date的定义并不完整.请按要求完成下列操作,将类Date的定义补充完整:

(1) 定义私有数据成员year,month和day分别用于表示年,月,日,它们都是int型的数据.请在注释\之后添加适当的语句.

(2) 完成默认构造函数Date的定义,使Date对象的默认值为:year=1,month=1,day=1,请在注释\* 2 * *"之后添加适当的语句.

(3) 完成重载构造函数Date(int y,int m,int d)的定义,把数据成员year,month和day分别初始化为参数y,m,d的值,请在注释"//* * 3 * *"之后添加适当的语句.

(4) 完成成员函数print的类外定义,使其以"年-月-日"的格式将Date对象的值输出到屏幕上.请在注释"//* * 4 * *"之后添加适当的语句.

注意:除在指定位置添加语句之外,请不要改动程序中的其他内源程序文件main.cpp清单如下:

//main.cpp

#include class Date {

public: //* * 2 * *

Date(int y,int m,int d) {

//* * 3 * * }

void print() const; private:

// date members //* * 1 * * };

void Date::print()const { //* * 4 * * } int main() {

Date national_day(1949,10,1); national_day.print(); return 0; }

3) 定义类GcdLcm实现:对两个整数m和n,计算其最大公约数和最小公倍数。

实验九 类的静态成员和友元

一、 实验目的

1. 通过实验掌握同类对象间共享数据的方法——静态成员。 2. 掌握静态成员的声明和初始化。 3. 掌握友元的概念及使用。

二、 实验学时

2学时

三、 实验内容

1、读程序,分析下面程序的运行结果并在机器上运行。

#include < iostream. h >

class A {

public: A();

void Show() ; ~A(); private:

static int c; }; int A::c =0; A::A() {

cout < < ″constructor.″ < < endl; c+ =10; }

void A: :Show() {

cout< < ″c=″ <

cout < < ″destructor. ″ < < endl; }

void main() {

A a,b; a. Show(); b. Show(); }

2.下面程序声明一个名为 score的类,用于统计一个班的学生成绩,使用静态数据成员totals存储总分。请在横线处填上适当的代码,将该程序补充完整。

#include class Score { private: int A,B,C; static int totals; public: Score( ) { A=x; B=y; C=z; totals+=A+B+C; } static int re_totals(){ return totals; } };

int main()

{ Score a(80,90,95);

cout << a.re_totals(); return 0; }

3、编程序:

1)在RMB类中加入一个静态数据成员countR,用于对RMB对象计数,同时写出能返回 countR的静态函数成员GetcountR(),并在main函数中测试之。

2)将下面程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date类中将display声明为友元函数。在主函数中调用display函数,display函数分别引用Time和Date两个类的对象的私有数据,输出 年、月、日和时、分、秒。

#include using namespace std; class Date; class Time {public:

Time(int,int,int);

void display(const Date&); private: int hour; int minute; int sec; };

本文来源:https://www.bwwdw.com/article/tuf2.html

Top