面向对象程序设计C++ 实验大纲.docx

上传人:b****5 文档编号:6481815 上传时间:2023-01-06 格式:DOCX 页数:33 大小:299.93KB
下载 相关 举报
面向对象程序设计C++ 实验大纲.docx_第1页
第1页 / 共33页
面向对象程序设计C++ 实验大纲.docx_第2页
第2页 / 共33页
面向对象程序设计C++ 实验大纲.docx_第3页
第3页 / 共33页
面向对象程序设计C++ 实验大纲.docx_第4页
第4页 / 共33页
面向对象程序设计C++ 实验大纲.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

面向对象程序设计C++ 实验大纲.docx

《面向对象程序设计C++ 实验大纲.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计C++ 实验大纲.docx(33页珍藏版)》请在冰豆网上搜索。

面向对象程序设计C++ 实验大纲.docx

面向对象程序设计C++实验大纲

《面向对象程序设计C++》实验大纲

实验课程名称:

《面向对象程序设计C++》实验

英语译名:

ExperimentsofObject-OrientedProgrammingC++

课程性质:

专业基础课

适用学生层次:

本科

适用专业:

计算机科学与技术、物联网工程

实验项目数:

8

实验总学时数:

18

教材及参考书:

1.《C++面向对象程序设计教程》(第3版)陈维兴,林小茶编著清华大学出版社2009.6

2.《实用C++教程》高教出版社

3.《实用C++实验教程》高教出版社

考核方式:

实验报告和实验程序操作考查

第一部分 实验教学的指导思想和要求

1、教学目标:

C++是一门高效的程序设计语言,即可进行过程化设计,也可进行面向对象程序设计,是目前面向对象程序设计语言中具有最广泛基础的一门语言,也是作为应用软件和系统软件的最佳开发工具之一。

通过该课程的学习,学生能掌握C++程序设计基础知识,程序设计方法与基本数据结构。

通过上机实践,培养学生分析具体问题、建立数学模型、用C++解决实际问题的能力,培养学生创新意识和提高学生实践能力。

在课程教学的整个过程中要帮助学生抛弃原来的编程习惯和思考方法,建立面向对象的编程思想。

2、基本要求:

●了解计算机处理信息的过程以及描述用计算机解决问题的表示方法;

●熟悉和使用C++程序设计的开发环境;

●理解面向对象程序设计的基本概念;

●掌握面向对象程序设计的基本方法与基本思路;

●掌握可视化编程的方法。

3、实验前的准备工作。

●了解所用的计算机系统(包括VisualC++6.0)的性能和使用方法。

●复习和掌握与本实验有关的教学内容,设计好上机操作步骤。

●准备好上机所需的程序,切忌不编程序或抄别人的程序去上机。

●对实验中出现的问题应事先估计,对程序中自己有疑问的地方应先作上记号,以便上机时给予注意。

4、撰写实验报告

●实验报告格式

实验报告必须是word文档,其他格式一律不接受。

上机实验报告格式

实验题目:

_______

学院及班级:

学号:

姓名:

一、实验目的:

1.…

2.…

二、实验内容:

 

要求有算法设计、代码编写,程序代码含有一定的注释,运行结果图示。

三、 实验总结

通过上机实践,对所学内容的某个知识点有了更深入的理解,写出一些体会、学习心得。

也可以写算法设计、代码编写、程序调试、程序改进等相关的收获、感悟。

5、实验报告提交注意事项:

●邮箱地址:

wl_mary@

●邮件标题格式:

学号+姓名+班级+实验名称

●附件标题格式:

学号+姓名+班级+实验名称

按上述要求提交实验报告,实验报告必须在本学期19周周日之前提交,过后不再受理,后果自负。

注:

实验报告一定要以附件(word格式,其他格式一律不接受!

)的形式发送,邮件标题、附件标题、邮箱一定不要写错啊!

第二部分、实验学时分配

序号

试验项目名称

类型

学时

1

实验1熟悉VC++6.0的编程环境(2学时)

验证

2

2

验证

2

3

验证

2

4

综合性

4

5

验证

4

6

验证

2

7

验证

2

第三部分、实验内容

实验1熟悉VC++6.0的编程环境(2学时)

一、实验目的:

1.熟悉VC++6.0集成开发环境;掌握简单C++程序的编辑、编译、连接和运行;

