C++实验指导.docx
- 文档编号:13508004
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:36
- 大小:253.76KB
C++实验指导.docx
《C++实验指导.docx》由会员分享,可在线阅读,更多相关《C++实验指导.docx(36页珍藏版)》请在冰点文库上搜索。
C++实验指导
C++面向对象程序设计
实验指导书
实验一VisualC++6.0的使用
一、实验目的
1.了解和使用VC++6.0的开发集成环境。
2.在VC++的集成开发环境,学习运行一个C++程序的步骤。
3.通过运行简单的程序,初步了解的C++的结构和特点。
4.掌握基本的出错调试。
二、实验内容和要求
编辑、编译、连接和运行一个程序输出“Hello,C++!
”。
三、实验任务分解
四、实验步骤
1.新建一个win32ConsoleApplication的工程:
打开VC++开发软件,从[文件]菜单中点击[新建]菜单项,出现如图
(1)所示对话框,在右上角的工程下输入该工程的名称hello,并设置该工程所保存的路径,最后点击确定。
图
(1)
2.当确定后会出现要你选择工程类型的对话框,如图
(2)所示:
请选择一个空的工程,即第一个选项。
图
(2)
3.单击确定后,工程建立完毕,接下来建立程序源文件,请再单击[文件]菜单下的[新建]出现原先出现的对话框,请选择“文件”选项卡中的c++sourcefile选项,并取名hello,如图(3)。
图(3)
4.确定后,就进入了源代码的编辑窗口,如图(4)所示:
图(4)
5.编辑好开始设置的源代码:
cout<<"Hello,C++!
.\n";
进入了编译和调试阶段,请按如图(5)所示的第二个按钮,这个称作为构件,它的功能是先进行编译,同时如果编译成功的话自动建立EXE可执行文件,同时将可执行文件和编译和连接过程中的中间代码一起放置在debug文件夹中。
图(5)
6.执行可执行文件,单击编译条上的第四个按钮,即惊叹号,对编译成功的程序进行执行。
7.编译并调试教材P15面2.1题程序
8.写出实验报告。
五、实验思考题
1.说明源文件、目标文件与可执行文件的区别。
2.调试C程序需要有几个步骤,每个步骤生成的文件的扩展名是什么?
实验二C++程序控制结构设计
一、实验目的
1.理解并掌握程序的结构化程序设计方法
2.理解并掌握程序的顺序结构、选择结构(if、switch语句)、循环结构(for语句、while语句、do-while语句)程序设计
3. 掌握选择语句与循环语句的嵌套形式
4. 学习过程化程序设计方法
5. 进一步学习掌握查找与修改编译错误的方法
二、实验内容及要求
1、编程计算销售公司销售利润个人奖金提成。
具体提成规则如下:
(1)利润<=10万元,奖金提成10%
(2)10万<利润<=20万元,低于10万部分按10%提成
高于10万部分按7.5%提成
(3)20万<利润<=40万元,低于20万部分按前
(2)提成
高于20万部分按5%提成
(4)40万<利润<=60万元,低于40万部分按前(3)提成
高于40万部分按3%提成
(5)利润>60万元,低于60万部分按前(4)提成
高于60万部分按1.5%提成
2、输入一个数,通过编写循环语句的程序,计算从0到该数的所有数的阶乘,如输入4,结果应为0!
、1!
、2!
、3!
、4!
。
输入一批数字,从中找到最大的数。
三、实验任务分解
四、实验步骤
第一题:
1.确定并定义所需的数据变量,特别注意合理选择数据类型。
2.计算四个区间关键点奖金变量的值。
此题的关键在于正确写出每一区间的奖金计算公式,例如利润在10万元至20万元时,奖金应由两部分组成:
(1)利润为10万元部分应得的奖金:
10万*0.1
(2)10万元以上部分应得奖金:
(profit-10万)*0.075
同样,其它区间的奖金也由两部分组成。
程序中需先把10万、20万、40万、60万四个关键点奖金计算出来,保存到对应变量中,比如:
bon1,bon2,bon4,bon6,然后再加上各区间附加部分的奖金即可。
3.构造if…elseif…阶梯条件语句,借助关键点奖金变量值计算利润区间的奖金。
(1)算法:
if(利润不大于10万)
按10%提成奖金;
elseif(利润不大于20万)
计算利润在10万至20万元区间的奖金(由两部分组成);
(2)程序代码:
if(profit<=100000)bonus=profit*0.1;
//利润profit在10万元以内按10%提成的奖金bonus
elseif(profit<=200000)bonus=bon1+(profit-100000)*0.075;
//销售利润profit在10万至20万元时的奖金bonus
(3)特别说明:
把销售利润在10万至20万元时的elseif条件部分(profit<=200000)写成(profit>100000&&profit<=200000)
虽可正确运行,但存在两个问题:
程序执行效率降低
没有正确理解elseif子句的含义,此时再判断利润profit>10万是多余的。
4.输出奖金提成。
5.先检查一遍程序,然后编译纠错。
6.链接运行,分别输入五组数据分析验证结果。
五组数据:
输入10000
输入100000
输入234000
输入450000
输入700000
7.输出程序清单和结果,并保存好自己的工程文件。
第二题
1.建立工程
(1)新建一个win32ConsoleApplication的工程:
打开VC++开发软件,从[文件]菜单中点击[新建]菜单项,出现如图所示:
在右上角的工程下输入该工程的名称,如c4a,并设置该工程所保存的路径。
最后点击确定。
(2)当确定后会出现要你选择工程类型的对话框,如图所示:
请选择一个空的工程,即第一个选项。
(3)当单击确定后,工程建立完毕,接下来建立程序源文件,请再单击[文件]菜单下的[新建]出现原先出现的对话框,请选择“文件”选项卡中的c++sourcefile选项,并取名,如c4a
(4)当确定后,就进入了源代码的编辑窗口,如图所示:
2.使用for 循环输出不超过输入数字的所有数的阶乘
(1)加入头文件:
iostream.h。
(2)编写主函数,程序如下:
longlimits;
cout<<"Enterapositiveinteger:
";
cin>>limits;
cout<<"Factorialnumbersof"<<0<<"is"<<1< cout<<"Factorialnumbersof"<<1<<"is"<<1< longfac=1,i=0; for(i=2;fac<=limits;i++) { fac*=i; cout<<"Factorialnumbersof"< } 3.查找序列中最大元素 (1)加入头文件: iostream.h。 (2)编写主函数,程序如下: intnum,max; cout<<”Enterpositiveintegers(0: end): ”;cin>>num; for(max=num;num>0;) { if(num>max)max=num;cin>>num; } cout<<”Themaxvalueis: ”< 五、思考题 1.把销售利润在10万至20万元时的elseif条件部分(profit<=200000)写成(profit>100000&&profit<=200000) 编译运行。 输入234000,结果正确吗? 但这样做存在什么不足? 2.如何改用switch开关语句实现,它们之间又有什么差别? 3.在学习循环控制结构后,如何改进该程序实现反复输入计算销售利润的奖金提成,而不是现在只能输入计算一次? 4、编写程序,依次计算并输出当半径为5,4,3,2,1时的圆面积。 3、编写程序,求1-3+5-7+…-99+101的值。 实验三类的创建与对象引用 一、实验目的和任务 1)掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性; 2)掌握类对象的定义; 3)理解类的成员的访问控制的含义,公有、私有和保护成员的区别; 4)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。 能够根据给定的要求定义类并实现类的成员函数; 二、实验原理介绍 通过建立类及对象,用类的成员函数和对象访问类的成员; 利用建立类的构造函数,完成类的成员的初始化工作; 三、实验设备介绍 软件需求: VisualC++6.0 硬件需求: 对于硬件方面的要求,建议配置是PentiumIII450以上的CPU处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。 四、实验内容和步骤 1、实验内容: 1、声明一个CPU类,包含等级(rank)、频率(freauency)、电压(voltage)等属性,有两个公有成员函数run、stop。 其中rank为枚举类型,声明为enumCPU_Rank{p1=1,p2,p3,p4,p5,p6,p7},frequency为单位是MHz的整形数,voltage为浮点型的电压值。 观察构造函数和析构函数的调用顺序。 2、声明一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公在成员函数run、stop。 cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 3、(选做)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性: number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。 其中“出生日期”声明为一个“日期”类内嵌子对象。 用成员函数实现对人员信息的录入和显示。 要求包括: 构造函数和析构函数、拷贝构造函数、内联成员函数。 组合。 2、实验步骤: 1、源程序为: #include enumCPU_Rank{p1=1,p2,p3,p4,p5,p6,p7}; classCPU { private: CPU_Rankrank; intfreauency; floatvoltage; public: CPU(CPU_Rankr,intf,floatv) {rank=r; freauency=f; voltage=v; cout<<”thisisCPUconstructprogram”< ~CPU() { cout<<”thisisCPUdestroyfunction”< } voidrun(){cout< voidstop(){cout< }; voidmain() { enumCPU_Rankrank; rank=p5; CPUcpu1(rank,1024,3.6); cpu1.run(); cpu1.stop(); } 2、源程序为: #include classRAM; classCDROM; classComputer { private: CPUcpu; RAMram; CDROMcdrom; Computer(CPUc,RAMr,CDROMc) { cout<<”thisistheComputerConstruct”< cpu=c; ram=r; cdrom=c; } voidrun() {cout<<”thisisComputerisrunning”< cpu.run(); ram.run(); } voidstop() {cout<<”thisisComputerisstop”< cpu.stop(); ram.stop(); } }; enumCPU_Rank{p1=1,p2,p3,p4,p5,p6,p7}; classCPU { private: CPU_Rankrank; intfreauency; floatvoltage; public: CPU(CPU_Rankr,intf,floatv) {rank=r; freauency=f; voltage=v; cout<<”thisisCPUconstructprogram”< ~CPU() { cout<<”thisisCPUdestroyfunction”< } voidrun(){cout< voidstop(){cout< }; classRAM { private: intrank; intsize; public: RAM(intr,ints) {rank=r; size=s;} voidrun(){cout< voidstop(){cout< }; classCDROM { private: intrank; intsize; public: CDROM(intr,ints) {rank=r; size=s;} voidrun(){cout< voidstop(){cout< }; voidmain() {enumCPU_Rankrank; rank=p5; CPUcpu1(rank,1024,3.6); RAMram(5,1024); CDROMcdrom(5,1024); Computercp(cpu1,ram,cdrom); cp.run(); cp.stop(); } 思考题 1、注意类的定义; 2、类的成员函数的访问方式; 五、注意事项和要求 要求学生要提前准备实验的内容 实验完成后要求写出实验报告 实验四派生类的设计与应用 一、实验目的 1.理解继承的含义; 2.学习从现有类派生出新类的方式; 3.了解在派生类中如何使用基类的成员。 二、实验内容与要求 教师工资计算 (一) 1.新建一个雇员类,它的数据成员有雇员代号,年龄,工资,性别,姓名,输入雇员资料方法,打印雇员资料方法。 2.以此雇员类为基类,从中派生出教师类,其中要求在教师类中加入一个计算教师工资的方法,教师工资=基本工资(1000)+课时(月工作量)×30。 3.以此雇员类为基类,从中派生出实验员类,其中要求在实验员类中加入一个计算实验员工资的方法,实验员工资=基本工资(800)+实验室补助(150)+值班时间(月工作量)×5。 4.以此雇员类为基类,从中派生出行政人员类,其中要求在行政人员类中加入一个计算行政人员工资的方法,行政人员工资=基本工资(900)+行政补贴(200)。 教师工资计算 (二) 在教师工资计算 (一)的基础上,分别实现计算教师、实验人员、行政人员工资的方法。 三、实验任务分解 四、实验步骤 1.建立工程 (1)新建一个win32ConsoleApplication的工程: 打开VC++开发软件,从[文件]菜单中点击[新建]菜单项,出现如图所示: 在右上角的工程下输入该工程的名称,如c10,并设置该工程所保存的路径。 最后点击确定。 (2)当确定后会出现要你选择工程类型的对话框,如图所示: 请选择一个空的工程,即第一个选项。 (3)当单击确定后,工程建立完毕,接下来建立程序源文件,请再单击[文件]菜单下的[新建]出现原先出现的对话框,请选择“文件”选项卡中的c++sourcefile选项,并取名,如c10 (4)当确定后,就进入了源代码的编辑窗口,如图所示: 2.定义基类 (1)定义雇员基类 classemployer{ } (2)定义职工号、年龄、性别、姓名等基本信息变量。 protected: intcode,age;//职工号及年龄 charsex[10];//性别 charname[10];//姓名 (3)构造成方法初始化教师基本信息 public: employer() { code=0; age=0; } (4)获得日期方法: getdata voidgetdata() { cin>>code>>name>>sex>>age; } 3.定义教师派生类 (1)定义教师派生类teacher classteacher: publicemployer { } (2)定义课时等变量。 protected: inthour;//课时 (3)构造成方法初始化 public: teacher() { hour=30; } (4)获得日期方法: getdata voidgetdata() { employer: : getdata(); cin>>hour; } 4.定义实验员派生类 (1)定义教师派生类labworker classlabworker: publicemployer { } (2)定义值班时间等变量。 protected: inthour;//值班时间 (3)构造成方法初始化 public: labworker() { } (4)获得日期方法: getdata voidgetdata() { employer: : getdata(); cin>>hour; } 5.定义行政人员派生类 (1)定义教师派生类admin classadmin: publicemployer { } (2)定义补贴等变量。 protected: doubleaddition;//补贴 (3)构造成方法初始化 public: admin() { } (4)获得日期方法: getdata voidgetdata() { employer: : getdata(); } 6.编写主菜单函数 (1)定义三个函数分别实现输入教师信息、输入实验员信息、输入行政人员信息。 cout<<"确定本次输入的人数: "; cin>>countt; cout<<"职工号\t姓名\t性别\t年龄\t课时\n"; for(i=0;i { t[i].getdata(); } (2)定义三个函数分别实现输出教师信息、输出实验员信息、输出行政人员信息。 inti; cout<<"职工号\t姓名\t性别\t年龄\t基本工资\t课时\t总工资\n"; for(i=0;i { t[i].print(); } 7.编写一个主函数,实现输入、输出教师、实验员、行政人员信息。 while (1) { cout<<"1.输入教师资料\n2.输入实验员资料\n3.输入行政人员资料\n0.退出\n选择您要进行的操作: "; cin>>i; switch(i) { case1: { } case0: return; } } 教师工资计算 (二) 1.定义基类 (1)定义雇员基类employer classemployer { } (2)打印教师信息方法: print voidprint() { cout< } 2.定义教师派生类 (1)定义教师派生类teacher classteacher: publicemployer { } (2)计算工资方法getpay voidgetpay() { moonpay=basepay+hour*30; } (3)打印教师信息方法: print voidprint() { employer: : print(); cout< } 3.定义实验员派生类 (1)定义实验员派生类labworker classlabworker: publicemployer { } (2)计算工资方法getpay voidgetpay() { moonpay=basepay+hour*5+addition; } (3)打印实验员信息方法: print voidprint() { employer: : print(); cout< } 4.定义行政人员派生类 (1)定义行政人员派生类admin classadmin: publicemployer { } (2)计算工资方法getpay voidgetpay() { moonpay=basepay+addition; } (3)打印行政人员信息方法: print voidprint() { employer: : print(); cout< } 5.编写主菜单函数 (1)定义三个函数分别实现输入教师信息、输入实验员信息、输入行政人员信息。 voidgettt(teachert[]) { inti; cout<<"确定本次输入的人数: "; cin>>countt; cout<<"职工号\t姓名\t性别\t年龄\t课时\n"; for(i=0;i { t[i].getdata(); t[i].getpay(); } } (2)定义三个函数分别实现输出教师信息、输出实验员信息、输出行政人员信息。 voidputtt(tea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 指导