指导书试验大纲和试验要求.docx

上传人:scccc 文档编号:12978624 上传时间:2021-12-09 格式:DOCX 页数:48 大小:427.63KB
返回 下载 相关 举报
指导书试验大纲和试验要求.docx_第1页
第1页 / 共48页
指导书试验大纲和试验要求.docx_第2页
第2页 / 共48页
指导书试验大纲和试验要求.docx_第3页
第3页 / 共48页
指导书试验大纲和试验要求.docx_第4页
第4页 / 共48页
指导书试验大纲和试验要求.docx_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《指导书试验大纲和试验要求.docx》由会员分享,可在线阅读,更多相关《指导书试验大纲和试验要求.docx(48页珍藏版)》请在三一文库上搜索。

1、面向对象程序设计 C+实验大纲实验课程名称:面向对象程序设计C+实验英语译名:Experiments of Object-OrientedProgramming C+课程性质:专业基础课适用学生层次:本科适用专业:计算机科学与技术、物联网工程实验项目数:8实验总学时数:18教材及参考书:1 .C+面向对象程序设计教程(第3版)陈维兴,林小茶编著清华大学出版社 2009.62 .实用C+教程高教出版社3 .实用C+实验教程高教出版社考核方式:实验报告和实验程序操作考查面向对象程序设计 C+实验大纲 工第一部分实验教学的指导思想和要求3.1、教学目标:3.2、基本要求:3.3、实验前的准备工作。3

2、.4、撰写实验报告4.5、实验报告提交注意事项:5.第二部分、实验学时分配5.第三部分、实验内容6.实验 1 熟悉 VC+6.0 的编程环境(2 学时) 6.实验 2 数组( 2 学时) 1.5.实验 3 函数( 2 学时) 1.7.实验 4 指针和引用(4 学时) 2.0实验5 类与对象的应用(4 学时) 2.4实验 6 继承与派生类(2 学时) 3.5实验7 虚函数和多态性(2 学时) 3.8实验 8 文件( 2学时) 4.1.第一部分实验教学的指导思想和要求1、教学目标:C+是一门高效的程序设计语言,即可进行过程化设计,也可进行面向对象程序设计,是目前面向对象程序设计语言中具有最广泛基础

3、的一门语言,也是作 为应用软件和系统软件的最佳开发工具之一。通过该课程的学习,学生能掌握C+程序设计基础知识,程序设计方法与基本数据结构。通过上机实践,培养学 生分析具体问题、建立数学模型、用 C+解决实际问题的能力,培养学生创新意 识和提高学生实践能力。在课程教学的整个过程中要帮助学生抛弃原来的编程习惯和思考方法,建立面向对象的编程思想。2、基本要求:了解计算机处理信息的过程以及描述用计算机解决问题的表示方法;熟悉和使用C+程序设计的开发环境;理解面向对象程序设计的基本概念; 掌握面向对象程序设计的基本方法与基本思路; 掌握可视化编程的方法。3、实验前的准备工作。了解所用的计算机系统(包括

4、Visual C+6.0)的性能和使用方法。 复习和掌握与本实验有关的教学内容,设计好上机操作步骤。准备好上机所需的程序,切忌不编程序或抄别人的程序去上机。对实验中出现的问题应事先估计,对程序中自己有疑问的地方应先作上记号,以便上机时给予注意。4、撰写实验报告实验报告格式实验报告必须是word文档,其他格式一律不接受。上机实验报告格式实验题目:学院及班级:学号:姓名:一、实验目的:1 .2 .二、实验内容:要求有算法设计、代码编写,程序代码含有一定的注释,运行结果图示。三、实验总结通过上机实践,对所学内容的某个知识点有了更深入的理解,写出一些体会、学 习心得。也可以写算法设计、代码编写、程序调

5、试、程序改进等相关的收获、感 悟。附:原代码5、实验报告提交注意事项:在四川农业大学课程教学平台上提交实验报告,实验报告标题格式:学号+姓名+班级+实验名称。提交后老师会批改,大家要定期查看批改情况,如果要求重新提交的,必须按要求再提交,否则没有成绩,后果自负。第二部分、实验学时分配序号试验项目名称学时1实验1熟悉VC+6.0的编程环境(2学时)验证22实验2数组(2学时)验证23实验3函数(2学时)验证24实验4指针和引用(4学时)综合性45实验5类与对象的应用(4学时)验证46实验6继承与派生类(2学时)验证27实验7虚函数和多态性(2学时)验证28实验8文件(2学时)验证2注意:计算机2