2.理解C++语言中的数据类型、表达式;掌握简单C++程序的编写及调试方法;

3.悉C++程序的顺序、分支和循环控制结构及其实现方法;掌握结构化程序设计的基本方法和步骤,进一步学习程序的调试过程;

二、实验内容:

1.从键盘输入两个整数,求其最大值。

⑴提示

参考程序如下:

#include

intmax(intx,inty)//定义求最大值函数

{

if(x>y)returnx;

elsereturny;

}

voidmain()

{

intm,n,s;

cout<<"输入两个整数:

"<

cin>>m>>n;

s=max(m,n);

cout<<"两个数中的最大值为:

"<

}

⑵要求

●输入246,观察程序运行结果;

●输入24,6,观察程序运行结果;

●输入非整数时,观察程序运行结果;

//大家想一想为什么?

⑶写实验报告

2.编程将一个已知的三位整数按倒序形式输出。

如已知一个三位整数123,其倒序形式为321。

⑴提示

输入的三位数为整数,变量类型按整型进行处理。

可采用求余数的方法计算各位上的数,并输出,再用除10所得的商作为输出低位后剩余的数。

参考程序如下:

#include

voidmain()

{

intx,k;

cout<<"请输入一个整数:

"<

cin>>x;

cout<<"按倒序输出整数:

"<

while(x!

=0)

{

k=x%10;

cout<

x=x/10;

}

cout<

}

⑵要求

●修改程序,将三位数倒序后存入整型变量中,并输出倒序后的整数。

⑶写实验报告

3.求两个整数的和。

程序如下:

⑴提示

参考程序如下:

#include

intadd(intx,inty)//求和

{

ints;

s=x+y;

returns;

}

voidmain()

{

intx,y,sum;

cout<<"输入两个实数:

"<

cin>>x>>y;

sum=add(x,y);//调用函数,求和

cout<<"x+y="<

}

⑵要求

●对于int类型的数据,在输入时,不能超过其最大最小值的范围。

当输入超过其范围时,观察程序运行结果;

●修改程序,求输入的3个整数的大小;

⑶写实验报告

本实验以控制台应用程序为例,简单介绍使用VisualC++6.0的应用程序向导AppWizard开放应用程序的一般过程。

所谓控制台应用程序,是指在Windows操作系统环境下运行的字符用户界面DOS程序。

本教材中介绍的C++程序都是给予控制台的应用程序,基于图形用户界面的应用程序不做介绍,有兴趣的同学,可以查阅相关资料。

在VisualC++6.0集成开放环境中,C++程序的开发过程与其它高级语言的开发过程相仿,都要经过编辑、编译、链接和运行四个步骤。

第一步、编辑

编辑是将C++源程序输入计算机的过程。

在VisualC++6.0主界面下,点击“文件”菜单,选择“新建”菜单项,即可出现“新建”对话框,如图1所示。

图1“新建”对话框

在弹出窗口中的“文件”标签页下,选择“C++Source File”选项,在选项卡右面的“文件名”编辑框里输入文件名如“ex10_1”。

在VisualC++6.0中,由于C++源程序的扩展名为“*.cpp”,所以在输入文件名时可以不用输入扩展名。

在“位置”编辑框里输入文件路径,如“e:

\program”。

点击“确定”按钮。

将出现“编辑”窗口,如图2所示。

图2“编辑”窗口

在图2所示的右端文件编辑区输入C++源程序,例如输入实验内容中的第一个源程序,在编辑过程中,可以单击主窗口工具栏上的“保存“按钮,把编辑修改过的源程序文件保存。

如果要编辑旧文件,选择在VisualC++6.0主窗口菜单栏中的“文件”菜单项,选择下拉菜单中的“打开”菜单选项,在弹出的“打开“对话框中选择扩展名为“*.cpp”的文件,系统会在文件编辑区中打开该源文件,在文件编辑区就可以编辑修改已经打开的文件。

图3“编译”源程序窗口

第二步、编译

编译是使用系统提供的编译器将源程序文件“ex10_1.cpp”生成目标文件“ex10_1.obj”的过程,编译源程序窗口如图3所示。

在图3所示的VisualC++6.0主窗口菜单栏上点击“组建”菜单,在下拉菜单中选择“编译”菜单项,屏幕出现“询问是否创建默认项目工作区”对话框,如图4所示。

图4“询问是否创建默认项目工作区”的对话框

