2009面向对象程序设计实验报告

更新时间:2024-04-19 22:10:01 阅读量: 综合文库 文档下载

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

面向对象(C++)程序设计实验1

实验名称: 类和对象的定义

实验学时: 2学时

实验目的:

熟练掌握C++中类和对象的基本概念。熟练掌握类和对象的定义方法。

实验要求:

在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1.编写程序,定义一个Person类,数据成员有:name[]、age、sex、score;成员函数有display(),并定义两个Person类的对象,要求将两个对象的name[]、age、sex、score 值通过display()函数显示出来。 写出实验报告,并分析结果。 注意事项:

实验中注意数组的赋值问题。

面向对象(C++)程序设计实验2

实验名称:

构造函数和析构函数 实验学时: 2学时 实验目的:

熟练掌握C++中构造函数和析构函数的基本概念。熟练掌握构造函数和析构函数在程序中的使用方法。 实验要求:

在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1.编写程序,定义一个Person类,数据成员有:name[]、age、sex、score;成员函数有display(),并定义两个Person类的对象,将两个对象的name[]、age、sex、score 值通过display()函数显示出来。要求用构造函数对数据成员初始化,并用析构函数表示两个对象的消失。

写出实验报告,并分析结果。

注意事项:

实验中注意构造函数与析构函数的特点。

面向对象(C++)程序设计实验3

实验名称:

引用和复制构造函数 实验学时: 2学时 实验目的:

熟练掌握C++中引用的基本概念和用法。熟练掌握复制构造函数在程序中的运用。 实验要求:

在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1. 编写程序:使用两个参数(一个引用参数,一个传值参数),在函数调用中使两个形参值各扩大10倍,输出各形参和实参值,并分析输出结果。 2. 完善下列程序: #include class TP { public:

TP(int x,int y){X=x;Y=y;} TP(TP &p);

~TP(){cout<<\构造函数被调用!\\n\

int dispX(){return X;} int dispY(){return Y;}

private: }; void main() {TP P1(5,7); TP P2(P1);

cout<<\}

在复制构造函数中要输出两个私有成员的值及“复制构造函数被调用!”字样,并分析输出结果。 int X,Y;

面向对象(C++)程序设计实验4

实验名称: 成员函数的重载 实验学时: 2学时 实验目的:

熟练掌握C++中成员函数重载在程序中的运用。 实验要求:

在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1. 编写程序,类中设2个私有成员,设置3个重载的成员函数Add(),使用参数个数不同进行重载,其中一个无参数,一个带一个参数,一个带两个参数,3个重载函数最终都返回类中两个私有成员的和值。 并分析输出结果。

提示:须定义两个重载的构造函数。

面向对象(C++)程序设计实验5

实验名称: 静态成员 实验学时: 2学时 实验目的:

熟练掌握C++中静态成员(静态数据成员和静态成员函数)的基本概念及在程序中的运用。 实验要求:

在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1. 分析下列程序的输出结果 #include class M { public:

M(int a,int b,int c); void GetNumber(); void GetSum(); private: int A,B,C; static int Sum;

};

int M::Sum=0;

M::M(int a,int b,int c) { A=a; B=b; C=c; Sum+=A+B+C; }

void M::GetNumber() {

cout<<\}

void M::GetSum() {

cout<<\}

void main() {

M E(2,4,6),F(1,3,5); E.GetNumber(); F.GetNumber();

E.GetSum(); F.GetSum(); }

写出详细的分析结果。 2. 完善下列程序: #include class Sample { private: int A; static int B; public:

Sample(int a){A=a;B+=a;}; };

int Sample::B=2; void main() {Sample A(2),B(4); Sample::disp(A); Sample::disp(B); }

要求在静态成员函数中能分别输出两个数据成员A和B的值。

面向对象(C++)程序设计实验6

实验名称: 友元 实验学时: 2学时 实验目的:

熟练掌握C++中友元的基本概念。熟练掌握友元在程序中的运用。 实验要求:

在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1. 阅读下列程序,找出程序中的错误,并说明错误原因。 #include class Sample {

char ch1,ch2; public:

friend void set(Sample &s,char); };

void set(Sample &s,char c) {

s.ch1=c;

}

void set(Sample &s,char c1,char c2) {

s.ch1=c1; s.ch2=c2; }

void main() {

Sample obj; set(obj,5); set(obj,7,9); }

