C++实验报告

  • 格式:doc
  • 大小:94.00 KB
  • 文档页数:7

实 验 报 告

课程名称 C++程序设计

专业班级 电子1542

姓 名 董孝凯

学 号 15

电气与信息学院

和谐 勤奋 求是 创新

实验教学考核和成绩评定办法

1. 课内实验考核成绩,严格按照该课程教学大纲中明确规定的比重执行。实验成绩不合格者,不能参加课程考试,待补做合格后方能参加考试。

2. 单独设立的实验课考核按百分制评分,考核内容应包括基本理论、实验原理和实验。

3. 实验考核内容包括:1)实验预习;2)实验过程(包括实验操作、实验记录和实验态度、表现);3)实验报告;权重分别为0.2 、0.4 、 0.4;原则上根据上述三个方面进行综合评定。学生未取得1)和2)项成绩时,第3)项成绩无效。

4. 实验指导教师应严格按照考核内容分项给出评定成绩,并及时批改实验报告,给出综合成绩,反馈实验中出现的问题。实验成绩在教师手册中有记载。

实验报告主要内容

一. 实验目的

二. 实验仪器及设备

三. 实验原理

四. 实验步骤

五. 实验记录及原始记录

六. 数据处理及结论

七. 实验体会(可选项)

注:1. 为了节省纸张,保护环境,便于保管实验报告,统一采用A4纸,实验报告建议双面打印(正文采用宋体五号字)或手写,右侧装订。

2. 实验类别指验证、演示、综合、设计、创新(研究)、操作六种类型实验。

3. 验证性实验:是指为了使学生巩固课程基本理论知识而开设的强调演示和证明,注重实验结果(事实、概念或理论)的实验。

4. 综合性实验:是指实验内容涉及本课程的综合知识或本课程相关的课程知识的实验。

5. 设计性实验:是指给定实验目的、要求和实验条件,由学生自行设计实验方案并加以实现的实验。

实验题目 实验五 利用友元编程

实验室 电信机房 实验时间 年 月 日

实验类别 验证 同组人数 1

成 绩 指导教师签字:

一、实验目的

1.掌握友元函数和友元类的概念、定义和作用。

2.会使用友元编程。

3.进一步学习内存空间动态分配和释放的方法。

二、实验内容

1.有一个向量类Vector,包括一个点的坐标位置x和y,设计两个友元函数,实现两个向量的加法和减法运算。

2.定义一个由y=ax+b确定的直线类Line,该类的构造函数初始化直线,成员函数Print显示该直线方程,友元函数SetPoint()求解两条直线的交点。

3. 下列程序是有关友元类的,程序中将A类声明为B类的友元类,A类中所有的成员函数都是B类的友元函数,请给程序填空。

#inlcude

class B;

class A

{

private:

int x;

public:

A(int xx){x=xx;}

int Set(B&);

int Get(){return x;}

};

class B

{

private:

int x;

public:

B(int xx){ ① }

friend ②

};

int A::Set( ③ )

{ return x=b.x;}

void main()

{ A a(10);

B b(20);

cout<

cout<

}

三、编程分析及运行结果

1.有一个向量类Vector,包括一个点的坐标位置x和y,设计两个友元函数,实现两个向量的加法和减法运算。

#include

class Vector

{

public:

Vector(double a,double b);

friend void minus(Vector &p1,Vector &p2);

friend void plus(Vector &p1,Vector &p2);

private:

double x,y;

};

Vector::Vector(double a,double b)

{

x=a,y=b;

}

void plus(Vector &p1,Vector &p2)

{

double c,d;

c=p1.x+p2.x;

d=p1.y+p2.y;

cout<<"向量的加法:"<

cout<<"("<

}

void minus (Vector &p1,Vector &p2)

{

double c,d;

c=p1.x-p2.x;

d=p1.y-p2.y;

cout<<"向量的减法:"<

cout<<"("<

}

void main()

{

double a,b,c,d;

cout<<"请输入A向量的坐标:"<

cin>>a>>b;

cout<<"请输入B向量的坐标:"<

cin>>c>>d;

Vector p1(a,b),p2(c,d); plus(p1,p2);

minus(p1,p2);

}

2.定义一个由y=ax+b确定的直线类Line,该类的构造函数初始化直线,成员函数Print显示该直线方程,友元函数SetPoint()求解两条直线的交点。

#include

class Line { public:

Line(double m=0,double n=0)

{a=m;b=n;}

void print()

{ cout<<"直线y="<

void friend setpoint(Line &l1,Line &l2)

{ double x,y;

if(l1.a==l2.a)

cout<<"两直线平行,无交点";

else { x=(l1.b-l2.b)/(l2.a-l1.a);

y=l1.a*x+l1.b;

cout<<"两直线交点为("<

}

}

~Line(){}

private: double a,b;

};

void main()

{ Line L1(3,5),L2(-2,6);

L1.print();

L2.print();

setpoint(L1,L2);

}

3. 下列程序是有关友元类的,程序中将A类声明为B类的友元类,A类中所有的成员函数都是B类的友元函数,请给程序填空。

#include

class B;

class A

{

private:

int x;

public:

A(int xx){x=xx;}

int Set(B&);

int Get(){return x;}

};

class B

{

private:

int x;

public:

B(int xx){x=xx;}

friend A ;

};

int A::Set(B&b)

{ return x=b.x;}

void main()

{

A a(15);

B b(30);

cout<

a.Set(b);

cout<

}

四、解决方法及难点

友元是C++中一个重要的概念,它可以避免频繁调用类的接口函数,既提高了程序的运行速度,也提高了程序的运行效率,友元关系具有非对称性和掩蔽性。所以在C++编程中当用到上述性质时使用友元就显得非常的方便和快捷。

五、实验体会

通过这次试验,使我对友元有了初步的认识。友元不仅避免频繁调用类的接口函数,还

高了程序的运行速度,也提高了程序的运行效率。对我的实践和操作都有了一定的提高。也使我对友元的基本程序有了一定的了解。