6、014级、计算机(教育)2014级的同学必须全部完成1-8个实验,物联网2013级的同学选做实验4部分内容(实验学时 2学时)具体见实验4第三部分、实验内容实验 1 熟悉 VC+6.0 的编程环境(2 学时)一、实验目的:1 熟悉VC+6.0 集成开发环境;掌握简单C+ 程序的编辑、编译、连接和运行;2 .理解C+语言中的数据类型、表达式;掌握简单C+程序的编写及调试方法;3 .悉C+程序的顺序、分支和循环控制结构及其实现方法;掌握结构化程序设计的基本方法和步骤,进一步学习程序的调试过程;二、实验内容:1 从键盘输入两个整数,求其最大值。提示参考程序如下:#include <iostre

7、am>using namespace std;int max(intx,int y)/定义求最大值函数if(x>y)return x;else return y;void main()intm,n,s;cout<<"输入两个整数:"<<endl;cin>>m>>n;s=max(m,n);cout<<”两个数中的最大值为:"<<s<<endl;要求输入24 6,观察程序运行结果;输入24,6,观察程序运行结果;输入非整数时,观察程序运行结果;/大家想一想为什么?写实验报告

8、2 编程将一个已知的三位整数按倒序形式输出。如已知一个三位整数123,其倒序形式为321。提示输入的三位数为整数,变量类型按整型进行处理。可采用求余数的方法计算各位上的数,并输出,再用除10 所得的商作为输出低位后剩余的数。参考程序如下:#include <iostream>using namespace std;void main()intx,k;cout<<”请输入一个整数:"<<endl;cin>>x;cout<<”按倒序输出整数:"<<endl;while(x!=0)k=x%10;cout<

9、;<k;x=x/10;cout<<endl;要求修改程序,将三位数倒序后存入整型变量中,并输出倒序后的整数。写实验报告3 求两个整数的和。程序如下:提示参考程序如下:#include <iostream>using namespace std;int add(intx,int y) / 求和int s;s=x+y;return s;void main()intx,y,sum;cout<<"输入两个实数:"<<endl;cin>>x>>y;sum=add(x,y); /调用函数,求和cout<

10、<"x+y="<<sum<<endl;要求对于 int 类型的数据,在输入时,不能超过其最大最小值的范围。当输入超过其范围时,观察程序运行结果;修改程序,求输入的3 个整数的大小;本实验以控制台应用程序为例,简单介绍使用Visual C+6.0 的应用程序向导 AppWizard 开放应用程序的一般过程。所谓控制台应用程序,是指在 Windows操作系统环境下运行的字符用户界面DOS程序。本教材中介绍的C+程序都是给予控制台的应用程序,基于图形用户界面的应用程序不做介绍,有兴趣的同学,可以查阅相关资料。在 Visual C+6.0集成开放环境中

11、,C+程序的开发过程与其它高级语言的开发过程相仿,都要经过编辑、编译、链接和运行四个步骤第一步、编辑 编辑是将C+源程序输入计算机的过程。在 Visual C+6.0主界面下,点击“文豆牛|工程| ,LF2 |其它瓦檀|羽归ki甲rile口町苒” hk哺小曲同曲因 Gf St uicf Flit甲悯五件害此 exltl_k1ST件”菜单,选择“新建”菜单项,即可出现“新建”对话框,如图 1所示。lit S« Smpl: H|r aw攵任严肃图1 新建”对话框在弹出窗口中的“文件”标签页下,选择“ C+Source File”选项,在选项卡右 面的“文件名”编辑框里输入文件名如“ex1