2. 编写一个程序,设计一个类Trig,给定三角形的三条边长x、y、z,包含一个友元函数计算两个三角形面积之和。 提示:(1)注意判断是否构成三角形 (2)三角形的面积公式:

sqrt(d*(d-x)*(d-y)*(d-z)) 其中: d=(x+y+z)/2 (3)包含一个头文件“math.h”

面向对象(C++)程序设计实验7

实验名称: 运算符重载 实验学时:2学时

实验目的: 熟练掌握C++中运算符重载的基本概念。掌握程序中运算符重载的使用方法。 实验要求:

在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1.分析下列程序的输出结果。 #include class clock

{int h;int m;int s; public:

clock operator+(clock&); void display(); clock(int,int,int); clock(clock &);};

clock::clock(int x,int y,int z) {h=x;m=y;s=z;} clock::clock(clock &c) {h=c.h; m=c.m; s=c.s;} void clock::display()

cout<

clock clock::operator +(clock &c) {clock clk=*this;int cs=0,cm=0; clk.s+=c.s; cs=clk.s/60; clk.s%=60; clk.m+=cs+c.m; cm=clk.m/60;clk.m%=60;

clk.h+=cm+c.h;clk.h%=24;return clk;} void main()

{clock one(12,12,12),two(12,40,55); clock three=one+two;one.display(); cout<<\ cout<<\写出详细分析报告。

1. 编写程序,用“-”运算符重载,实现两个对象私有成员差值的计算。并输出结果。

面向对象(C++)程序设计实验8

实验名称: 基类和派生类 实验学时:2学时

实验目的: 熟练掌握C++中基类和派生类的基本概念。熟练掌握C++中基类和派生类在C++中的运用。 实验要求:

1. 分析程序,回答下列问题: #include class A { public: void f1(); protected; int j1; private: int i1; };

class B:public A { public: void f2(); protected:

int j2; private: int i2; };

class C:public B { public: void f3(); };

(1) 派生类B中成员函数f2()能否访问基类A中的成员:

f1(),i1和j1呢?

(2) 派生类B的对象b1能否访问基类A中的成员:

f1(),i1和j1呢?

(3) 派生类C中成员函数f3()能否访问直接基类B中的

成员:f2()和j2呢?能否访问间接基类A中的成员函数f1(),j1和i1呢?

(4) 派生类C的对象c1能否访问直接基类B中的成员:

f2(),i2和j2呢?能否访问间接基类A中的成员:f1(),j1,i1呢?

(5) 从对(1)~(4)问题的回答可得出对公有继承的什

么结论?

(6) 将该程序中的两处继承方式的public改为private

又将如何回答上述各问题?

面向对象(C++)程序设计实验9

实验名称: 单继承 实验学时:2学时

实验目的: 熟练掌握C++中继承的基本概念。熟练掌握单继承在C++中的运用。

实验要求:在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1.分析下列程序的输出结果

#include class A {public: A(){a=0;} A(int i){a=i;}

void print(){cout<

B(int i,int j,int k):A(i),b1(j),b2(k){}

void print(){A::print();cout<

private: int b1,b2;}; void main() { B d1; B d2(5); B d3(4,5,6); d1.print(); d2.print(); d3.print();}

写出详细的分析报告。并写出输出结果。 2. 编写一个单继承程序。

要求:基类名为XS,派生类名为BGB,基类中有私有成员:name,sex,分别是:姓名,性别。有公有成员:基类的构造函数、disp()函数,其中,构造函数用于初始化基类的私有成员,disp()函数用于显示四个私有成员的值。派生类有私有成员:rz,表示“任职”;公有成员有:构造函数用于初始化私有成员,disp()函数用于显示派生类对象的各成员值(包括:姓名,性别,任职)。

面向对象(C++)程序设计实验10

实验名称: 多继承 实验学时:2学时

实验目的: 熟练掌握C++中继承的基本概念。熟练掌握多继承在C++中的运用。

实验要求:在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1.分析下列程序的输出结果

#include class B1 {public: B1(int i) { b1=i;

cout<<\} void print(){cout<

cout<<\} void print(){cout<

cout<<\ }

int getb3(){return b3;} private: int b3; };

