C程序设计谭浩强版实验指导书

上传人:痛*** 文档编号:101165712 上传时间:2022-06-04 格式:DOC 页数:26 大小:124.50KB
收藏 版权申诉 举报 下载
C程序设计谭浩强版实验指导书_第1页
第1页 / 共26页
C程序设计谭浩强版实验指导书_第2页
第2页 / 共26页
C程序设计谭浩强版实验指导书_第3页
第3页 / 共26页
资源描述:

《C程序设计谭浩强版实验指导书》由会员分享,可在线阅读,更多相关《C程序设计谭浩强版实验指导书(26页珍藏版)》请在装配图网上搜索。

1、- ?C++程序设计? 实 验 教 学 指 导 书 课程..... 撰写人:朱世华 审核人: 前言 程序设计是一门实践性很强的课程,通过实验可以稳固和加强课堂教学容,提高学生实际工作能力和动手能力,并为后续课程和从事实践技术工作奠定重要的根底。因此,学生在进展理论知识学习的同时,必须十分重视实践环节----上机。 上机实验时应该一人一组,独立上机。在上机过程中出现的问题,一般应自己独立处理,学生应在实验前将教师指定的题目编好程序,然后上机输入和调试。 上机前应事先作好准备工作,以提高上机实验的效率,准备工作至少应包括: (1) 复习和掌握与本实验有关的教学容。 (2) 准

2、备好上机所需的程序。 (3) 对运行中可能出现的问题应事先做出估计;对程序中有疑问的地方,应做上记号,以便上机时给予注意。 (4) 准备好调试和运行时所需的数据。 实验设备与环境: 1、硬件配置 PentiumⅡ以上PC兼容机或品牌机,配有彩色显示器、鼠标、键盘,存不小于32MB,硬盘自由空间不少于60MB。推荐配置为存256MB〔或以上〕,硬盘自由空间1GB以上。 2、软件配置 操作系统:Windows *P,Windows 2000以上版本 开发环境:Microsoft Visual C++ 2021以上版本。 目录 实验一 Visual C++ 2021的根本用法1

3、 实验二数据类型、运算符和表达式4 实验三三种根本构造的实现17 实验四三种根本构造的实现29 实验六指针13 实验七函数14 实验八构造和联合17 实验九类与对象20 实验十综合实验23 . z - 实验一 Visual C++ 2021的根本用法 一、实验目的 1. 熟悉Visual C++2021集成开发环境的根本命令和功能键。 2. 学习完整的C++ 程序开发过程。 3. 理解简单的C++ 程序构造。 二、实验容与步骤 本次实

4、验将学习有关Visual C++ 开发环境的一些知识,并尝试实现一个简单的DOS程序和Windows程序。通过本次实验,可以了解用Visual C++ 开发应用程序的全过程。 1、熟悉Visual C++ 开发环境 我们选择Visual C++那一项就可以了。以下列图是VS2021翻开后的画面,当然可能你的界面跟我的不一样,没关系,那只是设置问题。 菜单栏我们常用的是File,View和Debug菜单下的菜单项。工具栏各项其实在菜单栏都有与它们对应的菜单项,功能是一样的。左侧面板可以放多个视图,我这里放了解决方案浏览器、类视图和资源视图,解决方案浏览器中我们可以看到所有头文件和源文件构成

5、的树,头文件就是.h后缀的文件,源文件就是.cpp后缀的文件,类视图中显示了每个工程的每个类,也是树状构造,在解决方案浏览器或类视图中双击每一项,中间区域都会翻开相应的文件或者到类的位置。资源视图中显示了界面工程中使用的一些界面资源。中间区域默认是翻开start page,翻开一个工程后我们在左侧面板上双击*项时,中间区域会出现相应的界面。右侧面板上有个Toolbo*,是在界面工程中用来往界面资源模板上添加控件的,里面包含了各种控件,直接拖到模板上就行了。底侧还有几个标签,其中一个是output,这是输出视图,用来输出程序运行信息和我们程序中写的一些调试信息,还有一个Find Result视图