在图4所示的对话框中单击“是”按钮,系统开始对源程序文件开始编译。

编译器如果发现程序中有语法错误,则在输出区窗口(如图3所示主窗口的下端窗口)中显示错误信息,这些信息包括出错位置、错误性质及产生错误的原因等。

若双击某一条错误信息,相应地就会在文件编辑区窗口中的右边出现一个箭头,指向出错的程序行。

用户可以根据错误提示修改程序。

当修改后还需重新编译源程序文件,直到没有错误信息为止,才能编译通过,将源程序文件“ex10_1.cpp”编译成目标文件“ex10_1.obj”。

编译也可以采用快捷方式,即单击主窗口工具栏上的

按钮,系统会自动链编译源程序。

第三步、链接

编译是使用系统提供的编译器将源程序文件(*.cpp)生成机器语言目标文件(*.obj)的过程,由于没有得到系统分配的绝对地址,还不能直接运行。

只有通过链接后,才能将目标文件转换成可执行文件(*.exe),才可以运行。

链接目标文件的窗口如下图5所示。

图5“链接”目标程序

在上图5所示的VisualC++6.0主窗口菜单栏上点击“组建”菜单,在下拉菜单中选择“组建”菜单项,系统对编译好的程序进行链接,如链接标准库函数等。

如果链接成功,系统会自动生成一个扩展名为“*.exe”的可执行文件。

如果链接失败,则应查找原因,如文件的属性、路径等。

链接也可以采用快捷方式,即单击主窗口工具栏上的

按钮,系统会自动链接目标程序。

第四步、运行

运行是执行可执行文件(“*.exe”文件)。

运行可执行程序的窗口如下图6所示。

在VisualC++6.0主窗口菜单栏上点击“组建”菜单,在下拉菜单中选择“执行”菜单项,或者使用主窗口工具栏中

按钮来执行可执行文件。

 

图6“运行”可执行程序

程序运行后,系统显示如图7所示的DOS形式的“运行结果”窗口。

如果程序要求用户从键盘输入数据,则等待用户操作,程序成功执行并输出结果。

并显示提示信息“Pressanykeytocontinue”,此时,按键盘任何一个键,或点击窗口右上角的

按钮关闭窗口,系统返回到VisualC++6.0主窗口。

 

图7“运行结果”窗口

如果出现运行错误,应该分析产生错误的原因,可能是输入数据错误、代码错误等等。

如果需要修改源程序,还需要重新编译、链接和运行,直到执行结果正确为止。

按上述步骤编辑、编译、链接、运行实验内容中的第1、2、3个程序。

实验2数组(2学时)

一、实验目的:

1.熟练掌握一维数组和二维数组的定义、引用和初始化;

2.掌握字符数组与字符串的关系以及字符串变量的表示,熟练字符串处理函数的应用。

二、实验内容:

1.N个整数的排序。

(1)要求

1)用一个数组存放各个整数

2)在主函数main()中实现数据的输入和输出操作,并用一个函数实现对数组元素的排序操作。

3)排序函数为swap(inta[],intsize);(size为数组的长度)

(2)撰写实验报告。

2.输入一个n×n的矩阵,求出两条对角线元素值之和以及输出矩阵中最大值和最小值的下标。

(1)提示

(2)撰写实验报告。

3.编写程序统计一个字符串“C++isbeginer'slanguage”中单词的个数,并将统计的每个单词存入二维数组array[][]中的一行,即数组array中的元素:

array[0]=”C++”,array[1]=”is”,array[2]=”beginer’s”,array[3]=”language”。

最后输出每个单词。

(1)提示

(2)撰写实验报告。

实验3函数(2学时)

一、实验目的:

1.掌握函数的定义和使用方法;

2.掌握函数调用的方法;

3.掌握函数参数传递的机制;

4.掌握函数重载的方法。

二、实验内容:

1.求两个自然数m和n的最大公约数和最小公倍数。

⑴提示

最大公约数就是能同时整除m和n的最大正整数,可用如下算法计算两个数的最大公约数:

求两个数(m、n)相除的余数r(r=m/nm>n),当余数不为零时,m取n的值,n取r的值,再求两个数相除的余数,反复进行直到余数为零,除数n是最大公约数。

最小公倍数=m×n/最大公约数。

⑵要求

●按照上面思想,编程实现从键盘上输入的两个自然数的最大公约数和最小公倍数;