class A:public B2,public B1 {public:

A(int i,int j,int k,int l):B1(i),B2(j),bb(k) { a=l;

cout<<\ void print() { B1::print();

B2::print();

cout<

void main() {

A aa(1,2,3,4); aa.print(); }

写出详细分析结果。并写出输出结果。

面向对象(C++)程序设计实验11

实验名称: 虚基类

实验学时:2学时

实验目的: 熟练掌握C++中虚基类定义及应用。

实验要求:在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1.分析下列程序的输出结果 #include class A { public:

A(const char *s){cout<

class B:virtual public A { public:

B(const char *s1,const char *s2):A(s1)

{

cout<

class C:virtual public A { public:

C(const char *s1,const char *s2):A(s1) {

cout<

class D:public B,public C { public:

D(const char *s1,const char *s2,const char *s3,const char *s4):B(s1,s2),C(s1,s3),A(s1) {

cout<

void main()

{

D *ptr=new D(\D\

delete ptr; }

写出详细分析结果。并写出输出结果。

面向对象(C++)程序设计实验12

实验名称: 多态性和虚函数

实验学时:2学时

实验目的: 熟练掌握C++中虚函数定义及应用。掌握纯虚函数和抽象类的基本概念及应用。

实验要求:在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1.用多态性和虚函数的知识,编写程序,计算点的面积和圆的面积。

面向对象(C++)程序设计实验13

实验名称: 流

实验学时:2学时

实验目的:掌握C++中流的概念,掌握输入流、输出流的使用方法。

实验要求:在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1. 分析下列程序的输出结果: #include #include void main() {

cout.fill('*'); cout.width(10); cout<<123.45<

}

写出详细分析结果。并写出输出结果。

2. 编写程序,在一行中以至少10个字符宽度按右对齐方式输出字符串。

3. 分析下列程序的输出结果

#include void main() {

char ch;

cout<<\输入字符串\ while((ch=cin.get())!=EOF) cout.put(ch); cout<<\!\}

提示:EOF是一个符号常量,它的值是-1,包含在iostream.h文件中。输入ctrl+z后退出程序。

面向对象(C++)程序设计实验14

实验名称: 文件

实验学时:2学时

实验目的:掌握C++中文件的基本概念,掌握文本文件、二进制文件的读写方法。

实验要求:在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1. 分析下列程序的输出结果 #include #include #include void main() {

fstream outfile,infile;

outfile.open(\if(!outfile) { }

cout<<\

}

outfile<<\outfile<<\outfile<<\outfile.close();

infile.open(\if(!infile) { }

char textline[80]; int i=0;

while(!infile.eof()) { }

infile.close(); i++;

infile.getline(textline,sizeof(textline)); cout<

写出详细分析结果。并写出输出结果。 2. 分析下列程序的输出结果

#include #include #include void main() {

char ch; fstream file;

file.open(\ if(!file)

{cout<<\文件不能打开\ }

file<<\ file.seekg(0,ios::beg); while(!file.eof()) {

streampos here=file.tellg(); file.get (ch); if(ch==' ')

cout<

cout<

写出详细分析结果。并写出输出结果。

面向对象(C++)程序设计实验15

实验名称: 文件

实验学时:2学时

实验目的:掌握C++中文件的基本概念,掌握文件的随机读写方法。

实验要求:在VC++运行环境下,参考教科书中的示例程序,完成下列操作:

1. 分析下列程序的输出结果 #include #include #include void main() {

struct student {

char name[20]; long number; double totalscord;

}stu[5]={\

Yan\ dl; dl; }

写出详细分析结果。并写出输出结果。 file1.close();

file1.seekp(sizeof(student)*1); file1.read((char *)&one,sizeof(stu[i]));

cout<

file1.open(\if(!file1) { }

for(int i=0;i<5;i++)

file1.write((char *) &stu[i],sizeof(student)); file1.seekp(sizeof(student)*4); file1.read((char *)&one,sizeof(stu[i]));

cout<

}stu[5]={\

Yan\ dl; dl; }

写出详细分析结果。并写出输出结果。 file1.close();

file1.seekp(sizeof(student)*1); file1.read((char *)&one,sizeof(stu[i]));

cout<

file1.open(\if(!file1) { }

for(int i=0;i<5;i++)

file1.write((char *) &stu[i],sizeof(student)); file1.seekp(sizeof(student)*4); file1.read((char *)&one,sizeof(stu[i]));

cout<

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

Top