12、0_1"。在Visual C+6.0中,由于C+ 源程序的扩展名为“ *cpp”,所以在输入文件名时可以不用输入扩展名。在“位 置”编辑框里输入文件路径,如" e:program”。点击“确定”按钮。将出现“编 辑”窗口,如图2所示。图2 “编辑”窗口在图2所示的右端文件编辑区输入 C+源程序,例如输入实验内容中的第一个源程序,在编辑过程中,可以单击主窗口工具栏上的“保存”按钮,把编辑修改过的源程序文件保存。如果要编辑旧文件,选择 在Visual C+6.0主窗口菜单 栏中的“文件”菜单项,选择下拉菜单中的“打开”菜单选项,在弹出的“打开“对话框中选择扩展名为“*cpp”的

13、文件,系统会在文件编辑区中打开该源文件, 在文件编辑区就可以编辑修改已经打开的文件图3 “编译”源程序窗口第二步、编译编译是使用系统提供的编译器将源程序文件“ex10_1.cpP'生成目标文件“ex10_1.obj”的过程,编译源程序窗口如图3所示。在图3所示的Visual C+6.0主窗口菜单栏上点击“组建”菜单,在下拉菜单中选择“编译”菜单项,屏幕出现“询问是否创建默认项目工作区”对话框,如图 4所示。Tki e b'JLild connt and ireqiaires m active proj ect w or Ie space, onld yioli like td

14、create a default prcjftct vi&rkspict?星 音囚图4 ”询问是否创建默认项目工作区”的对话框在图4所示的对话框中单击“是”按钮,系统开始对源程序文件开始编译。编译器如果发现程序中有语法错误,则在输出区窗口 (如图3所示主窗口的下端窗口)中显示错误信息,这些信息包括出错位置、错误性质及产生错误的原因等。若双击某一条错误信息,相应地就会在文件编辑区窗口中的右边出现一个箭头, 指向出错的程序行。用户可以根据错误提示修改程序。当修改后还需重新编译源 程序文件,直到没有错误信息为止,才能编译通过,将源程序文件“ex10_1.cpp” 编译成目标文件“ ex10_

15、1.obj”。编译也可以采用快捷方式,即单击主窗口工具栏 上的图按钮,系统会自动链编译源程序。第三步、链接编译是使用系统提供的编译器将源程序文件(*cpp)生成机器语言目标文件(*obj)的过程,由于没有得到系统分配的绝对地址,还不能直接运行。只有通 过链接后,才能将目标文件转换成可执行文件(*exe),才可以运行。链接目标文 件的窗口如下图5所示。图5 “链接”目标程序在上图5所示的Visual C+6.0主窗口菜单栏上点击“组建”菜单,在下拉 菜单中选择“组建”菜单项,系统对编译好的程序进行链接,如链接标准库函数 等。如果链接成功,系统会自动生成一个扩展名为“ *exe”的可执行文件。如果

16、 链接失败,则应查找原因,如文件的属性、路径等。链接也可以采用快捷方式, 即单击主窗口工具栏上的 随按钮,系统会自动链接目标程序。 第四步、运行运行是执行可执行文件(“*exe”文件)。运行可执行程序的窗口如下图6 所示。在Visual C+6.0主窗口菜单栏上点击“组建”菜单,在下拉菜单中选择“执行”菜单项,或者使用主窗口工具栏中2按钮来执行可执行文件。图6 “运行”可执行程序程序运行后,系统显示如图7所示的DOS形式的“运行结果”窗口。如果 程序要求用户从键盘输入数据,则等待用户操作,程序成功执行并输出结果。并 显示提示信息“ Press any key tocontinue,此时,按键盘

17、任何一个键,或点击窗 口右上角的算按钮关闭窗口,系统返回到 Visual C+6.0主窗口。图7 “运行结果”窗口如果出现运行错误,应该分析产生错误的原因,可能是输入数据错误、代码错误 等等。如果需要修改源程序,还需要重新编译、链接和运行,直到执行结果正确 为止。按上述步骤编辑、编译、链接、运行实验内容中的第1、2、3个程序实验2数组(2学时)一、实验目的:1 .熟练掌握一维数组的定义、引用和初始化;2 .熟练掌握二维数组的定义、引用和初始化;二、实验内容:1. N个整数的排序。(1)要求1)用一个数组存放各个整数2)在主函数main()中实现数据的输入和输出操作,并用一个函数实现对数 组元素

