C++实验报告11.docx
《C++实验报告11.docx》由会员分享,可在线阅读,更多相关《C++实验报告11.docx(19页珍藏版)》请在冰点文库上搜索。
C++实验报告11
巢湖学院计算机与信息工程学院
实验报告
20~20学年度第学期
专业名称:
班级名称:
学生姓名:
学生学号:
指导教师:
巢湖学院计算机与信息工程学院
巢湖学院实验教学中心
2011年9月联合监制
实验报告填写要求
每份实验报告必须包含以下几个部分:
1、实验名称:
如“实验一:
汇编语言实验操作方法”;
2、实验目的:
略;
3、实验内容与要求:
略;
4、实验平台:
如“WindowsXP操作系统和Masm5.0集成实验环境”
5、实验设计方案:
简述实验过程,程序设计实验要求画出程序流程图,并简述各个模块(函数)的功能;
6、实验结果分析:
简要叙述实验的运行与测试结果;
7、源程序代码:
必须详细书写源程序代码;
8、实验启发:
简述本次实验的收获和启发(可以不写);
实验一、创建C++项目
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
1、掌握创建C++项目的方法
2、掌握C++程序的录入、编译和调试方法
【实验内容与要求】
1、使用VC++6.0中创建一个工程
2、编写字符串的连接、复制、比较和求串长函数,并编译调试
【实验平台】
WindowsXP、VC++6.0
【实验原理及设计方案】
1、在VC++6.0中创建一个Win32控制台应用程序
2、在工程中添加一个C++源文件
3、录入字符串的连接StrCat、复制StrCpy、比较StrCmp和求串长StrLen函数
4、在主函数中调用上面的个函数
5、编译调试并执行
【源程序代码】
【实验结果及分析】
【实验启发】
实验二、指针和链表
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
1、掌握指针声明和初始化
2、掌握链表的建立、输出、删除结点、插入结点等操作
【实验内容与要求】
1、编写Create函数,建立一个动态链表
2、编写Print函数,输出各结点数据
3、编写Del函数,删除链表中一个指定结点
4、编写Insert函数,向链表插入一个结点
【实验平台】
WindowsXP、VC++6.0
【实验原理及设计方案】
1、首先声明一个结构体类型,包含学号num、姓名name、三门课成绩score[3]、指向下一个结点的指针next;
2、分别编写Create函数、Print函数、Del函数和Insert函数,
3、在主函数中调用这4个函数,实现链表的建立、输出、删除和插入。
【源程序代码】
【实验结果及分析】
【实验启发】
实验三、类和对象的声明
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
1、掌握类的声明方法
2、掌握对象的声明,以及怎样引用对象的成员
【实验内容与要求】
定义一个Time类,将数据成员设为私有,输入、输出功能由成员函数实现,类的声明放在Time.h文件中,成员函数要在类外定义,放在Time.cpp文件中。
主函数放在Main.cpp中。
【实验平台】
WindowsXP、VC++6.0
【实验原理及设计方案】
1、先创建Main.cpp文件,只放置一个主函数;
2、在工程中添加Time类,添加私有数据成员hour、min、sec;再添加两个成员函数set_time和show_time,用于输入输出时间
3、在主函数中声明一个对象t,通过对象t引用它的成员函数输入输出时间
【源程序代码】
【实验结果及分析】
1、不能在类外访问类的私有数据,只能通过公有的成员函数来访问
2、必须通过对象来访问类的成员
3、把类的声明和实现分别放在.h文件和.cpp文件中。
【实验启发】
实验四、构造函数和析构函数
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
1、掌握不带参数以及带1个、2个、3个参数的构造函数定义方法
2、掌握析构函数的定义方法
3、注意观察构造函数和析构函数的调用次序
【实验内容与要求】
声明一个类,要求包含:
1、不带参数的构造函数
2、分别带1个、2个、3个参数的构造函数
3、复制构造函数
4、析构函数
【实验平台】
WindowsXP、VC++6.0
【实验原理及设计方案】
声明一个Date类,分别定义5个构造函数和一个析构函数,并定义一个display函数用于输出日期,然后在主函数中分别使用上面5个构造函数创建5个对象,并输入日期。
【源程序代码】
【实验结果及分析】
构造函数没有返回类型,但它可能有参数,可以被重载,它是创建对象时被自动调用的。
析构函数没有参数,不能被重载,它是在撤销一个对象之前自动被调用。
一般来说,对象的构造次序和析构次序相反。
【实验启发】
实验五、静态成员和友员
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
1、掌握静态成员变量的定义、初始化和引用方法
2、掌握静态成员函数的定义和调用方法
3、掌握把普通函数声明为友元的方法
4、掌握把类的成员函数声明为友元的方法
【实验内容与要求】
1、某商店销售某一商品,请编写程序计算当日此商品的总销售款sum以及每件商品的平均售价。
2、分别定义Time和Date类,将函数display声明为友元,在主函数中调用display函数,引用上述两个类的私有数据。
3、将Time类声明为Date类的友元类,通过Time类中的display函数引用Date类中的私有数据。
【实验平台】
WindowsXP、VC++6.0
【实验原理及设计方案】
1、首先声明一个类,把销货员号num、销货件数quantity、销货单价price声明为私有数据成员,再将折扣discount、总销售款sum和商品销售总件数n声明为静态数据成员,再定义静态成员函数average和display用于计算平均售价和输出结果。
2、定义Time和Date类,再定义函数display,将函数display声明为Time类和Date类的友元,最后在主函数中调用display函数,引用上述两个类的私有数据。
3、将Time类声明为Date类的友元类,通过Time类中的display函数引用Date类中的私有数据。
【源程序代码】
【实验结果及分析】
1、静态数据成员不只属于某个对象,所有对象都可以引用它;它只能在类外进行初始化;它既可以通过对象名引用,也可以通过类名来引用;
2、静态成员函数没有this指针,因此不能访问非静态成员,可以用来访问静态数据成员。
3、友元既可以是普通函数,也可以是另外一个类的成员函数,甚至可以把另一个类声明为友元。
【实验启发】
实验六、重载运算符
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
1、掌握一元运算符、二元运算符的重载方法
2、掌握流输入输出运算符的重载方法
【实验内容与要求】
定义复数类Complex,重载以下运算符:
1、+、—、*、/
2、前置++和后置++
3、流插入运算符<<和提取运算符>>
【实验平台】
WindowsXP、VC++6.0
【实验原理及设计方案】
【源程序代码】
【实验结果及分析】
【实验启发】
实验七、继承与派生
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
1、掌握派生类的声明方式
2、掌握派生类构造函数的使用
3、掌握派生类成员的引用方法
【实验内容与要求】
声明Teacher类和Cadre类,采用多重继承方式由这两个类派生出新类Teacher_cadre类。
【实验平台】
WindowsXP、VC++6.0
【实验原理及设计方案】
1、先声明Teacher类,添加name、age、sex、addr、tel和title数据成员,再添加构造函数和display()函数
2、再声明Cadre类,添加name、age、sex、addr、tel和post数据成员,再添加构造函数
3、由Teacher类和Cadre类派生Teacher_Cadre类,添加数据成员wages,再添加构造函数和show()函数
4、在主函数中用Teacher_Cadre类定义一个对象,调用show()函数输出信息
【源程序代码】
【实验结果及分析】
1、对两个基类中的数据成员用相同名字时,在引用数据成员时,要指定作用域,如:
Teacher:
:
name、Cadre:
:
name等。
2、在子类的构造函数中调用基类的构造函数对基类初始化
【实验启发】
实验八、多态与虚函数
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
1、掌握虚函数的声明和使用
2、掌握如何用虚函数实现多态
【实验内容与要求】
1.编写一个程序,声明抽象基类Shape,由它派生出3个派生类:
Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。
【实验平台】
WindowsXP、VC++6.0
【实验原理及设计方案】
1、先声明抽象类Shape,只声明一个纯虚函数Area
2、定义3个派生类,分别定义构造函数,并实现Area函数
3、声明一个普通函数printArea,用Shape类对象的引用作形参
4、在主函数中分别声明圆、矩形、三角形类的对象,用调用printArea函数输出面积。
【源程序代码】
//定义抽象基类Shape
classShape
{
public:
virtualdoublearea()const=0;//纯虚函数
};
//定义Circle类
classCircle:
publicShape
{
public:
Circle(doubler):
radius(r){}//构造函数
virtualdoublearea()const{return3.14159*radius*radius;};
protected:
doubleradius;//半径
};
//定义Rectangle类
classRectangle:
publicShape
{
//…
};
//定义Triangle类
classTriangle:
publicShape
{
//…
};
//输出面积的函数
voidprintArea(constShape&s)
{
cout<}
【实验结果及分析】
【实验启发】
实验九、创建Win32应用程序
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
1、掌握创建Win32应用程序的方法
2、掌握Win32常用绘图函数的使用
【实验内容与要求】
创建Win32应用程序,使用绘图函数绘制一运动的圆球。
【实验平台】
WindowsXP、VC++6.0
【实验原理及设计方案】
1、启动VC++6.0,创建一个Win32应用程序,创建一个典型的“Hello,world”工程;
2、添加一个Ball类,添加数据成员:
坐标x、y,速度vx、vy,半径r;
添加带参数的构造函数,以及函数成员Move、GetX、GetY、GetR;
3、在主程序里设置定时器:
SetTimer(hWnd,1,100,myProc),并定义定时器处理程序myProc,其原型为:
VOIDCALLBACKmyProc(HWND,UINT,UINT_PTR,DWORD);
4、在窗口过程里,绘制矩形和小圆,函数原型为:
Rectangle(HDChdc,intleft,inttop,intright,intbottom)
Ellipse(HDChdc,intleft,inttop,intright,intbottom)
5、刷新窗口:
InvalidateRect(HWNDhWnd,CONSTRECT*lpRect,BOOLbErase);
【源程序代码】
【实验结果及分析】
1、Win32应用程序入口函数是WinMain
2、窗口创建完毕,程序进入主消息循环,并由窗口过程WndProc处理消息;
【实验启发】
实验十、创建Win32项目(贴图、键盘鼠标消息)略
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
【实验内容与要求】
【实验平台】
【实验原理及设计方案】
【源程序代码】
【实验结果及分析】
【实验启发】
实验十一、小孩出列游戏
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
1、掌握结构体和指针的使用
2、掌握链表的使用
3、掌握类的定义和使用
【实验内容与要求】
小孩出列游戏,也称为Joseph问题。
一群小孩围成一个圆圈,任意设定一个数m,从其中某个小孩开始,按顺时针方向数,每数到第m个小孩时,该小孩就离开,游戏一直进行到只剩最后一个小孩,该小孩便是游戏的胜者。
要求:
1、由用户设置参加游戏的人数、以及从哪个人开始计数。
2、循环显示每次出列的小孩的编号,直到出现胜利者为止。
【实验平台】
WindowsXP、VC++6.0
【实验原理及设计方案】
可以用一个类模拟小孩站成圆圈。
类中必须包含的数据是用于描述圆圈的数据结构,可以使用链表结构来描述。
类中的数据成员就是表示链表结构的指针等数据。
链表中用每个结点代表一个小孩,每个结点是一个结构体,结构体中包括小孩的的编号及指向下一个小孩的指针。
【源程序代码】
【实验结果及分析】
1、模拟圆圈结构,可以用数据链表结构,也可以用数组等其他方法实现。
2、该例也可以不使用面向对象的方法实现,可以通过其他方法实现。
【实验启发】
实验十二、
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
【实验内容与要求】
【实验平台】
【实验原理及设计方案】
【源程序代码】
【实验结果及分析】
【实验启发】
实验十三、
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
【实验内容与要求】
【实验平台】
【实验原理及设计方案】
【源程序代码】
【实验结果及分析】
【实验启发】
实验十四、
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
【实验内容与要求】
【实验平台】
【实验原理及设计方案】
【源程序代码】
【实验结果及分析】
【实验启发】
实验十五、
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
【实验内容与要求】
【实验平台】
【实验原理及设计方案】
【源程序代码】
【实验结果及分析】
【实验启发】
实验十六、
实验时间
月日,星期,第节;
批阅时间
月日
实验成绩
【实验目的】
【实验内容与要求】
【实验平台】
【实验原理及设计方案】
【源程序代码】
【实验结果及分析】
【实验启发】