6、,用来显示我们搜索任何字母或单词的结果。 File->New->Project项可以创立一个工程,也可以在start page中点击New Project...,然后出现的New Project窗口中有多个工程类型可以选择, Win32 Console Application是Win32控制台程序,MFC Application是MFC应用程序,可以建立以开发界面程序,Win32 Project是Win32程序,Empty Project是空程序,MFC DLL用来建立生成动态库的工程,其它的不常用就不介绍了。我们要建立一个没有应用程序界面的只有Dos命令行界面的工程就选Wi

7、n32 Console Application项,我们学习C++根底知识用这个就可以了。它跟Win32 Project的区别是,它的入口是main函数,而Win32 Project的入口是WinMain函数。 File->Open->Project/Solution可以翻开以前建立的工程或者解决方案,一个解决方案中可以包含多个工程,你可以把它理解为多个有关系或者没关系的工程的集合,有时把多个工程放到一个解决方案里调试起来很方便。 在View下的菜单项我们就可以控制它。View->Solution E*plorer可以翻开或关闭解决方案浏览器视图,View->Class Vi

8、ew用来控制类视图的显示,View->Resource View控制资源视图的显示,当然只有界面工程的资源视图中才会有容。View->Output和View->FindResults等项大家应该也知道它们的含义了吧。 Debug->Start Debugging〔快捷键是F5〕用来开场调试,Debug->Toggle Breadpoint〔快捷键是F9〕用来设置断点,设置断点后然后开场调试,程序运行到断点时会停下来,我们用鼠标放到断点处的各个变量上时可以看到当时这些变量的值。Debug->Start Without Debugging表示不调试直接运行,也就是到断点处也不会停顿

9、运行。Debug->Step Into〔快捷键是F11〕用来单步执行,遇到子函数就进入并且继续单步执行;Debug->Step Over〔快捷键是F10〕也是单步执行,但在单步执行时,在函数遇到子函数时不会进入子函数单步执行,而是将子函数整个执行完而跳到下一步,也就是把子函数整个作为一步。 工具栏上有个下拉列表框,它包含有Debug、Release和Configuration Manager,选择Debug时为调试模式,生成的可执行程序中包含调试信息,我们可以调试并清楚的看到变量值,选择Release时生成的可执行程序中不含调试信息,在设置断点后看到的变量值可能不准确。

10、 msdn帮助可以点Help->View Help〔快捷键是F1〕,也可以点开场->Microsoft Visual Studio 2021->Microsoft Visual Studio 2021 Documentation翻开。 2、控制台应用程序的建立 用Appwizard建立一个控制台应用程序,在显示器上输出“Hello,World!〞。 〔1〕创立工程〔project〕 首先创立一个工程,用来管理用户的应用程序。创立工程的步骤为: ① 启动visual Studio 2021。 ② 从主菜单中选择菜单项“File〞→“New〞,翻开“New〞对话框。 ③ 选择

11、“Projects〞标签,从工程列表中单击“Win32 Console Application〞选项。 在“project name〞编辑框中键入工程的名字,如“hello〞,系统将自动为用户的工程分配一个默认的目录。也可以在“Location〞编辑框中重新输入工程存放路径。 单击“OK〞按钮继续。 〔2〕编辑源程序 在工程中添加一个文件: ① 从主菜单中选择菜单项“File〞→“New〞,翻开“New〞对话框。 ② 在“New〞对话框中选择“File〞标签,单击“C++ Source File〞选项,建立源文件〔扩展名为.cpp〕。选中“Add to Project〞复选框。在右

12、边的“File name〞编辑框中为文件指定一个名字,如“Hello〞,系统将自动加上后缀“.cpp〞。 这时在编辑窗口将自动翻开一个新的空白文件,在文件中输入源程序。 本例中输入以下容: #include void main() { cout<<〞hello,world!〞<