18、的排序操作。3 )排序函数为swap(inta, intsize); (size为数组的长度)(2)撰写实验报告。2.输入一个nxn的矩阵,求出两条对角线元素值之和以及输出矩阵中最大 值和最小值的下标。(1)提示:C+中对二维数组的处理有两种方式:(1) C+中用new动态创建二维数组的 格式一般是:TYPE (*p)N = new TYPE N;其中,TYPE是某种类型,N是二维数组的列数。采用这种格式,列数必须指出,而行数 无需指定。在这里,p的类型是TYPE*N,即是指向一个有N列元素数组的指针。(2)还有一种方法,可以 不指定数组的列数:int *p;p = new int*10;/注

19、意,int*10表示一个有10个元素的指针数组for (int i = 0; i != 10; +i)pi = new int5;这里是将p作为一个指向指针的指针,它指向一个包含10个元素的指针数组,并且每个元素指向一个有5个元素的数组,这样就构建了一个10行5列的数组。当数组使用完毕,释放空间 的代码是:for(int i = 0; i != 5; i+)delete口 pi;delete口 p;处理二维数组,可以用降维或是二维法。降维法是用一位数组来接受二维数组,将二维元素的首地址&a00作为参数,传递给函数,函数用int *接受。二维法就直接用二维数组来接受,但是需要指定列数。如

