1、C+实验报告 实验一1题目 编写一个时间类,实现时间的自增、自减、读和输出。2编程思想 定义两个私有数据成员minute和 second,在自增运算中重载运算符+,使得若时间大于60秒是minute自增1,second为(秒数-60),在这里我定义的全部是后置运算,重载运算符也是一样。在主函数中定义了4个Time类的对象,通过调用display()函数分别显示自增自减前和后的时间数。3源程序#include#includeusing namespace std;class Time public: Time()minute=0;second=0;/默认构造函数 Time(int m,int s
2、):minute(m),second(s)/构造 重载函数 ,用参数的初始化表对数据成员初始化 Time operator+(int);/声明后自增运算符+ 重载函数 Time operator-(int);/声明后置自减运算符“-”重载函数 void display()coutminute:second=60) second-=60; +minute; return temp;/返回的是自加前的对象 Time Time:operator-(int)/定义后置运算符“-”重载函数 Time temp(*this); second-; if(second=0) second+=60; -minu
3、te; return temp;/返回的是自减前的对象 int main() Time time1(34,59),time2(23,00),time3,time4; couttime1:; time1.display(); couttime3=time+endl; time3=time1+; couttime3:; time3.display(); couttime1:; time1.display(); cout-endl; couttime2:; time2.display(); couttime4=time-endl; time4=time2-; couttime4:; time4.di
4、splay(); couttime2:; time2.display(); system(pause); 4运行结果5问题及解决 此次实验主要是练习如何对+和-运算符进行重载,在编程过程中由于对于时间的计算运用不是很熟练导致在重载函数时输出结果不正确,经过多次修改后得出正确运行结果。本次实验较为简单,在编程过程中未遇到较为棘手的问题。 实验二1题目 定义描述平面任意点坐标(X,Y)的类Point,编写一运算符重载函数,使该函数能求出平面上任意两点的距离。在主函数中完成下列运算: Point p1(1,1), p2(4,5);double d = p1-p2;2编程思想 在point类中声明两个
5、私有成员x和y,在类内定义构造函数,并在构造函数中声明运算符“-”的重载函数,然后定义运算符重载函数,用this指针指向当前值,定义一求距离的的友元函数d(),使得其能够访问point类中的私有成员,并返回两点距离值。在主函数中通过两种方法计算平面两点的举例,一是通过运算符重载,二是通过函数调用,两者结果相同。3源程序#include#include#includeusing namespace std;class point private: double x,y;/私有成员函数public: point(double a,double b) x=a;y=b; cout点:(x,y ) x-
6、p.x)*(this-x-p.x)+(this-y-p.y)*(this-y-p.y); friend double d(point &a,point &b)/ return sqrt(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); ;int main() point p1(1,1),p2(4,5); cout 距离为: p1 - p2 endl; cout两点间距离:d(p1,p2)endl; system(pause); return 0;4运行结果5问题及解决 在本次实验中,对运算符重载的认识有进一步加深,在最初的编程过程中不知道怎样才能将计算距离的算法进
7、行运算符重载,通过多次的尝试和学习才得知对运算符的重载其实就是在原来运算符的基础上在多加一些功能,在重载函数中将其功能实现即可。 实验三1题目 定义学生成绩类Score,其私有数据成员有学号、姓名、物理、数学、外语、平均成绩。再定义一个能计算学生平均成绩的普通函数Average(),并将该普通函数定义为Score类的友元函数。在主函数中定义学生成绩对象,通过构造函数输入除平时成绩外的其他信息,然后调用Average()函数计算平均成绩,并输出学生成绩的所有信息。2编程思想 在Score类的公有部分声明友元函数Average(),在类外定义构造函数,将各个数据成员初始化,并对某一学生的各信息进行
8、输出;在类外定义一求平均成绩的函数,用于求该生各门课程的平均成绩,在主函数中声明Score的对象s并对各项进行赋初值,通过调用Average()输出平均成绩。3源程序#include#includeusing namespace std;class Scorepublic: friend double Average(Score *s); Score(char *number,char *name,double physicsScore, double mathScore,double englishScore,double other); private: char m_number100;
9、 char m_name100; double m_physicsScore; double m_mathScore; double m_englishScore; double m_other;Score:Score(char *number,char *name,double physicsScore, double mathScore,double englishScore,double other) strcpy(m_number,number); strcpy(m_name,name); m_physicsScore=physicsScore; m_mathScore=mathSco
10、re; m_englishScore=englishScore; m_other=other; cout学号:m_numberendl; cout姓名:m_nameendl; cout物理:m_physicsScoreendl; cout数学:m_mathScoreendl; cout英语:m_englishScoreendl; cout其他:m_otherm_physicsScore+s-m_mathScore+s-m_englishScore+s-m_other)/4;int main() Score s(1239902983,陈晨,80,85,90,88); cout平均成绩:Average(&s)endl; system(pause); return 0;4运行结果5问题及解决本次实验较为困惑的地方是在对Average()函数的调用上,因为在Score类中将其声明为友元函数,所以它可以访问类中的私有成员,但在构造函数中由于对个数据成员赋初值,所以在AVerage()函数中不知道变量使用是赋值后的还是赋值钱前的,所以导致在多次调试过程中多次出错,在以后的学习中对定义的理解和掌握还得加强! C+上机实验报告 班级:030914 学号:03091391 姓名:顾娜
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1