13、,则,在屏幕下方的输出窗口将会显示: hello.obj--0 error(s),0 warning(s) 如果在编译时得到错误或警告,则说明源文件出现错误,检查源文件,改正错误后再编译,直至无误。 〔5〕程序 选择菜单项“Build〞→“Build Hello.e*e〞程序,如果过程中没有错误,则在输出窗口会显示: hello.e*e--0 error(s),0 warning(s) 如果有错误,应改正,然后重复〔4〕、〔5〕,直至无误。 〔6〕运行程序 选择菜单项“Build〞→“E*ecute Hello.e*e〞运行程序,将显示一个类似于DOS的窗口,在窗口中第一行

14、输出 “hello,world!〞,第二行输出“Press any key to continue〞,提示用户按任意键回到开发环境。 3、编写一个简单的C++ 程序 要求:输入圆的半径,计算圆的周长和面积。 步骤: (1) 按照上面的步骤创立一个工程,名字为“Circle〞。 (2) 在工程中增加一个文件,命名为“Circle.cpp〞。 (3) 在文件中输入源程序如下: *include const double PI = 3.14159; // 定义符号常量 void main( ) { double radius; /

15、/ 定义半径 double perimeter, area ; // 定义周长和面积 cout<<"请输入圆的半径:"; cin>>radius; perimeter=2*PI*radius; // 计算周长 area=PI*radius*radius; // 计算面积 cout<<"圆的周长为:"<

16、.5397 输入:7 输出: 圆的周长为: 43.9823 圆的面积为: 153.938 思考问题: (1) 程序中为什么要包含头文件iostream.h. (2) 建立控制台应用程序的一般步骤是怎样的. 实验二 数据类型、运算符和表达式 一、实验目的 1. 掌握Visual C++ 根本数据类型的字节宽度和围表示,熟悉如何定义一个整型、字符型和实型变量,以及对它们赋值的方法。 2. 掌握不同类型数据之间赋值的规律。 3. 学会使用C++的有关算术运算符,以及包含这些运算符的表达式,特别是自增〔++〕和自减〔――〕运算符的使用。 4. 进一步熟悉C++程序的编辑、编

17、译、连接和运行的过程。 二、实验容与步骤 1、根本数据类型的长度 编写一个程序,输出根本数据类型char、short、int、long、float、double和指针类型void*、char*、short*、int*、long*、float*、double*的数据类型的长度。 要求: 弄清所使用的系统上运行的C++编译器中每个根本数据类型的长度。 提示: 利用运算符sizeof(数据类型名)来得到各个数据类型的长度。 思考问题: 为什么所有的指针长度都一样. 2、整型、字符型变量的定义及赋值 (1) 输入并调试运行下面的程序 *include