20、要想创建一个mn的二维数组。下面为通过动态创建一个指针数组的方法来动态创建二维数组的方法。C版本:double *data;data = (double *)malloc(m*sizeof(double *);for(int j=0;j<m;j+)dataj = (double*)malloc(n*sizeof(double);/这个指针数组的每个指针元素又指向一个数组。for (int i=0;i<m;i+)for (int j=0;j<n;j+)dataij=i*n+j;/初始化数组元素for (i=0;i<m;i+)free(datai);/先撤销指针元素所指向的

21、数组free(data);C+版本:double *data;data = new double*m;/设置行 或直接 double *data=new double*m; 一个指针指向一个指针数组。for(int j=0;j<m;j+)dataj = new doublen;/这个指针数组的每个指针元素又指向一个数组。for (int i=0;i<m;i+)for (int j=0;j<n;j+)dataij=i*n+j;/初始化数组元素for (i=0;i<m;i+)delete口 datai; /先撤销指针元素所指向的数组delete口 data ;这种方法是通过

22、先动态创建一个指针数组,然后为指针数组的每个元素再动态指向一个数 组的办法来完成的。其创建过程与销毁过程两样重要。在销毁的过程,先销毁指针数组每个元素指向的数组,然后再销毁这个指针数组。(2)撰写实验报告。实验3 函数(2学时)、实验目的:1 掌握函数的定义和使用方法;2掌握函数调用的方法;3掌握函数参数传递的机制;4 掌握函数重载的方法。二、实验内容:1求两个自然数m 和 n 的最大公约数和最小公倍数。提示最大公约数就是能同时整除m 和 n 的最大正整数,可用如下算法计算两个数的最大公约数:求两个数 ( m、 n) 相除的余数r(r=m/n m>n), 当余数不为零时,m 取 n 的值

23、, n 取 r 的值,再求两个数相除的余数,反复进行直到余数为零,除数n是最大公约数。最小公倍数=mKn/最大公约数。要求按照上面思想,编程实现从键盘上输入的两个自然数的最大公约数和最小公倍数;输入两个数m=56, n=12 观察程序运行结果;用递归调用的方法实现求最大公约数,参考程序如下:int fun1(int c,int d)int r;r=c%d;if(r!=0)c=d;d=r;fun1(c,d);return d;编程实现求三个数的最大公约数和最小公倍数;写实验报告2 .编程求下式的值:n1+n2+n3+n4+.+n8其中n=l, 2, 3,编写函数时,设置参数n 的默认值为2。提示

24、上述表达式可以写为:f(n)= n1+n2+n3+n4+. .+n10 (n=i, 2, 3 );注意表达 式值的溢出问题。要求定义f(n)函数,实现求上述表达式的值,并设置函数的参数 n的默认值为2;在主函数中调用f(n)函数,实现输入n值时,求出表达式的值;写实验报告3 使用函数重载的方法定义四个同名函数max, 分别求取两个整数、三个整数,两个双精度数、三个双精度数的最大值。提示C+ +编译器根据函数参数表中参数类型和个数进行匹配,调用相应的重载函数,函数返回值不能用来识别重载函数。注意重载函数中使用默认参数时可能产生的二义性。要求在每个重载函数中输出该函数的参数值和求出的最大值;在 m

25、ain 函数中, 当输入不同类型、个数的数据时,调用不同的重载函数,求其最大值;写出实验报告。实验 4 指针和引用(4 学时)物联网 2013 级的同学选做实验4 部分内容(实验学时2 学时)一、实验目的:1 、熟练掌握各种类型指针的定义、引用和运算;2、掌握数组指针和指向数组的指针变量,以及字符串的指针和指向字符串的指针变量;3、了解指针与链表关系。二、实验内容:1输入 10 个整数,将其中最小的数与第一个数对换,把最大的数与最后一 个数对换。提示把输入的10 个整数存入数组中,10 个中最小的放与数组的第一个元素对换,最大的数与数组的第10个元素对换。其他的保持不变。要求定义 3 个函数:

26、void input(int *p); /* 此函数向数组输入10 个元素 */void max_min_value(int *p); /*此函数交换数组的对应元素*/void output(int*p); /*此函数输出数组的10 个元素 */在 main 函数中调用上述3 个函数,实现题目要求的功能;撰写实验报告物联网 2013 级同学 选作题目:2建立一个学生信息链表,每个结点包括:学号、姓名、成绩。实现链表的建立、 显示和查询。查询是指输入一个学号,如果链表中存在该学号的的结点,则显示此结点的数据。提示采用动态分配内存,用new分配内存空间,不需要时用delete释放空间。由 于结点结

27、构中包含两三个域,可以采用C+语言中的结构体类型实现。structstructNode/定义一个结点结构类型 intnum;char name10;float score;structNode *next; stNode;要求在程序中定义了三个函数:void initStLink() ; /初始化链表void createStLink();/创建学生成绩信息链表void dispStLink() ; /输出链表信息定义一个查询函数 stNode * search(stNode *head,int number)其中,第一参 数是链表的头结点,第二个参数是学生的学号。实现当输入一个学生学号,如果

28、链表中存在该学号的的结点,则显示此结点的数据,否则输出没有该学号的结点。定义一个删除函数bool delete(int number),用于删除指定学号的结点。实现当输入一个学生学号,如果链表中存在该学号的的结点,则删除该结点,否则显示链表中没有该学号的结点。撰写实验报告3. n个人围成一圈,从第一个人开始报数,报到 5的人就退出圈(图中白色 的表示退出圈),再从下个人开始报数,问最后剩下的那个人是第几个人。 (1)提示:1)建立一个结构体:struct Node定义一个结点结构类型 intnum; 序号char name10; 姓名 struct Node *next; stNode;并将头

29、指针设为全局变量stNode *head;2)要求在程序建立几个函数:void initStLink()/ 初始化链表void CreateStLink( ) /创建循环链表,void dispStLink( )/输出链表信息stNode *find( ) /报数为5 的人出队列在主函数中调用以上函数,实现程序的要求。( 3)撰写实验报告实验 5 类与对象的应用(4 学时)一、实验目的:1 掌握类和对象的概念、定义和使用方法。2掌握不同特性对象成员的访问方法,以及this指针的概念和使用方法。3 掌握构造函数和析构函数的使用方法。二、实验内容:1写出下列程序的执行结果,然后上机进行验证。#in

30、clude <iostream.h>#include <iomanip.h>class Xint n;public:X();X(int a);X(););X:X( ):n(3)(cout<<"调用构造函数)X:X(int a ):n(6)(n=n+a;cout<<"调用构造函数)X:X()(cout<<"调用析构函数X()"<<setw(8)<<n<<endl;X(int a)"<<setw(5)<<n<<endl