●输入两个数m=56,n=12观察程序运行结果;

●用递归调用的方法实现求最大公约数,参考程序如下:

intfun1(intc,intd)

{

intr;

r=c%d;

if(r!

=0){

c=d;

d=r;

fun1(c,d);

}

returnd;

}

●编程实现求三个数的最大公约数和最小公倍数;

⑶写实验报告

2.编程求下式的值:

n1+n2+n3+n4+…+n8其中n=1,2,3…,编写函数时,设置参数n的默认值为2。

⑴提示

上述表达式可以写为:

f(n)=n1+n2+n3+n4+…+n10(n=1,2,3…),注意表达式值的溢出问题。

⑵要求

●定义f(n)函数,实现求上述表达式的值,并设置函数的参数n的默认值为2;

●在主函数中调用f(n)函数,实现输入n值时,求出表达式的值;

⑶写实验报告

3.使用函数重载的方法定义四个同名函数max,分别求取两个整数、三个整数,两个双精度数、三个双精度数的最大值。

⑴提示

C++编译器根据函数参数表中参数类型和个数进行匹配,调用相应的重载函数,函数返回值不能用来识别重载函数。

注意重载函数中使用默认参数时可能产生的二义性。

⑵要求

●在每个重载函数中输出该函数的参数值和求出的最大值;

●在main函数中,当输入不同类型、个数的数据时,调用不同的重载函数,求其最大值;

⑶写出实验报告。

实验4指针和引用(4学时)

一、实验目的:

1、熟练掌握各种类型指针的定义、引用和运算;

2、掌握数组指针和指向数组的指针变量,以及字符串的指针和指向字符串的指针变量;

3、了解指针与链表关系。

二、实验内容:

1.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。

⑴提示

把输入的10个整数存入数组中,10个中最小的放与数组的第一个元素对换,最大的数与数组的第10个元素对换。

其他的保持不变。

⑵要求

定义3个函数:

voidinput(int*p);/*此函数向数组输入10个元素*/

voidmax_min_value(int*p); /*此函数交换数组的对应元素*/

voidoutput(int*p);  /*此函数输出数组的10个元素*/

在main函数中调用上述3个函数,实现题目要求的功能;

⑶撰写实验报告

2.建立一个学生信息链表,每个结点包括:

学号、姓名、成绩。

实现链表的建立、显示和查询。

查询是指输入一个学号,如果链表中存在该学号的的结点,则显示此结点的数据。

⑴提示

采用动态分配内存,用new分配内存空间,不需要时用delete释放空间。

由于结点结构中包含两三个域,可以采用C++语言中的结构体类型实现。

  structstructNode//定义一个结点结构类型

{intnum;

charname[10];

floatscore;

structNode*next;

}stNode;

⑵要求

在程序中定义了三个函数:

voidinitStLink();//初始化链表

voidcreateStLink();//创建学生成绩信息链表

voiddispStLink();//输出链表信息

定义一个查询函数stNode*search(stNode*head,intnumber),其中,第一参数是链表的头结点,第二个参数是学生的学号。

实现当输入一个学生学号,如果链表中存在该学号的的结点,则显示此结点的数据,否则输出没有该学号的结点。

定义一个删除函数booldelete(intnumber),用于删除指定学号的结点。

实现当输入一个学生学号,如果链表中存在该学号的的结点,则删除该结点,否则显示链表中没有该学号的结点。

⑶撰写实验报告

以下选作题目:

3.n个人围成一圈,从第一个人开始报数,报到5的人就退出圈(图中白色的表示退出圈),再从下个人开始报数,问最后剩下的那个人是第几个人。

(1)提示:

1)建立一个结构体:

structNode//定义一个结点结构类型

{intnum;//序号

charname[10];//姓名

structNode*next;

}stNode;

并将头指针设为全局变量stNode*head;

2)要求在程序建立几个函数:

voidinitStLink()//初始化链表

voidCreateStLink()//创建循环链表,

voiddispStLink()//输出链表信息

stNode*find()//报数为5的人出队列

在主函数中调用以上函数,实现程序的要求。

(3)撰写实验报告

实验5类与对象的应用(4学时)

一、实验目的:

1掌握类和对象的概念、定义和使用方法。

2掌握不同特性对象成员的访问方法,以及this指针的概念和使用方法。

3掌握构造函数和析构函数的使用方法。

二、实验内容:

1.写出下列程序的执行结果,然后上机进行验证。

#include

#include

classX

{

intn;

public:

X();

X(inta);

~X();

};

X:

:

X():

n(3)

{

cout<<"调用构造函数X()"<

}

X:

:

X(inta):

n(6)

{

n=n+a;

cout<<"调用构造函数X(inta)"<

}

X:

:

~X()

{

cout<<"调用析构函数"<

}

voidmain()

{

Xa;

cout<<"------a-------"<

Xb(7);

cout<<"------b--------"<

cout<<"析构函数执行情况:

"<

}

⑴提示

通过设置断点,以单步执行的方式跟踪构造函数、析够函数的执行顺序。

所谓断点就是程序运行时需要暂时停止执行的语句。

程序员可以为程序需要观察的语句设置断点,以“单步执行”的方式跟踪和检查程序当前的各种状态值。

在C++程序文件中设置断点,并以“单步执行”的方式跟踪程序执行的过程和检查变量的值的操作步骤是:

●在主窗口中打开源文件“ex10_8”,并对该文件进行编译和链接;

●把光标移动到需要设置断点的语句,单击鼠标右键,弹出如图10-8所示的快捷菜单,单击“Insert/RemoveBreakpoint”菜单项,在语句左边空白处出现一个红色的圆点,再选择一次为为取消断点。

也可以选择工具栏上的

按钮,单击一次设置断点,再单击一次为取消断点。

注意,断点语句应该是有变量的语句。

可以在程序中设置多个断点,但断点不能太多。

图10-8添加断点的快捷菜单

●单击“组建/开始调试/Go”菜单项或按F5功能键,如图10-9所示,或按工具栏上的

按钮,系统开始执行程序。

进入调试状态后,菜单栏上的“组建”菜单项变为“调试”菜单项,主窗口中出现调试工具栏(如果没有出现的化,将鼠标位于工具栏上单击右键,在下拉菜单项中选择“调试”,调试工具栏就会出现)。

执行到断点语句“cout<<"调用构造函数X()"<

如图10-10所示。

通过主窗口的菜单“查看/调试窗口”或通过组合键Alt+3~Alt+8打开各个调试窗口,以查看当前程序的执行情况。

●若要停止调试程序,可以单击“调试/StopDebugging”菜单项,或单击工具栏上的

按钮,系统停止调试程序。

图10-9单步调试

图10-10单步调试状态下的主窗口

⑵要求

●在上述程序中设置断点,观察构造函数、析构函数的执行顺序及变量n值的变化;

●对象作为类的数据成员,测试构造函数和析构函数的调用顺序;定义类CTs类,有两个数据成员,分别是类CStudent、类CTeacher的对象。

定义如下:

classCStudent

{

public:

CStudent()//学生类构造函数

{

cout<<"constructingstudent"<

}

~CStudent()//学生类析构函数

{

cout<<"denstructingstudent"<

}

};

classCTeacher

{

public:

CTeacher()//教师类构造函数

{

cout<<"constructingteacher"<

}

~CTeacher()//教师类析构函数

{

cout<<"destructingteacher"<

}

};

classCTs

{

CStudentstudent;//学生对象数据成员

CTeacherteacher;//教师对象数据成员

public:

CTs()//教师学生类构造函数

{

cout<<"costructingts"<

}

~CTs()//教师学生类析构函数

{

cout<<"destructingts"<

}

};

⑶写实验报告

2.定义一个学生通讯录类,数据成员包括:

学号、姓名、院系、通讯地址、电话;成员函数包括:

输出各个数据成员的值,分别设置和获取各个数据成员的值。

⑴提示

由于姓名、院系和通讯地址的数据长度是可变的,可使用动态的数据结构。

电话可以用一个字符数组存放。

将数据成员均定义为私有的。

用一个成员函数输出所有的成员数据,用五个成员函数分别设置学号、姓名、院系、通讯地址和电话,另用五个成员函数分别获取学号、姓名、院系、通讯地址和电话。

classCStudent

{

intnumber;//学号

char*p_name;//姓名

char*p_school;//院系

char*p_address;//通讯地址

chartel[15];//电话

public:

voidshow();//输出数据成员

CStrudent(intun,char*pn,char*ps,char*pa,chart[]);//构造函数

voidsetname(char*name)//设置姓名

{

if(p_name)delete[]p_name;//释放存储空间

p_nam

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1