第一篇:西南交大c++实验报告11
实验 11实验报告
教学班级:_26_学生学号:_2015_学生姓名:__ 实验日期:___2016.6.3____实验地点:__7307__(机房)指导教师签名:_____________ 实验成绩:______________
一、实验目的
1.了解存放常用系统函数的头文件; 2.掌握常用系统函数的功能及使用方法;
3.掌握自定义有返回值函数的概念、定义及使用。
二、实验任务
1、实现功能:1~10加减乘除运算训练系统。
(1)主函数功能:随机产生一个1~10加减乘除算术式(数字在1~10之间随机产生,运 算符在加减乘除中随机产生),要求用户输入计算结果,通过调用子函数得到正确答 案,判断用户的计算结果是否正确并输出结论。
(2)子函数功能:定义有返回值函数,完成算术式的计算功能。
2、实现功能:求两个整数的最大公约数、最小公倍数。
(1)主函数功能:从键盘输入两个整数,通过调用两个子函数分别得到最大公约数、最小公倍数并输出结果。
(2)子函数1功能:定义有返回值函数,求两个整数的最大公约数。子函数2功能:定义有返回值函数,求两个整数的最小公倍数。
3.实现功能:根据键盘输入的整数x,计算分段函数sign(x)的值。
(1)主函数功能:从键盘输入整数x,通过调用子函数得到计算结果并输出。(2)子函数功能:定义有返回值函数,实现该分段函数的功能。
三、实验结果(源程序 + 注释)
/*
1、实现功能:1~10加减乘除运算训练系统。
(1)主函数功能:随机产生一个1~10加减乘除算术式(数字在1~10之间随机产生,运 算符在加减乘除中随机产生),要求用户输入计算结果,通过调用子函数得到正确答 案,判断用户的计算结果是否正确并输出结论。
(2)子函数功能:定义有返回值函数,完成算术式的计算功能。*/ #include
char n;//定义一个字符型变量
srand(time(NULL));//初始化随机数产生器
a = 1 + rand()%(101 + 1);//产生1~10的随机数
x = 1 + rand()%(4z;break;case 3:answer = y * z;break;case 4:answer = y / z;break;} return answer;}
/*实现功能:求两个整数的最大公约数、最小公倍数。(1)主函数功能:从键盘输入两个整数,通过调用两个子函数分别得到最大公约数、最小公倍数并输出结果。
(2)子函数1功能:定义有返回值函数,求两个整数的最大公约数。子函数2功能:定义有返回值函数,求两个整数的最小公倍数。*/ #include
cout << “请输入两个整数” << endl;cin >> m >> n;int gys(int a, int b);//调用自定义函数一前的说明
int gbs(int a, int b, int c);//调用自定义函数二之前的说明
x = gys(m, n);y = gbs(m, n, x);cout << “这两个数的最大公约数是:” << x << “;最小公倍数是:” << y << endl;//输出结果 } int gys(int a,int b)//子函数一:用来求两个整数的最大公约数 { int c, p;if(a > b)//确保b形参变量的值比a形参变量的值大
{ c = a;a = b;b = c;} p = b % a;while(p!= 0){ b = a;a = p;p = b%a;}//求出最大公约数
return a;} int gbs(int a, int b, int c)//子函数二:用来求两个整数的最小公倍数 { int q;q = a * b / c;//求出最小公倍数
return q;}
/*实现功能:根据键盘输入的整数x,计算分段函数sign(x)的值。
(1)主函数功能:从键盘输入整数x,通过调用子函数得到计算结果并输出。(2)子函数功能:定义有返回值函数,实现该分段函数的功能。*/ #include
cin >> x;//从键盘输入自变量x的值
int sign(int a);//调用自定义函数前的说明
y = sign(x);//为y赋值
cout << “对应自变量x=” << x << “时的函数的值为:” << y << endl;//输出结果 } int sign(int a)//子函数:用于求对应x值的y值 { int b = 0;if(a < 0)b =-1;else if(a == 0)b = 0;else if(a > 0)b = 1;return b;}
第二篇:西南交大铁路通信信号实验报告
通信信号课程实验报告(联锁实验)
实验名称:6502电气联锁和微机联锁实验
班级:交运2012-05班姓名:武晓程学号:20121969 实验日期:2014.5.9
实验地点: 53011
一.实验目的
1.认识6502电气集中联锁设备控制台
2.运用6502电气集中联锁设备办理列车进路和调车进路,取消办理的进路。3.认识微机联锁软件及其操作
4.运用微机联锁系统办理列车和调车进路,取消办理的进路
5.思考不同的联锁设备在办理、取消进路时的差异。分析和比较两种系统的异同。6.加深对电气集中联锁系统和微机联锁系统的理解,回答思考问题。
二.实验设备
1.6502电气集中联锁控制台1台 2.微机联锁设备1套
三.实验原理(给出两种联锁系统的原理)
电气集中联锁:采用电磁继电器,以逻辑电路实现联锁,全站的信号机和道岔可由一个信号楼集中控制。为了建立一条进路,值班人员可在控制台上按下一条进路的始端按钮和终端按钮。不论进路上有多少组道岔,只要在进路范围内无车占用,又没有安排敌对进路,就可将进路中所有道岔转换到规定位置,并将进路锁住;在控制台的轨道表示盘上,所选出的进路从始端到终端呈现一条白色光带,即表示进路已被选出并已经锁闭。防护这条进路的信号机也同时自动开放。在表示盘上轨道模型旁,这条进路始端处的信号复示器亮一绿灯,表示防护此进路的信号机已经开放。当列车驶入该进路后,信号机自动关闭,信号复示器的绿灯改亮红灯,白色光带随着列车的前进,一段一段地由白色变为红色,表示列车在占用该区段,然后又由红色变为灭灯状态,表示列车已出清该区段,并且该区段已经解锁。这时,又可利用该区段内的道岔建立新的进路。
微机联锁:计算机联锁是用微型机算计的软硬件和其他一些电子、继电器件组成的,具有故障-安全性能的实时控制系统。其安全可靠、处理速度快,与继电集中联锁相比具有十分明显的技术经济优势。无论在安全性、可靠性、经济性等方面都是继电集中联锁无法比拟的,而且设计、施工、维修和使用大为方便,是一套全新的系统设备。微机联锁控制系统是实现以进路控制为主要内容的联锁功能控制系统,它主要以色灯信号机、动力转辙机和轨道电路作为三大室外设备,并以电子设备实现联锁功能对轨道区段状态、信号状态和道岔状态进行监测,并对信号机和道岔实施控制的系统。
四.实验过程及心得体会
在5311教室,通过6502电气集中联锁控制台和计算机模拟接车、发车、调车,加强了对课堂学习的理论知识的理解,加深了对车站联锁设备的印象和感触。相比6502电气集中联锁,微机联锁有这更多的优势。
五.问题
1.6502电气集中联锁和微机联锁办理进路时的异同之处?
共同点:。严禁采取任何操作使列车迎面解锁,区段正常解锁采用三点检查,即出清相邻的前方区段、占用并出清本区段、进入相邻的后方区段。
信号开放,列车驶入接近区段。此时,因故需要取消进路,为防止列车闯人已解锁
区段,进路必须延时解锁。延时时间长短由列车运行速度、接近区段长度决定,调车进路和侧线发车为30 s,接车进路和正线发车进路为3 min。
不同点:①在6502电路中,若已开放的信号接近区段瞬间分路不良,可以立即取消已经接近锁闭的进路。而计算机联锁有记忆功能,为安全起见,信号开放后,列车进路只要接近区段占用过,进路就必须延时解锁(调车不延时)。②进站信号开放、列车接近后,信号因故关闭,直接开放引导,6502电路办理引导进路解锁时不延时。而计算机联锁在办理引导进路解锁时必须延时3 rain解锁。
2.微机联锁相比电气集中联锁的优点有哪些?
(1)体积小、可靠性高,可实现无维修,为铁路信号技术结构的改革创造了条件。
(2)微机联锁系统功能更加完善。我国广泛应用的6502电气集中联锁系统受站场形电 路层次、结构、继电群数量,以及网络线的多少等限制。而微机联锁系统通过少量硬件和软件开发即可解决上述限制。
(3)微机联锁系统的信息量大,利用当前的各种网络手段,可与行车调度指挥系统、列车控制系统联网,提供及交换各种信息并协调工作。
(4)微机联锁系统易于实现系统自身化管理,利用自诊断、自检测功能及远距离联网。,实现远距离诊断
(5)随着大规模集成电路的发展,微机联锁系统的性能价格比与继电联锁相比将更占优势。通信信号课程实验报告(闭塞实验)
实验名称:自动闭塞实验
班级:交运2012-05班姓名:武晓程学号:20121969 实验日期:2014.5.9实验地点:5307
一.实验目的
1.认识自动闭塞系统
2.观察自动闭塞下,列车运行与信号指示的关系。3.加深对自动闭塞系统工作原理的认识。
二.实验设备
1.列车运行仿真实验系统
三.实验原理(给出自动闭塞系统的原理)
自动闭塞系统的作用原理是将轨道信息通过钢轨传送到动车组的车载系统,通过信号机红、黄、绿三种显示方式,预告列车运行前方两个闭塞分区的空闲状态。红灯表示分区正被占用,要求列车停车,暂时不得越过(2分钟后可低速度运行);黄灯表示前方有一个闭塞分区空闲,要求列车注意运行;绿灯表示前方至少有两个分区空闲,指示列车可按规定的最高速度运行。
四.实验过程及心得体会
在老师的带领和指导下,我学会了一点点对自动闭塞的操作。在自动闭塞的区间上,四显示信号机更能给列车运行带来效率,能够使铁路运营更快,更好,为铁路运营带来了利益。同时也能够让人们感受到科技带来的幸福。
五.问题
1.自动闭塞系统相比半自动闭塞的优点有哪些?
1.由于划分成闭塞分区,可用最小运行间隔时间开行追踪列车,从而大大提高区间通过能力;
2.整个区间装设了连续的轨道电路,可以自动检查轨道的完整性,提高了行车安全的程度;
3.办理发车进路时自动办理闭塞手续,自动变换信号显示和自动闭塞恢复。2.自动闭塞系统的组成。
利用通过信号机将一个区间划分为若干个闭塞分区,每个闭塞分区内都装有轨道电路或列车检测设备,通过轨道电路将列车和通过信号机的显示联系起来,使信号机的显示依列车运行或区间状态自动变换的系统。
第三篇:C++实验报告
姓名:XX 学院:XXX 班级:XXX 学号:XXX
i++;
} while(i<=10);cout<<“sum=”< #include for(i;i<=10,i++) { sum+=i; } cout<<“sum=”< cout<<“不是合法的输入”< 实验 三、函数的应用(2学时) 1、实验目的: 掌握函数的定义和调用方法。练习重载函数使用。练习函数模板的使用 练习使用系统函数。 在main()函数中提示输入两个整数x,y,使用cin语句得到x,y的值,调用pow(x,y)函数计算x的y次幂的结果,再显示出来。程序名:lab3_4.cpp。 编写递归函数int fib(int n),在主程序中输入n的值,调用fib函数计算Fibonacci级数。公式为fib(n)=fib(n-1)+fib(n-2),n>2;fib(1)=fib(2)=1。使用if语句判断函数的出口,在程序中用cout语句输出提示信息。程序名:lab3_5.cpp。 7)调试操作步骤如下: 选择菜单命令Build|Start Debug |Step In,系统进入单步执行状态,程序开始运行,并出现一个DOS窗口,此时光标停在main()函数的入口处。 把光标移到语句answer=fib(n)前,从Debug菜单单击Run To Cursor,在程序运行的DOS窗口中按提示输入数字10,这时回到可视界面中,光标停在第11行,观察一下n的值。 从Debug菜单中单击Step Into,程序进入fib函数,观察一下n的值,把光标移到语句return(fib(n-2)+fib(n-1))前,从Debug菜单单击Run to Cursor,再单击Step Into,程序递归调用fib函数,又进入fib函数,观察n的值。 继续执行程序,参照上述的方法,观察程序的执行顺序,加深对函数调用和递归调用的理解。 再试试Debug菜单栏中的别的菜单项,熟悉Debug的各种方法。 4、实验原理 C++中函数的重载使得同样的函数名下,只要参数类型、数目不同时,即可根据输入的数据进行相应的函数调用,使用起来简单方便。 5、思考与体会 C++中,函数的运用与之前学过的C语言既有相同之处,也有着不同的地方。相同的地方在于格式、用法等框架上的不变。但是C语言中对于同样的函数名是只能够申明一种函数的,倘若有相同的函数名出现系统即会报错,所以用起来有时是极为不便 0 //参数为两个双精度浮点形的函数 int max1(double a,double b){ a=a>b?a:b;return a;} //参数为三个双精度浮点形的函数 int max1(double a,double b,double c){ a=a>b?a:b;a=a>c?a:c;return a;} void main(void){ int a;double b;a=max1(1,2);cout< Lab3_3: #include int main(){ int i,j,k;cout<<“请输入要比较的3个数: ”< 2131415 public: Rank rank;int frequency;float voltage;CPU(Rank r,int f,float v){ //构造函数 cout<<“构造了一个CPU”< rank=r; frequency=f; voltage=v;} void run(){ cout<<“CPU开始运行”< } void stop(){ cout<<“CPU停止运行”< cout<<“RANK=”< cout<<“frequency=”< cout<<“voltage=”< }; int main(){ CPU cpu(p5,500,2000);cpu.run();cpu.show();cpu.stop();return 0;} Lab4_2 #include //析构函数-17 computer(Rank r,int f,float v){ CPU cpu(r,f,v); //定义CPU对象 RAM ram(1); //定义RAM对象 CDROM cdrom(1); //定义CDROM对象 cpu.run(); cpu.show(); cpu.stop();} };int main(){ computer com(p4,300,3000);return 0;} 实验 七、继承与派生(一、二)4学时 1、实验目的: 学习定义和使用类的继承关系,定义派生类。熟悉不同继承方式下对基类成员的访问控制。学习利用虚基类解决二义性问题 2、实验任务 a)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。b)定义一个基类BaseClass,有整型成员变量Number ,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。c)定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车类有高度(height)等属性,汽车类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。 3、实验步骤 编写程序定义基类Animal,成员变量age定义为私有的。构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示: error C2248:’age’:cannot access private member declared in class ‘Animal’ error C2248:’age’:cannot access private member declared in class ‘Animal’ 把age改为公有成员变量后重新编译就可以了。程序名为:lab7_1.cpp 0 确方便我们编程。 6、部分参考代码 Lab7_1 #include class Animal{ public: int age;}; class dog:public Animal{ public: int SetAge(int n){ age=n; return age;} }; void main(void){ int age;dog d;age=d.SetAge(3);cout<<“age=”< Lab7_2 #include cout<<“这是父类的构造函数”< cout<<“这是父类的析构函数”< //Motorcycle继承bicycle和motorcar类 class motorcycle:public bicycle,public motorcar{ public: motorcycle(int seat,double H,double MS,double W){ SeatNum=seat; height=H; MaxSpeed=MS; Weight=W;} void show(){ cout<<“seatnum=”< cout<<“height=”< cout<<“MaxSpeed=”< cout<<“weight=”< int main(){ motorcycle che(3,30.33,90.84,500);che.show();return 0;} 实验 八、多态性2学时 1、实验目的: 掌握运算符重载的方法 习使用虚函数实现动态多态性。 2、实验任务 a)定义Point类,有坐标x,y两个成员变量;对Point类重载“++”、“--”运算符,实现对坐标值的改变。 定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函的作用。 3、实验步骤 编写程序定义Point类,在类中定义整型的私有成员变量x,y,定义成员函数Point& operator++();Point operator++(int);以实现对Point类重载“++”运算符,定义成函数Point& operator –();Point operator 也就是函数的重载。 6、部分参考代码 Lab8_1 #include class Point{ public: Point(double x=0.0,double y=0.0):xray(x),yray(y){} Point operator++(int);Point operator--(int);void show();private: double xray;double yray;}; Point Point::operator++(int){ return Point(xray++,yray++);} Point Point::operator--(int){ return Point(xray--,yray--);} void Point::show(){ cout<<“x坐标为”< int main(){ Point p(4.5,6.5);cout<<“进行运算前的情况:”< show(&v);return 0;} 第二次上机实验报告 姓名:王小宁 班级: 学号: 031012 1234 第一题: 题目: 编写一个类,声明一个数据成员和一个静态数据成员,其构造函数初始化数据成员,并把静态数据成员加1,其析构函数把静态数据成员减1.(1)编写一个应用程序,创建该类的3个对象,然后显示其数据成员和静态数据成员,再析构每个对象,并显示它们对静态数据成员的影响。 (2)修改该类,增加静态成员函数并访问静态数据成员,并声明静态数据成员为保护成员。体会静态成员函数的使用,静态成员之间与非静态成员之间互访问题。 编程思想: 首先,定义一个类,其中含有两个类的私有变量,一个静态数据变量,定义构造函数,将初值赋给两个私有变量,并将静态数据变量加1,并显示.定义一个析构函数,并通过析构函数将静态成员变量减1.并显示。 修改以上的类,增加一个静态成员函数并通过静态成员函数来访问静态成员变量。在主函数中利用一个指向函数的指针指向这个静态成员函数,并通过这个指针来访问类中的静态数据。代码实现: 代码1: #include static int count; A(int a=0,int b=0) { X=a; Y=b; count++; cout<<“startcount=”< count--; cout<<“overcount=”< int GetX(){return X;} int GetY(){return Y;} private: int X,Y;};int A::count=0;int main(){ int *countp=&A::count;A z(2,3);cout<<“x=”< cout<<“x=”< 问题及心得: 在这次试验中,我理解了静态变量与普通变量之间的差异与联系。在实验过程中因未初静态变量始化而无法通过编译,并且注意到静态变量一定要在类外初始化。 题目2: 创建一个Person类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。其功能有修改姓名、显示数据信息。要求其功能函数的原型放在类定义中,构造函数初始化每个成员,显示信息函数要求把对象中的完整信息打印出来。其中数据成员为保护的,函数为公有的。 编程思想: 创建一个PERSON类,定义姓名、街道地址、市、省和邮政编码分别为CHAR型的指针私有型变量。在定义公有型的构造函数,并在构造函数中申请动态内存来保存初始化的内容,并用相应的私有性的指针变量指向,再利用复制函数则指针中将会存放入输入内容。定义公有的析构函数释放动态申请的空间。定义一个公有的改变函数改变其中一个变量,方法与构造函数相似。 代码实现: #include private: char *name;char *street;char *pro;char *city;char *code; public: Person(char *aname,char *astreet,char *apro,char *acity,char *acode){ name=new char[strlen(aname)+1]; strcpy(name,aname); street=new char[strlen(astreet)+1]; strcpy(street,astreet); pro=new char[strlen(apro)+1]; strcpy(pro,apro); city=new char[strlen(acity)+1]; strcpy(city,acity); code=new char[strlen(acode)+1]; strcpy(code,acode); cout<<“constructor”< delete[] name; delete[] street; delete[] pro; delete[] city; delete[] code; cout<<“destructor”< delete[] name; name=new char[strlen(aname)+1]; strcpy(name,aname);} void show(){ cout<<“姓名:”< cout<<“街道地址:”< cout<<“省份:”< cout<<“城市:”< cout<<“邮政编码:”< 运行结果: 实验心得: 通过这个实验,我们学会了对类的私有的字符数组变量的初始化。利用指针动态分配空间。 C++上机实验报告 实验名称:实验 专业班级: 姓 名: 学 号: 实验日期: 11 实验 目录 1.实验目的 2.实验内容 3.程序代码 4.调试结果 5.实验心得 1.实验目的 实验10(1)进一步了解运算符重载的概念和使用方法;(2)掌握几种常用的运算符重载的方法;(3)了解转换构造函数的使用方法; (4)了解在Visual C++6.0环境下进行运算符重载要注意的问题。实验11(1)了解继承在面向对象程序设计中的重要作用;(2)进一步理解继承和派生的概念; (3)掌握通过继承派生出一个新的类的方法;(4)了解虚基类的作用和用法。 2.实验内容 实验10 事先编好程序,上机进行调试和运行程序,分析结果。(1)声明一个复数类Complex,重载运算符“+”,“-”,“*”,“/”,使之能用于复数的加,减,乘,除,运算符重载函数作为Complex类成员的函数。编程序,分别求两个复数之和,差,积和商。(2)声明一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。 运行程序,分别求两个复数之和,整数和复数之和,(3)有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于两个矩阵相加 (4)声明一个Teacher(教师)类和一个Student(学生)类,二者有一部分数据成员是相同的,例如num(号码),name(名字),sex(性别)。编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上三个相同的数据成员移植过去。可以设想为:一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说任然是有用的,应当保留并成为其教师的数据的一部分。 实验11 事先编写好程序,上机调试和运行程序,分析结果。 (1)将教材第11章例11.1的程序片段补充和改写成一个完整的、正确的程序,用公用继承方式。在程序中应当包括输入数据的函数,在程序运行时输入num,name,sex,age,addr的值,程序应输出以上5个数据的值。 (2)将教材第11章例11.3的程序修改、补充,写成一个完整、正确的程序,用保护继承方式。在程序中应包括输入数据的函数。(3)修改上面第(2)题的程序,改为用公用继承方式。上机调试程序,使之能够正确运行并得到正确的结果。 对这两种继承方式做比较分析,考虑在什么情况下二者不能互相替换。 (4)分别声明Teacher(教师)类和Cadre(干部)类,采用多 重继承方式由这两个类派生出新类Teacher-Cadre(教师兼干部)。要求: Ⅰ.在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。 Ⅱ.在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务)。在Teacher-Cadre类中还包含数据成员wages(工资)。 Ⅲ.在基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。Ⅴ.在类体中声明成员函数,在类外定义成员函数。 Ⅵ.在派生类Teacher-Cadre的成员函数show中调用Teacher类中的display函数,输出性命、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。 3.程序代码 实验10(1) #include Complex Complex::operator +(Complex &c2){Complex c;c.real=real+c2.real;c.imag=imag+c2.imag;return c;} Complex Complex::operator-(Complex &c2){Complex c;c.real=real-c2.real;c.imag=imag-c2.imag;return c;} Complex Complex::operator*(Complex &c2){Complex c;c.real=real*c2.real-imag*c2.imag;c.imag=imag*c2.real+real*c2.imag;return c;} Complex Complex::operator/(Complex &c2){Complex c;c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);return c;} void Complex::display(){cout<<“(”< (2) #include double real; double imag;}; Complex Complex::operator+(Complex &c){return Complex(real+c.real,imag+c.imag);} Complex Complex::operator+(int &i){return Complex(real+i,imag);} void Complex::display(){cout<<“(”< Complex operator+(int &i,Complex &c){return Complex(i+c.real,c.imag);} int main(){Complex c1(3,4),c2(5,-10),c3;int i=5;c3=c1+c2;cout<<“c1+c2=”;c3.display();c3=i+c1;cout<<“i+c1=”;c3.display();c3=c1+i;cout<<“c1+i=”;c3.display();return 0;}(3) #include int mat[2][3];}; Matrix::Matrix(){for(int i=0;i<2;i++)for(int j=0;j<3;j++)mat[i][j]=0;} Matrix operator+(Matrix &a,Matrix &b){Matrix c;for(int i=0;i<2;i++)for(int j=0;j<3;j++){c.mat[i][j]=a.mat[i][j]+b.mat[i][j];} return c;} void Matrix::input(){cout<<“input value of matrix:”< void Matrix::display(){for(int i=0;i<2;i++){for(int j=0;j<3;j++){cout< #include int num; char name[20]; char sex; float score;}; Student::Student(int n,char nam[],char s,float sco){num=n;strcpy(name,nam);sex=s;score=sco;} class Teacher {public: Teacher(){} Teacher(Student&);Teacher(int n,char nam[],char sex,float pay);void display();private: int num; char name[20]; char sex; float pay;}; Teacher::Teacher(int n,char nam[],char s,float p} {num=n;strcpy(name,nam);sex=s;pay=p;} Teaxher::Teacher(Student& stud){num=stud.get_num();strcpy(name,stud.get_name());sex=stud.get.sex();pay=1500;} void Teacher::display(){cout<<“num:”< #include void get_value() {cin>>num>>name>>sex;} void display() {cout<<”num:“< cout<<”sex:“< int num; char name[10];char sex;}; class Student1:public Student {public: void get_value_1(){get_value();cin>>age>>addr;} void display_1(){cout<<”age:“< char addr[30];}; int main(){Student1 stud1;stud1.get_value_1();stud1.display();stud1.display_1();return 0;}(2) #include void display();protected: int num; char name[10]; char sex;}; void Student::get_value(){cin>>num>>name>>sex;} void Student::display(){cout<<”num:“< class Student1:protected Student {public: void get_value_1();void display1();private: int age;char addr[30];}; void Student1::get_value_1(){get_value();cin>>age>>addr;} void Student1::display1(){cout<<”num:“< int main(){Student1 stud1;stud1.get_value_1();stud1.display1();return 0;}(3) #include int num; char name[10]; char sex;}; void Student::get_value(){cin>>num>>name>>sex;} void Student::display(){cout<<”num:“< class Student1:public Student {public: void get_value_1();void display1();private: int age; char addr[30];}; void Student1::get_value_1(){get_value();cin>>age>>addr;} void Student1::display1(){cout<<”num:“< int main(){Student1 stud1;stud1.get_value_1();stud1.display1();return 0;}(4) #include Teacher(int,char[],char);void display();private: int num;char name[20];char sex;}; Teacher::Teacher(int n,char nam[],char s){num=n;strcpy(name,nam);sex=s;} void Teacher::display(){cout<<”num:”< class BirthDate {public: BirthDate(int,int,int);void display();void change(int,int,int);private: int year;int month;int day;}; BirthDate::BirthDate(int y,int m,int d){year=y;month=m;day=d;} Void BithDate::display(){cout<<”birthday:”< void BirthDate::change(int y,int m,int d){year=y;month=m;day=d;} class Professor:public Teacher {public: Professor(int,char[],char,int,int,int,float);void display();void change(int,int,int);private: float area;BirthDate birthday;} Professor::Professor(int n,char name[20],char s,int y,int m,int d,float a): Teacher(n,name,s),birthday(y,m,d),area(a){} void Professor::display(){Teacher::display();birthday.display();cout<<”area:”< Int main(){Professor profl(3012,”Zhang”,’f’,1949,10,1,125.4);cout< 4.调试结果 实验10(1)c1+c2=(8,-6i)c1-c2=(-2,14i)c1*c2=(55,-10i)c1/c2=(-0.2,0.4)(2)c1+c2=(8,-6i)i+c1=(8,4i)c1+i=(8,4i) (3) input value of Matrix:11 22 33 44 55 66 input value of Matrix:12 13 14 15 16 17 Matrix a: 11 22 33 44 55 66 Matrix b: 12 13 14 15 16 17 Matrix c=Matrix a + Matrix b : 23 25 47 59 71 83 (4)student1 : num :20010 name:Wang sex:m score;89.5 Teacher2: num:20010 name:Wang sex:m pay:1500 实验11(1) 10101 Li M 20 Beijing num:10101 name:Li sex:M age:20 address:Beijing (2) 10101 Li M 20 Beijing num:10101 name:Li sex:M age:20 address:Beijing (3) 10101 Li M 20 Beijing num:10101 name:Li sex:M age:20 address:Beijing (4)The original data: num:3012 name:Zhang sex:f area:125.4 The new data: num:3012 name:Zhang sex:f birthday:6/1/1950 area:125.4 5.实验心得 这一次上机实验,除了了解到了运算符重载的概念和用法,掌握几种常用的运算符重载的方法,了解转换构造函数的使用方法,同时也能了解虚基类的用法,理解继承与派生的概念。 但是,最主要的,我觉得,是通过这一次的上机实验,我了解到,有的实验本身是没有程序错误的,但是,也会由于实验环境的影响而不能正常运行。换句话说,有的程序并不能在Visaul C++的环境下运行,而不是程序自身的问题。所以,对于没办法调试成功的程序,我们也不能一味的认为程序有错误,要学会理性的判断程序的对错,再下结论。第四篇:C++上机实验报告
第五篇:C++上机实验报告