31、;"<<n<<endl;void main()X a;cout<<"a"<<endl;X b(7);cout<<"b"<<endl;cout<<"析构函数执行情况:"<<endl;提示通过设置断点,以单步执行的方式跟踪构造函数、析够函数的执行顺序。所 谓断点就是程序运行时需要暂时停止执行的语句。程序员可以为程序需要观察的 语句设置断点,以“单步执行”的方式跟踪和检查程序当前的各种状态值。在C+程序文件中设置断点,并以“单步执行”的

32、方式跟踪程序执行的过程和检查变量的值的操作步骤是:在主窗口中打开源文件“ ex10_8',并对该文件进行编译和链接;把光标移动到需要设置断点的语句,单击鼠标右键,弹出如图 10-8所示 的快捷菜单,单击“ Insert/Remove Breakpoint”菜单项,在语句左边空白 处出现一个红色的圆点,再选择一次为为取消断点。也可以选择工具栏上 的则按钮,单击一次设置断点,再单击一次为取消断点。注意,断点语 句应该是有变量的语句。可以在程序中设置多个断点,但断点不能太多图10-8添加断点的快捷菜单单击“组建/开始调试/Go”菜单项或按F5功能键,如图10-9所示,或按 工具栏上的 &qu

33、ot;按钮,系统开始执行程序。进入调试状态后,菜单栏上的“组建”菜单项变为“调试”菜单项,主窗口中出现调试工具栏(如果没 有出现的化,将鼠标位于工具栏上单击右键,在下拉菜单项中选择“调试”, 调试工具栏就会出现)。执行到断点语句“cout<<"调用构造函数 X()"<<setw(8)<<n<<endl; "时,程序的执行进入调试状态,在主窗口底部 自动弹出变量窗口,显示断点出现的变量的值。如图 10-10所示。通过主 窗口的菜单“查看/调试窗口”或通过组合键 Alt+3Alt+8打开各个调 试窗口,以查看当前程序的执

34、行情况。若要停止调试程序,可以单击“调试/Stop Debugging”菜单项,或单击工 具栏上的王按钮,系统停止调试程序。附尊-Tisaol C+ - fexlOJ. o»'要求曲室伴旧有沿型在专在|塾人I1程冬组注的工具勺)宣二g帮班如A曜R 64 匚史 口X- |All claes mEmbrn赤1 #ii *Q_ft rp I.宪 I SUlCljB AMw ) 当全言短Clrl-FTFT制作区*wiu_6'cxio B tile* rxl n R.cpp北加*包川匕一:洋行nJ >野运财造序.Il=ll*j; ! 3VJ aulQ B 02 J Ctr

