实验报告
课程名称VC++程序设计 专业班级电子0942 姓名 学号
电气与信息学院
和谐勤奋求是创新
实验教学考核和成绩评定办法
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.掌握重载构造函数的含义和使用。
4.编写一个较为复杂的类和对象的应用程序。 二、实验内容
1.设计一个程序,定义一个矩形类,包括数据成员和函数成员。要求有构造函数、析构函数,还有一个成员函数area()用来计算并显示矩形的面积,并编写main函数进行测试。 程序:#include #include classRect { public:Rect(intl,intw); ~Rect(); intArea(); private: intnLength; intnWidth; };
Rect::Rect(intl,intw)
{cout<<\"executingconstructor...\"<cout<<\"nLength=\"<Rect::~Rect(){cout<<\"executingconstructor...\"<cout<<\"nLength=\"<intRect::Area() {intt;t=nLength*nWidth; returnt; }
intmain() {RectA(3,4);
cout<<\"s=\"<运行结果:2.重载构造函数。修改上题,一种构造函数用整型变量记录矩形的长和宽,另一种构造函数用double型记录
矩形的长和宽,然后完成成员函数及主函数。 程序:#include #include classRect {public:Rect(intl,intw); Rect(doubleu,doublev); intArea();
doubleArea(doubleu,doublev); ~Rect(); private: intnLength; intnWidth; doublemLength; doublemWidth; };
Rect::Rect(intl,intw)
{cout<<\"executingconstructor...\"<cout<<\"nLength=\"<Rect::Rect(doubleu,doublev){cout<<\"executingconstructor...\"<cout<<\"mLength=\"<{cout<<\"executingconstructor...\"<t=nLength*nWidth; returnt;}doubleRect::Area(doubleu,doublev) {doubler;
r=mLength*mWidth;returnr;}
voidmain() {RectA(3,4);
cout<<\"a的面积=\"<cout<<\"b的面积=\"<远行结果:3.构造一个类countstr,要求用构造函数设置计数器count的初始值为0,成员函数countchar()不返回任何值,它要求用户输入一段文字,按Enter键后结束计算,用count记录输入的字符数,成员函数getchar()返回count的整数值。 程序:#include classcountstr {public:countstr(){count=0;}
voidcountchar(){cout<<\"请输入字符串:\"; while(str[count]!='\\0')count++;} intgetchar(){returncount;}
cin>>str;
private:intcount;charstr[200];}; voidmain(){countstrs;s.countchar(); cout<<\"thenumber=\"<实验题目 实验室 实验类别 成绩 实验六利用友元编程 电信机房 验证 实验时间 同组人数 指导教师签字: 年月日 1 一、实验目的 1.掌握友元函数和友元类的概念、定义和作用。 2.会使用友元编程。 3.进一步学习内存空间动态分配和释放的方法。 二、实验内容 1.有一个向量类Vector,包括一个点的坐标位置x和y,设计两个友元函数,实现两个向量的加法和减法运算。 2.定义一个由y=ax+b确定的直线类Line,该类的构造函数初始化直线,成员函数Print显示该直线方程,友元函数SetPoint()求解两条直线的交点。 3.下列程序是有关友元类的,程序中将A类声明为B类的友元类,A类中所有的成员函数都是B类的友元函数,请给程序填空。 #inlcude classB; classA { private: intx; public: A(intxx){x=xx;} intSet(B&); intGet(){returnx;} }; classB { private: intx; public: B(intxx){①} friend② }; intA::Set(③) {returnx=b.x;} voidmain() {Aa(10); Bb(20); cout< classVector {public: Vector(doublem=0,doublen=0){x=m;y=n;} voiddisplay(){cout<<\"(\"< classLine {public: Line(doublem=0,doublen=0){a=m;b=n;} voidprint(){cout<<\"直线y=\"< classB; classA { private: intx; public: A(intxx){x=xx;} intSet(B&); doublea,b; else{x=(l1.b-l2.b)/(l2.a-l1.a); y=l1.a*x+l1.b; cout<<\"两直线交点为(\"< classA {public: A(){cout<<“constructingA”< voidmain() {doublex,y,h,w,r; cout<<\"请输入矩形的位置坐标(x,y)、长、宽:\"; cin>>x>>y>>h>>w; RectangleRect1(x,y,h,w); cout<<\"矩形的数据:\"<>x>>y>>r; CircleC1(x,y,r); cout<<\"圆的数据:\"< #include classPerson {public: Person(); Person(char*name1,charsex1,char*id1,char*birth); voiddisplay(); ~Person(); protected: }; Person::Person() {name='\\0'; sex=0; id='\\0'; birthday='\\0'; } Person::Person(char*name1,charsex1,char*id1,char*birth) {name=newchar[strlen(name1)+1]; name=strcpy(name,name1); sex=sex1; id=newchar[strlen(id1)+1]; id=strcpy(id,id1); birthday=newchar[strlen(birth)+1]; char*name; char*id; charsex; char*birthday; <<\"),\R=\"< #include classStudent//定义基类 {public: Student(int,string,float); voiddisplay();//声明输出函数 protected://受保护成员,派生类可访问 intnum; stringname; floatscore; }; Student::Student(intn,stringnam,floats) {num=n;name=nam;score=s;} voidStudent::display() {cout<display(); pt=&grad; pt->display(); } 1)分析结果,并验证之。 2)利用虚函数,对程序作一点修改,在Student类中声明display函数时,在其前面加上关键字virtual,即virtualvoiddisplay();,再编译运行,注意分析运行结果。 2.事先编写一个程序,计算正方体、球体和圆柱体的表面积和体积。(提示:声明一个抽象基类container,派生类cube、sphere和cylinder,基类中求表面积和体积的成员函数声明为纯虚函数。) 3.定义一个类Student记录学生计算机课程的成绩,要求使用静态成员变量或静态成员函数计算全班计算机课程的总成绩和平均成绩。 三、编程分析及运行结果 1、 2、#include constdoublepi=3.1415; classcontainer {public: virtualvoiddisplay(){} virtualvoidArea(){} virtualvoidVolume(){} }; classcube:publiccontainer {public: cube(doublea){Length=a;} voiddisplay(){cout<<\"cube:\\nLength=\"< #include classStudent {public: Student(long,char*,float); voiddisplay(); ~Student(){delete[]name;} protected: staticfloataverage; staticintsum; ~cylinder(){} doubleR,H; protected: ~sphere(){} doubleR; protected: longnum; char*name; floatscore; }; floatStudent::average=0; intStudent::sum=0; Student::Student(longn,char*nam,floats) {num=n; name=newchar[strlen(nam)+1]; name=strcpy(name,nam); score=s; average=(average*sum+s)/(sum+1); sum++; } voidStudent::display() {cout<<\"Number:\"<”,用于两个字符串的等于、小于和大于的比较运算。 3.设计一个2行3列的矩阵类Matrix,重载流插入运算符“<<”和流提取符“>>”,使之能用于该矩阵的输入和输出。 三、编程分析及运行结果 1、#include #include classMatrix {public: voidinput(); Matrix(); voiddisplay(); }; Matrixoperator+(Matrix&m); ~Matrix(){} floatmatrix[2][3]; private: voidMatrix::input() {inti,j; cout<<\"请输入矩阵数据:\"; for(i=0;i<2;i++) } Matrix::Matrix() {inti,j; for(i=0;i<2;i++) } voidMatrix::display() {inti,j; cout<<\"矩阵为:\\n\"; for(i=0;i<2;i++) } MatrixMatrix::operator+(Matrix&m) {Matrixt; inti,j; for(i=0;i<2;i++) } voidmain() {MatrixM1,M2,M3; M1.input(); M1.display(); M2.input(); M2.display(); M3=M1+M2; cout<<\"M1+M2\"; M3.display(); for(j=0;j<3;j++) t.matrix[i][j]=matrix[i][j]+m.matrix[i][j]; for(j=0;j<3;j++) {cout<>matrix[i][j]; returnt; }2、#include #include classString { private: charstr[20]; public: String(); friendvoidoperator==(String&s1,String&s2); friendvoidoperator>(String&s1,String&s2); friendvoidoperator<(String&s1,String&s2); }; String::String() { cout<<\"输入字符串:\"; cin>>str; cout<(String&s1,String&s2) { if(strcmp(s1.str,s2.str)>0) cout<S3; S1 classMatrix { private: intmatr[2][3]; public: friendostream&operator<<(ostream&,Matrix&); friendistream&operator>>(istream&,Matrix&); }; ostream&operator<<(ostream&output,Matrix&m) {cout<<\"输出矩阵为:\"<>(istream&input,Matrix&m) {cout<<\"请输入矩阵数据:\"<>m.matr[0][0]>>m.matr[0][1]>>m.matr[0][2]>> m.matr[1][0]>>m.matr[1][1]>>m.matr[1][2]; returninput; } voidmain() {Matrixm1,m2; cin>>m1>>m2; cout<