18、 void main( ) { char c1, c2; c1=’a’; c2=’b’; cout<

19、、3行改为: c1=〞a〞; // 用双撇号 c2=〞b〞; 再使之运行,分析其运行结果。 ⑥ 将第2、3行改为: c1=300; //用大于127的整数 c2=400; 再使之运行,分析其运行结果。 (2) 输入并调试运行下面的程序 *include void main( ) { char c1=’a’, c2=’b’, c3=’c’, c4=’\101’, c5= ’\116’; cout <

20、b〞< void main( ) { int *, y, m, n; * = 8; y = 10; m = ++*; n = y++; cout<<*<

21、++y; 再运行。 ③ 将程序改为: *include void main( ) { int *,y; * = 8; y = 10; cout<<*++< void main ( ) {

22、 int *, y, m=0, n=0; * = 8; y = 10; m += *++: n -= --y; cout<<*<

23、m.h> void main() { int a,b,c,ma*; //定义四个整型变量 cin>>a>>b>>c; if(a>= b) ma* = a; //a>=b else ma* = b; //ama*) ma* = c; //c是最大值 cout<<"ma*="<

24、*学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上〔包括90〕:A 80至90〔包括80〕:B 70至80〔包括70〕:C 60至70〔包括60〕D 60分以下:E 输入以下程序并调试运行。 *include void main() { float score; char grade; cout<<"input a student score:"; cin>> score; if(score <0|| score >100) cout<<"input error!"<

25、tch( int〔score〕/10 ) { case10: case9: grade = 'A';break; case8: grade = 'B';break; case7: grade = 'C';break; case6: grade = 'D';break; default: grade = 'E'; } cout<<"the student scort:"<< grade <

26、 * ( *<1 ) y = 2*-1 ( 1≤*<10 ) 3*-11 ( *≥10 ) 用cin语句输入*的值,求y值。 运行程序,输入*的值〔分别为*<1、1≤*<10、*≥10三种情况〕,检查输出的y值是否正确。 思考问题: (1) if语句和switch语句适合于什么情况. (2) 能否用switch语句完成对输入值的判断. 实验四 三种根本构造的实现2 一、实验目的 1、学会正确使用逻辑运算符和逻辑表达式。

27、 2、理解并掌握程序的循环构造。 3、熟练掌握用while语句、do—while语句和for语句实现循环的方法。 4、 掌握在程序设计中用循环的方法实现一些常用算法〔如穷举、迭代、递推等〕。 5、 进一步学习调试程序。 二、实验容与步骤 1、打印500以的“水仙花数〞。“水仙花数〞是一个3位数,其各位数立方和等于该数本身。 输入以下程序并调试运行 *include void main() { int i, j, k, n; for ( n = 100; n<=500; n++ ) { i= n/100; j =

28、 n/10-i*10; k = n%10; if ( n==i*i*i+j*j*j+k*k*k) cout< void main() { int n, s, j; for ( n=1; n<=500; n++ ) { s=0; for ( j=1; j

29、 s=s+j; if ( s==n ) cout<

30、过50的局部按原工资的3倍的加班工资来计算。而40到50小时的工资仍按照原工资的1.5倍的加班工资来计算。 要求: 〔1〕分别用三种循环〔for、while、do--while〕完成程序要求。 〔2〕要求有输入提示和输出提示,如要输入雇员的工作时间和每小时的工资值时,可以提示: “请输入雇员的工作时间和小时工资:〞 输出时,提示: “雇员工资为:〞 〔3〕循环在用户输入的工作时间为0时完毕。 测试数据: 输入:30 4 输出:120 输入:45 4.5 输出:213.75 输入:60 5 输出:425 输入:0 0 程序完毕 思考问题: (1) 三种循环语

31、句都适合于什么情况.如果已经知道要计算的雇员的数目〔如10个〕,用哪种循环更方便. (2) while、do—while的区别.实验五 数 组 一、实验目的 1、 掌握一维数组和二维数组的定义、赋值和输入输出的方法。 2、 掌握字符数组和字符串函数的使用。 3、 掌握与数组有关的算法〔特别是排序算法和查找算法〕。 二、实验容与步骤 1、输入一串字符,计算其中*字符的个数。 输入以下程序并调试运行。 *include void main( ) { char c[30]; int i , sum=0;

32、 cin>>setw(30)>>c; for ( i=0; c[i]!=’\0’; i++ ) if (c[i] == ‘*‘) sum=sum + 1; cout << c <

33、要求:用一个数组存放各个整数,用cin 语句输入。 提示:选择排序法的算法如下: (1) 从n个数中选择最小的一个,把它和第一个数组元素交换; (2) 从剩下的n – 1个数中选择最小的一个,把它和第二个数组元素交换; (3) 依此类推,直到从最后两个元素中选出倒数第二小的元素并把它和倒数第二个元素交换为止。 测试数据: 程序先输出:请输入数据个数:: 用户输入: 5 程序再输出:请输入全部数据: 用户输入: 31 75 63 45 58 程序输出: 31 45 58 63 75 4、有假设干个数存放在一个数组中,输入一个数,要求用

34、折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数〞。 要求:假设干个数用赋初值的方法在程序中给出,要找的数用 cin语句输入。 提示:折半查找法: 折半查找的思想为:在有序表中,取中间元素作为比较对象,假设给定值与中间元素的关键码相等,则查找成功;假设给定值小于中间元素的关键码,则在中间元素的左半区继续查找;假设给定值大于中间元素的关键码,则在中间元素的右半区继续查找。不断重复上述查找过程,直到查找成功,或所查找的区域无数据元素,查找失败。 〔1〕low=0;high=length-1; //设置初始区间 〔2〕当

35、low>high时,返回查找失败信息 //表空,查找失败 〔3〕low<=high,mid=〔low+high〕/2; //取中间 ① 假设k*elem[mid],low=mid+1;转〔2〕 //查找在右半区进展 ③ 假设k*==elem[mid],返回数据元素在表中位置 //查找成功 测试数据: 例如,有序表{20,25,30,36,42,48,55,61,69,72,83,97} 程序先输出: 请输入一个整数: 用户输入:

36、 72 程序则应输出: 数据72在有序表中的位置下标是10。 用户输入: 35 程序则应输出: 在有序表中无此数! 5、将两个字符串起来。 要求:不使用strcat函数。 提示:定义两个字符型数组,找到第一个串的最后一个字符位置,将第二个串的字符依次放入。注意串的完毕标志“\0〞。 6、找出一个二维数组的“鞍点〞,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。 提示: 用cin语句从键盘输入数组各个元素的值,检查结果是否正确。题目并未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。因此,从理论上来说,应当准备许多种不同行数和列数的数组数据

37、,但这样的工作量太大,一般来说不需要这样做,只需要准备典型的数据即可。 如果已指定了数组的行数和列数,可以在程序中对数组元素赋初值,而不必用cin语句。请同学们修改程序以实现之。 测试数据:〔至少应当准备两组测试数据〕 〔1〕二维数组有鞍点    9 80 205 40 90 -60 96 1 210 -3 101 89 〔2〕二维数组没有鞍点    9 80 105 40 90 -60 196 1

38、 210 -3 101 89 实验六 指 针 一、实验目的 1、 掌握指针的概念,会定义和使用指针变量。 2、 能正确使用数组的指针和指向数组的指针变量。 3、 能正确使用字符串的指针和指向字符串的指针变量。 4、 了解二级指针的概念及其使用方法。 二、实验容与步骤 1、输入两个整数,按由大到小的顺序输出。 输入以下程序并调试运行。 *include void main() { int a, b; int * p=&a, *q=&b, *t; cout<<"请输入a和b:"; cin>>a>>b; if

39、 ( a

40、使用指针数组处理。 5、使用动态存分配技术设计一个计算学生平均成绩的程序,学生个数和课程门数是任意的,使用二维数组,程序按平均成绩从大到小输出每个学生的成绩。 实验七 函数 一、实验目的 1、掌握函数的定义和调用方法。 2、掌握函数实参与形参的对应关系以及C++的三种函数参数传递机制。 3、掌握函数嵌套调用和递归调用的方法。 4、掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法。 二、实验容与步骤 1、写一个判断素数的函数,在主函数中输入一个整数,输出是否是素数的信息。 输入以下程序并调试运行。 *include *include

41、ath.h> *include int prime(int number) { int flag=1, n; for ( n=2; n<= int(sqrt(number)) && flag == 1; n++) if (number%n ==0) flag = 0; return flag; } void main ( ) { int number; cout<<"请输入一个正整数:"; cin>>number; if (prime(number)) cout<

42、 int n=0; int func( int *=10 ); void main() { int a, b; a=5; b=func(a); cout<<〞\nlocal a=〞<

43、b<

44、b; } 运行该程序,得到执行结果。分析得到的结果,说明为什么得到这样的结果。 3、递归函数与非递归函数。 编写一个函数,求从n个不同的数中取r个数的所有选择的个数。其个数值为: n! C rn= r!*〔n-r〕! 其中:n!=n*(n-1)*(n-2)*……..*1。 要求: (1) 分别用递归和非递归两种方式完成程序设计; (2) 主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序完毕; (3) 能检查输入数据的合法性,要求n>=1并且n>=r; (4) 注意整数能存放的数据围有限,如何解决.

45、 提示: (1) 可以用double数据类型来存放函数的计算结果。 (2) 递归完毕条件: 如果r=0,则C(n,r)=1; 如果r=1, 则C(n,r)=n。 测试数据: 输入:5 3 输出:10 输入:10 20 输出:Iput Invalid1 输入:50 3 输出:1.*IND 输入:0 0 Iput Invalid1 程序完毕 思考问题: (1) 对各种数据类型的字长是否有了新的认识. (2) 递归函数的书写要点是什么. (3) 递归和非递归函数各有哪些好处. 5、 求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数,用另一个函

46、数求最小公倍数。 〔提示:可以用下面的方法求:   一、利用辗除法或其它方法求得最大公约数; 二、 最小公倍数等于两数之积除以最大公约数。) 要求: 两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再和两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。 实验八 构造和联合 一、实验目的 1、 掌握构造体类型变量的定义和使用。 2、 掌握构造数组的概念和使用。 3、 掌握链表的概念,初步学会对链表进展操作。 4、 掌握联合体的概念与应用。 二、试验容与步骤 1、输入和运行以下程序。

47、 *include union data { short int s[2]; float a; int b; char c[4]; }u; void main() { cin>>u.s[0]>>u.s[1]; cout<<"s[0]="<=90"<

52、 } } 3、设计一个单向链表。从标准输入读取假设干整数,建立链表,每次读入的数放入链表结尾。当用户输入0时,完毕链表的建立工作。然后从前往后依次输出链表结点中的容。 提示: (1) 链表结点空间动态申请。 (2) 因为每次新结点插入在表尾,所以应设一个指针总是指向当前的表尾。 (3) 处理申请不到空间的情况。 测试数据: 程序输出:请输入假设干整数建立链表〔输入0完毕〕: 用户输入:1 2 3 4 5 6 7 0 程序输出:1 2 3 4 5 6 7 思考问题: 如果是双向链表,程序要做哪些改动. 4、有10个学生,每个学生的数据包括

53、**、、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课的平均成绩,以及最高分学生的数据〔包括**、、3门课的成绩、平均分数〕。 要求: 用input函数输入10个学生的数据;用average函数求平均分;用ma*函数找出最高分的学生数据;平均分和最高分学生的数据都在主函数中输出。 5、建立一个链表,每个结点包括:**、、性别、年龄、。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。 实验九 类与对象 一、实验目的 1、 掌握类和对象的定义和使用。 2、 理解构造函数和析构函数的作用。 3、 学习使用静态成员和联成员函数。 4、 掌握从现有类派

54、生出新类的方式。 5、 了解基类成员在派生类中的控制。 6、 了解虚函数对多态性的支持。 二、实验容与步骤 1、构造函数和析构函数的调用。 输入和运行以下程序。 *include class A{ int *a; public: A(int *) { a=new int(*); cout<< 〞Constructor: 〞<<*a<

55、p; p=new A(5); delete p; } 2、派生类构造函数和析构函数的调用。 输入以下程序并调试运行。 *include class A{ int a; public: A(int aa=0):a(aa) { cout<<〞Constructor A: 〞<

56、{ cout<<〞Constructor B: 〞< // 类Point的定义 class Point{ public: Point( double i=0, double j=0 ) { *=i, y=j; } double area(

57、) // 返回点的面积 (0.0) { return 0.0; } private: double *,y; // 点的坐标 }; // 类Circle的定义 const double pi=3.14159; class Circle : public Point{ public: Circle( double i=0, double j=0, double r=1 ) : Point( i,j ) { radius=r; } double area() //返回圆的面积 { return

58、 pi*radius*radius; } double getRadius() { return radius; } private: double radius; }; void main() { Point p; cout<<"点的面积为: "<

59、 cout<<"半径为 "<area()<

60、来表示这箱货物的重量,而总重量用一个静态数据成员来记录。 (2) 在货物类的构造函数和析构函数中分别修改总重量。 要求: (1) 提供静态成员函数GetTotalWeight,用来返回当前货物的总重量。 (2) 下面是测试所设计类的主程序: *include *include"goods.h" // 货物类的定义文件 void main() { cout<<"开场时货物的总重量: "<>w; Goods *g1=n

61、ew Goods(w); // 购进一箱货物 cout<<"库存货物的总重量: "<>w; Goods *g2=new Goods(w); // 购进一箱货物 cout<<"库存货物的总重量: "<

62、。 思考: (1) 在什么地方初始化类的静态数据成员. (2) 非静态成员函数能否静态数据成员. 5、要求计算正方体、球和圆柱3个几何体的外表积和体积,请用C++语言定义类等级。 提示: 可以抽象出一个公共的基类Base,把它作为抽象类,在该类定义求外表积和体积的纯虚函数〔抽象类本身是没有外表积和体积可言的〕。由这个抽象类派生出描述球、正方体和圆柱的3个具体类,在这3个类中都有计算外表积和体积的函数的自己版本。 实验十 综合实验 一、实验目的 综合运用前面所学的各种知识,编写两个较复杂的程序。 二、实验容与步骤 1、设计一个学生信息管理系统,用于实现学生信息的录入、查询

63、、排序、输出等功能。学生信息包括:**〔整型〕、〔字符串〕、性别〔布尔型〕、出生日期〔构造体〕、各科成绩〔10门〕、平均成绩等,用函数实现各功能模块。 2、利用面向对象编程方法为*公司设计一个人员信息管理系统。 要求: (1) 首先定义一个公司职员类,用来描述公司所有人员的共同信息〔、个人编号、级别、月薪总额〕; (2) 然后通过继承定义兼职技术人员类、兼职推销员类、经理类和销售经理类,分别为每个类定义计算月薪函数和显示人员信息函数。月薪计算方法为: 兼职技术人员类:月薪=每小时酬金*本月的工作时数 兼职推销员类:月薪=销售提成 经理类:月薪=固定月薪 销售经理类:月薪=固定月

64、薪+销售提成 提示: 将公司职员类定义为抽象基类,将计算月薪函数和显示人员信息函数定义为虚函数。 参考程序: class employee { protected: char*name; // int individualEmpNo; //个人编号 int grade; //级别 double accumPay; //月薪总额 static int employeeNo; //本公司职员编号目前最大值 pu

65、blic: employee(); //构造函数 ~employee(); //析构函数 virtual void pay()=0; //计算月薪函数 void promote(int); //升级函数 virtual void displayStatus()=0; //显示人员信息 }; class technician:public employee { //兼职技术人员类 private: float hourlyRate;

66、 //每小时酬金 int workHours; //当月工作时数 public: technician(); //构造函数 void pay(); //计算月薪函数 void displayStatus(); //显示人员信息 }; class salesman: virtual public employee { //兼职推销员类 protected: double mRate; //按销售额提取酬金的百分比 double sales; //当月销售额 public: salesman(); //构造函数 void pay(); //计算月薪函数 void displayStatus(); //显示人员信息

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

相关资源

更多
正为您匹配相似的精品文档

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!