35、l'fSCUUt代'W)讲话工母比胃I).:,二寸<)值文外cout«*i6 用忻构倒数 +,«n«eMl;>明nidi iiaino制守下喷 覆幽 !力心nCCendl;下1 Htp jxt*m*1 )- Eue I e> giar var C hr JL4P LU 曲!出当葩迸113.exlli H .exp - H rrDr() r 。uarninq(写)Fh甘萍/I聆t,在殳锌L中查我(在文件曲杳第里 cTDeE *Slants ur tsnih阳E5 Ui£ pruqaim7亍 Z5 手“I图10-9单步调试图

36、10-10单步调试状态下的主窗口在上述程序中设置断点,观察构造函数、析构函数的执行顺序及变量n值的变化;对象作为类的数据成员,测试构造函数和析构函数的调用顺序;定义类CTs类,有两个数据成员,分别是类 CStudent、类CTeacher的对象。定义如下:classCStudentpublic:CStudent() /学生类构造函数cout<<"constructing student"<<endl;CStudent() /学生类析构函数cout<<"denstructing student"<<endl;

37、classCTeacherpublic:CTeacher()/教师类构造函数cout<<"constructing teacher"<<endl;CTeacher() /教师类析构函数cout<<"destructing teacher"<<endl;class CTsCStudent student; /学生对象数据成员CTeacher teacher; /教师对象数据成员public:CTs() /教师学生类构造函数cout<<"costructingts"<<

38、;endl;CTs() /教师学生类析构函数cout<<"destructing ts"<<endl; ;写实验报告2定义一个学生通讯录类,数据成员包括:学号、姓名、院系、通讯地址、电话;成员函数包括:输出各个数据成员的值,分别设置和获取各个数据成员的值。提示由于姓名、院系和通讯地址的数据长度是可变的,可使用动态的数据结构。电话可以用一个字符数组存放。将数据成员均定义为私有的。用一个成员函数输出所有的成员数据,用五个成员函数分别设置学号、姓名、院系、通讯地址和电话,另用五个成员函数分别获取学号、姓名、院系、通讯地址和电话。class CStudent

39、int number; /学号char *p_name;姓名char *p_school;院系char *p_address;/S讯地址char tel15;/电话public:void show();/输出数据成员CStrudent(intun,char *pn,char *ps,char *pa,char t);/件勾造函数 void setname(char *name) /设置姓名/if(p_name ) delete p_name;/释放存储空间p_name = new charstrlen(name)+1;/f3请存储空间strcpy(p_name,name);void setnu

40、mber(int number);/ /设置学号void setschool(char *school);/股置院系void setaddress(char *address);汲置通讯地址void settel(char *mailnum);设置电话intgetnumber();/获取学号char *getname();/瞰姓名char *getscool();/取学校char *getaddress();/取电话号码char *gettel();取邮编;要求完成上述成员函数的定义;用以下数据测试程序的正确性:定义类对象CStudents(2004005张三工学院算机系四川雅安雨城区新康路4

41、9号邮编625014 0123344);输出对象s的数据成员的值;调用成员函数,修改对象s中的数据成员值;写出实验报告。3对象作为函数参数提示由于类是一个数据类型,也可以将类作为参数传递给函数,参数传递遵循传值(或传地址)的方式,这同所有其他的数据类型是相同的。类对象作形参有3种方式:对象本身做参数(传值),传对象副本对象引用做参数(传地址),传对象本身对象指针做参数(传地址),传对象本身注意:当函数参数是类类型时,调用函数时用实参初始化形参,要调用拷贝构造函数。通常默认的拷贝构造函数就可以实现实参到形参的复制,若类中有指针类型时,用户必须定义拷贝构造函数,实现实参到形参的复制。参考程序如下:

42、#include <iostream.h>#include <string.h>#include <stdlib.h>classCStrSubchar *str;public:CStrSub(char *s);CStrSub(CStrSub&); CStrSub();void set(char *s);void show()cout<<str<<endl;CStrSub:CStrSub(char *s)str=new charstrlen(s)+1;if(!str)cout<<"申请空间失败! "

43、;<<endl;exit(-1);strcpy(str,s);CStrSub:CStrSub(CStrSub&temp) str=new charstrlen(temp.str)+1;if(!str)cerr”申请空间失败! "<<endl;exit(-1);strcpy(str,temp.str);CStrSub: CStrSub( )if(str!=NULL) delete str;voidCStrSub:set(char *s)delete str;str=new charstrlen(s)+1;if(!str)coutvv”申请空间失败! &q

44、uot;<<endl;exit(-1);strcpy(str,s);CStrSubinput(CStrSub temp)char s20;coutvv”输入字符串:"vvendl;cin>>s;temp.set(s);return temp;void main()CStrSuba( “ hello ” );a.show( );CStrSub b=input(a);a.show( );b.show( );要求修改input (CStrSub temp)函数,对象引用、对象指针作为函数参数时, 程序执行结果与对象作为函数参数有什么不同。( 3)撰写实验报告实验 6

45、 继承与派生类(2 学时)一、实验目的:1 理解继承与派生的概念;2掌握派生类构造函数的定义和初始化;3掌握派生类析构函数的定义;4理解多重继承的概念;5掌握派生类构造函数、析构函数的执行顺序;二、实验内容:1 定义一个日期类和一个时间类,并由这两个类派生出日期时间类。主函数完成基类和派生类的测试工作。分析定义一个日期类,有私有数据成员年、月、日,构造函数完成年、月、日的初始化,两个成员函数分别实现设置日期和获取日期。该类可定义为:class CDateint year,month,day; /分别存放年、月、日public:CDate(int y=0, int m=0,int d=0);void setDate(int ,int ,int );char * getDate();函数setDate完成数据成员的赋初值。函数getDate要将整数年、月、日变换成字符串后,存放到字符串中。把一个整数变换成字符串可通过如下库函数来实现。char * _itoa(int a , char *

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1