《C程序设计》实验指导书Word文档格式.docx
- 文档编号:20709482
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:46
- 大小:169.14KB
《C程序设计》实验指导书Word文档格式.docx
《《C程序设计》实验指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《《C程序设计》实验指导书Word文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
1、掌握类的定义和使用
2、学习构造类的方法
3、掌握如何定义构造函数和析构函数
4、掌握初始化对象的方法
5、理解面向对象程序设计的思想
二、实验类型验证
三、实验学时4学时
四、实验原理及知识点
1、类的定义
2、类成员的访问控制
3、类的数据成员和成员函数
4、构造函数和析构函数
5、对象的定义与初始化
五、实验环境(硬件环境、软件环境)
1、软件:
Windows操作系统,VisualC++6.0
2、硬件:
CPU奔腾Ⅲ;
内存64兆以上(最好128兆以上);
六、实验内容及步骤
1、定义一个描述学生通讯录的类,数据成员包括:
姓名、学校、电话号码和邮编;
成员函数包括:
输出各个数据成员的值,分别设置和获取各个数据成员的值。
2、将第一个上机实验题中的成员函数Init改为构造函数,将成员函数FreeSpace改为析构函数。
增加一个缺省的构造函数,使指针pName,pSchool和pNum的初值为0,使Box包含空字符串。
3、定义分数类Rational,要求在private部分用整数表示分子和分母,分子和分母以简化形式表示,即24/36应该以2/3的形式表示,并提供public成员函数实现如下功能:
(1)两个分数相加,结果表示为简化形式;
(2)两个分数相减,结果表示为简化形式;
(3)按a/b的形式输出分数的值,a、b为整数;
(4)按浮点数的形式输出分数的值。
七、思考与练习
1、编写Time类,要求:
(1)包含年、月、日、时、分、秒的信息;
(2)构造函数将类的对象初始化为系统当前时间(使用头文件time.h中的time()函数);
(3)能按标准格式输出对象表示的时间。
2、编写矩形类,要求可以提示用户输入矩形的长度和宽度,并显示该矩形的长度、宽度和面积。
堆与拷贝构造函数、静态成员与友元、运算符重载
1、领会拷贝构造函数的实质
2、学会使用堆对象的分配与释放
3、领会运算符重载的意义
4、学会使用this指针
5、理解友元的语法和含义
6、在此基础上领会和掌握面向对象的程序设计思想。
二、实验类型验证
三、实验学时4学时
1、堆对象的分配与释放
2、拷贝构造函数
3、类的复合
4、This指针
5、静态数据、友元函数和友元类
6、运算符重载的概念
7、单目运算符重载
8、双目运算符重载
9、重载流插入和流提取运算符
10、赋值运算符重载
Windows操作系统,VisualC++6.0
1、建立一个Stock类,含有股票代码和股票现价两个数据成员。
用new自动为Stock类的对象分配内存,并将股票”600001”,现价8.89存入内存的相应域中。
在类中增加静态数据成员记载创建对象的个数,增加拷贝构造函数并调用。
2、对如下圆柱类Column的定义:
classColumn{
public:
Column(doublex,doubley,doubler,doubleh);
~Column();
doublearea();
//求圆柱面积
doublevolume();
//求圆柱体积
private:
doubleheight;
//高度
doubleradius;
//半径
doublex;
//底面圆心x坐标
doubley;
//底面圆心y坐标
};
要求:
(1)实现类Column中的四个成员函数;
(2)增加一个友元函数,实现从键盘读取四个double类型的数据对类Column的对象进行赋值的功能;
(3)增加一个友元函数,实现将类Column的对象输出到屏幕的功能,输出信息包括对象的基本信息以及对象的面积和体积。
3、对于下面定义的类Test:
classTest{
inta;
doubleb;
(1)为类Test的每个数据成员增加一个set函数,并使这些set函数都可以被连续调用;
(2)为类Test的每个数据成员增加一个get函数。
(3)如果要求所有get函数都可以被连续调用,这些函数该如何编写?
4、定义一个复数类,通过重载运算符:
*,/,直接实现二个复数之间的乘除运算。
编写一个完整的程序,测试重载运算符的正确性。
要求乘法“*”用友元函数实现重载,除法“/”用成员函数实现重载。
1、定义一个复数类,通过重载运算符:
2、定义包含年、月、日信息的日期类Date,并重载二元运算符“+”,使之具有日期对象和整数(天数)相加的功能,并编程测试。
3、下列程序定义了一实部为real,虚部为imag的复数类complex,要求重载运算符“+”、“-”、“*”实现复数对象的加法、减法、乘法运算,并编写测试程序。
如果要进行a=b+c*d;
(a、b、c、d都是类Complex的对象)这样的运算,需要重载赋值运算符吗?
为什么?
classComplex{
complex(doubler=0,doublei=0)
{
real=r;
imag=i;
}
doublereal,imag;
4、于下面的类MyString,要求重载一些运算符后可以计算表达式:
a=b+c;
,其中a、b、c都是类MyString的对象。
请重载相应的运算符并编写程序测试。
classMyString{
MyString(char*s){
str=newchar[strlen(s)+1];
strcpy(str,s);
}
~MyString(){
delete[]str;
char*str;
5、对于下面的Time类:
classTime{
Time(inth=0,intm=0,ints=0);
inthour,minute,second;
(1)实现构造函数,是类Time的数据成员可以得到正确的赋值;
(2)重载流插入运算符<
<
,按照hh:
mm:
ss的格式输出类Time的对象;
(3)重载流提取运算符>
>
,按照hh-mm-ss的格式输入类Time的对象。
通过继承进行软件的渐增式开发
1、掌握继承方法,理解多态性
2、掌握虚函数的用法,观察其多态性
3、掌握软件的渐增式开发方法
二、实验类型设计
三、实验学时6学时
1、继承和派生的基本概念
2、继承的定义
3、基类和派生类对象的转换
4、类指针的使用
5、多态性的意义和作用
6、虚函数的定义方法
7、抽象基类的作用和定义方法
8、虚析构函数的作用和使用方法
9、如何在程序中实现多态性
10、软件的渐增式开发方法
1、下面是一个形状类Shape,编写类Shape的派生类:
圆类Circle、三角形类Triangle和矩形类Rectangle,并重定义基类的成员函数使之返回正确的结果(show函数要输出对象的基本信息),然后编写程序测试它们。
classShape{
//形状的面积
doublearea(){
return0;
//形状的周长
doublegirth(){
//输出对象的信息
voidshow(){
cout<
"
ShapeObject:
"
endl;
2、声明一个基类Currency,其中含有protected类型的数据成员Japan和Europe,分别代表日元、欧元对美元的汇率。
成员函数set()用来设置两个数据成员的初始值,定义print_exchang()为纯虚函数。
声明类Ja和Eur分别为Currency的派生类,其成员函数print_exchange()分别用来计算10000日元和100欧元兑换多少美元。
按照惯例,汇率的表示方式是:
1美元兑换日元116.30,1欧元兑换美元1.1634(116.30和1.1634要在set()中存入Japan和Europe中)。
3、给定如下抽象类:
classshape{
protected:
doubler;
public:
shape(doublex){r=x;
}
virtualvoidarea()=0;
virtualvoidperimeter()=0;
(1)以shape类为基类,派生一个circle圆形类、一个in_square圆的内接正方形类、一个ex_square圆的外接正方形类,在派生类中对shape类中求面积和周长的纯虚函数进行重载。
(2)对类进行实例化,输出运算结果
4、给定单向链表类List,要求以List类为基类建立两种类型的表:
队列(先进先出)与堆栈(先进后出),请编写程序实现队列与堆栈的存储和读取操作,编写一个测试程序,演示类的功能。
classList{
List()
head=NULL;
tail=NULL;
next=NULL;
virtualvoidstore(inti)=0;
//存储数据
virtualintretrieve()=0;
//读取数据
List*next;
//指向表的下一项
intnum;
//用于存储节点数据
protected:
List*head;
//指向表头
List*tail;
//指向表尾
六、思考与练习
1、编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班级和成绩,教师数据有编号、姓名、职称和部门。
要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师类数据操作类teacher的基类。
2、编写一个程序计算出球、圆柱和圆锥的表面积和体积。
(1)定义一个基类圆,至少含有一个数据成员半径;
(2)定义基类的派生类球、圆柱、圆锥,都含有求表面积和体积的成员函数和输出函数。
(3)定义主函数,求球、圆柱、圆锥的和体积。
实验4:
I/O流与文件操作
1、掌握文件和流的概念
2、学会使用FILE结构和使用文件流进行文件的打开、建立、读、写和关闭操作
三、实验学时2学时
1、文件和流的概念
2、使用FILE结构操作文件
3、使用文件流操作文件
1、假设有一个文件“one.dat”已经存在,编写程序创建文件“two.txt”,并将文件“one.dat”中的内容复制到文件“two.txt”中。
2、下面是一个三角形类Triangle的定义:
classTriangle{
Triangle(doublea,doubleb,doublec){
x=a;
y=b;
z=c;
intsaveToFile(ostream&
outFile);
intloadFromFile(istream*inFile);
doublex,y,z;
(1)实现成员函数saveToFile,将对象自身保存到文件中;
(2)实现成员函数loadFromFile,从文件中恢复对象;
(3)编写程序使用类Triangle,并实现如下功能:
(1)将类Triangle的多个对象保存到一个指定文件中;
(2)能一次从指定文件中恢复多个对象。
1、输入三角形的三边a,b,c,计算三角形的面积的公式:
Area=sqrt(s*(s-a)*(s-b)*(s-c)),其中s=(a+b+c)/2
形成三角形的条件是:
a>
b+c,b>
a+c,c>
a+b;
编写程序,输入a,b,c,检查a,b,c是否满足以上条件,如不满足,由cerr输出有关出错信息。
2、建立两个磁盘文件f1.dat和f2.dat,编写程序实现以下工作:
(1)从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件放10个);
(2)从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面;
(3)从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)。
3、设计一个管理图书目的简单程序,提供的基本功能包括:
可连续将新书存入文件“book.dat”中,新书信息加入到文件的尾部;
也可以根据输入的书名进行查找;
把文件“book.dat”中同书名的所有书显示出来。
为简单起见,描述一本书的信息包括:
书号,书名,出版社和作者。
实验5:
模板与异常处理
了解模板的概念、定义,了解C++的异常处理机制。
1、异常的基本概念
2、异常的触发、传播和处理
3、类属程序设计
4、模板的定义和使用
1、编写一个程序,使用new运算符动态分配空间,当空间分配失败时抛出异常,并捕获处理该异常,处理异常时要考虑不能有内存泄漏。
2、写一个函数模板,求数组中的最大元素。
使得函数调用时,数组的类型和返回值类型可以是整数也可以是双精度类型。
3、以下是一个整数栈类的定义:
constintSIZE=100;
classStack
{
Stack();
~Stack();
voidPush(intn);
intPop();
private:
intstack[SIZE];
inttos;
(1)编写一个栈的类模板(包括其成员函数定义),以便为任何类型的对象提供栈数据结构操作
(2)在应用程序中创建整数栈、字符栈和浮点数栈,并提供一些数据供进栈、退栈和打印操作
求一元二次方程式ax2+bx+c=0的实根,如果方程没有实根,则利用异常处理机制输出有关警告信息。
第二部分
实验指导
VisualC++6.0的集成环境
一、VC++6.0主要菜单、工具
可视化与面向对象的编程技术是当今世界流行的编程技术,在众多的开发工具中,Microsoft公司的VC++6.0独树一帜,深得广大程序员的青睐。
VC++6.0提供了编写应用程序的所有工具,它包含了许多单独的组件,并由窗口、对话框、菜单、工具栏等组成了一个统一的整体。
首先,看一下启动的主界面:
1.VC++6.0的菜单
VisualC++6.0的菜单栏如图所示,其中包括File,Edit,View等共九个菜单选择项,通过它们,你可以轻松地完成编辑程序和资源、编译、链接及调试程序等各项工作。
要激活菜单栏中的菜单有两种方法:
一是用鼠标左键直接单击相应的菜单,另一种方法是在按住Alt键的同时,按下相应菜单的热键,例如要激活Edit菜单只要按下Alt+E键即可。
下图是VisualC++6.0的主菜单,当激活某个菜单后,会弹出相应的下拉子菜单。
其中包含了多个菜单项,用于执行相应的功能或命令
有一些常用的菜单命令具有快捷键,例如File菜单中的New菜单命令,它的快捷键是Ctrl+N,只要直接按下此快捷键就可以执行相应的菜单命令。
有的菜单项显示为灰色,表示这些菜单命令在此时为禁用状态。
以下介绍几种常用的菜单,这些在今后的编程中会经常使用。
1、File文件菜单
File菜单如图所示,
其中包含了各种对文件进行操作的选项,如加载、保存、打印和退出等。
各菜单项的功能分述如下:
New菜单项(Ctrl+N)此菜单项的快捷键是Ctrl+N。
用于创建新的文件、工程、工作区或其他文档。
当您选中此菜单项后,屏幕将会出现New对话框,如图所示。
其中包含了4个选项卡:
File、Project、Workspace和OtherDocuments。
在File选项卡中,您可以选择创建各种文件,当选中Addtoproject复选框时,则新创建的文件将加入到当前工程中。
表1-1New对话框中可创建的项目类型工程
选项说明
ATLCOMAppWizard创建ATL应用程序
ClusterResourceTypeWizard创建多重资源类型
CustomAppWizard创建自定义的AppWizard
DatabaseProject创建数据库项目
DevStudioAdd-inWizard创建自动化宏
ExtendedStoredProcWizard创建扩展存储过程
ISAPIExtensionWizard创建Internet服务器或过滤器
Makefile创建Make文件
MFCActiveXControlWizard创建ActiveX控件程序
MFCAppWizard[dll]创建MFC动态链接库
MFCAppWizard[exe]创建MFC可执行程序
UtilityProject创建实用工具项目
Win32Application创建Win32应用程序
Win32ConsoleApplication创建Win32控制台应用程序此项即为控制台程序项目
Win32Dynamic-LinkApplication创建Win32动态链接库
Win32StaticLibrary创建Win32静态库
在新建立程序时,首先要建立工程项目文件,根据程序类型选择工程。
上表说明了各种工程项目的说明。
File选项卡中可以创建的文件类型见表1-2
New对话框中可创建的文件类型
文件选项说明
ActiveXServerPage创建活动的服务器页
BinaryFile创建二进制文件
BitmapFile创建位图文件
C/C++HeaderFile创建C/C++头文件
C++SourceFile创建C++源文件
CursorFile创建光标文件
HTMLPage创建HTML文件
IconFile创建图标文件
2、编辑菜单
Edit菜单中的命令是用来使用户便捷地编辑文件内容,如进行删除、复制等操作,其中的大多数命令功能与windows中的标准字处理程序的编辑命令一致。
3、VIEW菜单:
view菜单中的命令主要用来改变窗口和工具栏的显示方式,激活调试时所用的各个窗口等。
4、插入菜单
Insert菜单中的命令主要用于项目
及资源的创建和添加。
5、Project菜单
Project菜单中的命令主要用于项目
的操作,如项目中添加源文件等。
6、Build菜单
Build菜单中的命令主要用来应用
程序的编译、连接、调试、运行。
7、工具菜单Tools菜单中的命令主要用于选择
或制定开发环境中的一些实用工具。
8、窗口菜单
Windows菜单中的命令主要用于文档窗口的操作。
如排列文档、打开或关闭一个文档窗口、重组或切分文档窗口等。
9、帮助菜单
VisualC++6.0 同大多数其它的Windows应用软件一样,提供了大量详细的帮助信息,而Help菜单便是得到这些帮助信息的最
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C程序设计 程序设计 实验 指导书