下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C+程序设计 实验指导书通信工程学院C+语言是目前程序设计的主流语言,熟练掌握C+软件是工程技术人员开发软件的必备素质。本课程主要阐述C+ 程序设计的基本原则及面向对象技术程序设计的基本原理和方法,使学生深刻理解面向对象技术所带来的观念改革,掌握一种面向对象程序设计语言和面向对象设计的思维方式、规则与基本方法,了解面向对象程序设计技术的发展趋势。通过本课程学习,使学生掌握面向对象程序设计的基本方法、规则,并能用面向对象的方法,对客观事物进行分析、建立模型,初步掌握C面向对象编程语言。程序设计是一门实践性很强的课程,必须以实践为重,许多实践知识不是靠听课和看书学到的,而是通过长时间的实践积累起来
2、的,切忌只看书,不上机实践。C+实验的目的,绝不仅是为了验证教材和讲课的内容,或者验证自己所编写的程序正确与否。其目的更在于:1 、加深对讲授内容的理解,尤其是一些语法规定,只靠课堂讲授,不足于掌握理解。通过多次上机,就能自然地、熟悉地掌握,所谓熟能生巧。2、熟练掌握并使用C+程序开发的环境。3、学会独立调试和运行程序。任何程序都不是一蹴而就的,需要多次的更改调试,对初学者来说更是如此。因此,要在调试过程中积累经验,再利用经验高效、 快速地调试程序。调试程序的能力是每个程序设计人员应当掌握的一项基本功。4、养成良好的编程习惯,编写良好风格的代码。编写程序应遵循良好的编程规范,使程序具有良好的可
3、读性、可维护性。正如写文章一样,不仅要写得一手好字,更要格式规范,段落分明,思路清晰。5、培养独立编写程序的能力。程序设计最终的目的是使用计算机解决实际问题,问题是什么,如何解决,解决方法是什么,如何编写程序解决问题才是核心。因此,在做实验的时候应多问为什么,多观察,多分析,多动手。确立以上原则为指导思想,认真的实践才能真正掌握C+。数据类型和表达式1、熟悉并学习使用C+程序编译平台VC6.0;2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的C+程序;3、掌握C+语言基础数据类型,熟悉变量及常量的定义和赋值方法;4、学会使用C+算术运算符和算术表达式;5、掌握C+程序的赋值和输入输出语
4、句的使用方法;6、掌握简单C+程序的编写和调试1、从键盘上输入两个int 型数,比较其大小,并输出显示其中较小的数;2、 从键盘上输入一个int 型数, 一个浮点数,比较其大小,将输出其中较大的数;3、输入一摄氏温度,编程输出华氏温度。已知;华氏温度转换为摄氏温度的计算公式如下:C (F 32)5/9其中, F 表示华氏温度,C 表示摄氏温度。4、编程实现输入千米数,输出显示其英里数。已知:1英里 =1.60934千米 (用符号常量 )5、输入一个int 型数,将它的低4位 (右四位 )都置为1;1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;3、
5、实验报告中总结cin和 cout的使用方法;4、把第4小题的符号常量改成宏定义的方式;实验二 预处理和语句【实验目的】1、熟悉并掌握使用文件包含命令;2、熟悉并学习使用条件编译命令;3、掌握选择语句;4、掌握循环语句;【实验内容】1、编写一个程序,输入某雇员的每周工作时间(以小时计)和每小时的工资数,计算并输出他的工资。若雇员周工作小时超过40 小时,则超过部分按原工资的1.5 倍的加班工资来计算。若雇员每周工作小时超过60 小时,则超过60 的部分按原工资的3 倍的加班工资来计算,而40 到 50 小时的工资仍按照原工资的1.5倍的加班工资来计算。?要求有输入提示和输出提示,如要输入雇员的工
6、作时间和每小时的工资值时,可以提示:“ Please input employee s work time and wage_per_hour: ”输出时,提示:“ The employee s wage :”;2、 计算生日是星期几编写一个程序,只要输入年月日,就能回答那天是星期几。实验提示1、已知公元1 年 1 月 1 日是星期一2、算法提示:如果输入的是2006 年 3 月 12 日,计算方法是(1) 先计算从公元0001 年初( 0001-1-1 )到 2005 年末 (2005-12-31) 共多少天,注意其中有闰年,闰年是366 天,平年是365 天。闰年的判断条件满足:( yea
7、r%4=0 && year%100!=0 )!(year%400=0)(2) 然后再计算2006 年 1 月 1 日到 2006-3-12 是多少天。注意同样判断本年度是否闰年,即二月份是28 天还是 29 天。(3) 上述两部分相加即从公元0001 年初( 0001-1-1 )到 2006 年末(2006-3-12)的天数,用该天数模7( total%7)即得到星期数。、用户多次循环输入数据并计算可采用while 语句实现:/首先输入三个数据:cout<< "please enter year month day: "cin>>ye
8、ar>> month>>day; / 首先输入三个数:年 月 日while(year!= 0 && month!=0 && month!= 0)/具体计算语句/本次循环结束前再次输入三个数据(年月日),为下次循环计算做准备cout<< "please enter year month day: "cin>>year>> month>>day;测试数据1、 1 年 1 月 1 日是星期一2、 2 年 1 月 1 日是星期二3、用上机日期4、 2000 年 1 月 1 日是星
9、期六思考与扩展1、用 switch 语句实现程序。比较if 和 switch 语句的区别。2、 对输入日期和理性检验,例如月份不能大于12, 非闰年不得有2 月 29 日, 小月不得有4 月31 日3、编写贷款分期偿还程序。一笔贷款的月还款包含偿还本金和偿还利息。月利息可以通过月利率乘以余额( 剩余本金 ) 来计算, 于是月偿还金额就等于月还款额减去月利息。?要求用户输入贷款额、贷款年限和利率,程序输出分期还款的计划。?如果输入贷款额度10000美元、期限1年和利率 7%,程序应该输出:Load Amount: 10000Number of Years: 1Annual Interest Ra
10、te: 7%Monthly Payment: 865.26Total Payment: 10381.21Payment#InterestPrincipalBalance158.33806.939193.07253.62811.648381.431110.0855.26860.27125.01860.250.01【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;3、 把第2小题的ComputeDay(int year, int day) 函数的声明和实现分别放在同一工程项目下的不同文件中;4、总结文件包含编译命令的特点;指针和数组【实验目的
11、】1、掌握指针的概念、学会定义和使用指针变量;2、学习使用指针数组和指向数组的指针;【实验内容】1、一个班有5 名学生,每个学生修了五门课,求每个学生的平均成绩,并输出每个学生的学号,每门课程的成绩及平均值。求某门课程的平均分;实现要求:?分别编写2 个函数实现以上2 个要求, 第 1 个函数用数组名作参数,第 2 个函数用指针用参数,并在函数体内用指针对数组操作。2、编写一个程序,实现矩阵运算,具体要求如下:?用函数addMatrix( int aCOLUMN_SIZE, int bCOLUMN_SIZE, intcCOLUMN_SIZE, int rowSize) 实现矩阵相加运算;?用函
12、数multiplyMatrix( int aCOLUMN_SIZE, int bCOLUMN_SIZE, intcCOLUMN_SIZE, int rowSize) 实现矩阵相乘运算;?矩阵a和矩阵b的数据从键盘输入;?输出矩阵相乘或相加结果即c矩阵的数据;【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;函数和作用域【实验目的】1、掌握函数的定义和说明方法;2、掌握函数调用时的传值调用、传址调用和引用调用方法;3、掌握函数重载的方法;4、学习使用指向字符串的指针变量;5、掌握作用域的种类和范围;【实验内容】1、编写一个极坐标转换为直角坐
13、标的程序,具体要求如下:?在 main函数中读入极坐标半径和相角;?使用函数conver实现极坐标和直角坐标之间的转换;?分别用传址调用和引用调用的方式调用conver函数;2、编写一个程序,实现浮点类型数据和复数类型数据的相乘;具体要求如下:?用结构体定义复数类型数据;?编写浮点类型数据乘法运算函数product ;?重载函数product 实现复数类型数据相乘;?在 mian函数中通过键盘输入一对浮点数和一对复数,分别对这两对数据进行相乘计算,并输出结果;3、编写程序计算一个人的生物节律指数,它是生理、智力和情绪指数之和。情绪周期 y f ( x)是一个正弦曲线,其振幅为1,周期为28天,
14、在给定的一天内,一个人的情绪指数是f (age), age是他的年龄(以天计算)类似地,生理和智力周期也是正弦曲线,振幅为1,周期分别是23天和33天。?编写输入年月日计算天输的函数computeday;?编写计算生理指数的函数compute_physiological_index;?编写计算情绪指数的函数compute_emotional_index;?编写计算智力指数的函数compute_mentality_index;?在主程序中输入年月日,计算生物节指数并输出;【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;3、在实验报告中回答
15、如下问题:?传址调用和引用调用有何不同??函数重载时可以除了参数的类型不同,其他都相同吗4、总结作用域的种类和使用范围;类与对象(一)1、掌握类的概念以及定义类的方法;2、学习简单面向对象程序的编写;4、 设计一个名为Fan的类,表示一个风扇,该类满足下述要求:?具有描述风扇转速的成员speed;?具有描述风扇是否开启的成员on;?具有描述风扇半径的成员radius;?具有描述风扇颜色的成员color?以上所有成员的访问和更改函数;?输出风扇所有信息的函数display;?在 main函数中创建2个 Fan的对象,将第一个风扇的转速、半径和颜色分别设置为3、 10和 yellow,并将它打开。
16、第二个风扇的转速、半径和颜色分别设置为 2、 5和 blue,并将它关闭。输出以上2个风扇的所有信息。5、 设计一个名为Account的类,该类满足下述要求:?一个名为id的 int型成员,表示账户的身份号;?一个名为balance的 double型成员,表示账户余额;?一个名为annualInterestRate的double型数据域,保存当年利率;?以上所有成员的访问和更改函数;?一个名为getMonthlyInterestRate( )的函数,返回月利率;月利率为年利率 /12;?一个名为withDraw的函数,从账户中支取指定金额;?一个名为deposit的函数,向账户中存入指定金额;
17、?在 mian函数中,创建一个Account对象,其ID为 1122,账户余额为20000,年利率为4.5%,使用withDraw函数取出2500美元,使用deposit 函数存入3000美元,然后输出账户的余额、月利率。【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;3、在报告中回答以下问题:?定义类时,那些成员数据和成员函数是必须的,那些不是?public、 protected、private分别表示什么意思?能否对类的成员数据在定义时初始化??在实验内容的第2小题中,账户余额变量balance是否必须定义为静态变量?为什么?类与对
18、象(二)1、掌握类的构造函数和析构函数的概念和使用方法; 2、掌握对象数组、对象指针的定义和使用方法;3、掌握new和 delete的使用方法;1、 设计描述平面坐标上的点CPoint类,该类满足下述要求:?具有x, y坐标信息;?具有带默认形参值的构造函数,参数分别用于初始化x和 y坐标信息;?具有获取x、 y信息的GetX和 GetY函数,具有设置x、 y信息的SetX和 SetY函数;2、 设计一个矩形类CRectangle,该类满足下述要求:?具有矩形的左下角和右上角两个点的坐标信息,这两个点的数据类型是CPoint;?具有带参数的构造函数CRectangle(const CPoint
19、 &, const CPoint &),参数分别用于设置左下角和右上角两个点的坐标信息;?具有设置左下角和设置右上角的两个点坐标的功能SetLPoint(const CPoint&) 和 SetRPoint(const CPoint &);?具有获得周长(GetPerimeter)和获得面积(GetArea)的功能。3、 在 main函数中,完成以下工作:?动态创建一个CRectangle类的对象a_rectagnle, 其初始的左下角和右上角坐标分别为(2,5)、(6,8);调用GetPerimeter和 GetArea获得矩形周长和面积,并将周长和面积显示在
20、屏幕上;?调用SetLPoint设置a_rectagnle的左下角为(4, 6),调用SetRPoint设置a_rectagnle的右上角为(7, 9);调用GetPerimeter和 GetArea获得矩形周长和面积,并将周长和面积显示在屏幕上;?销毁该动态创建的对象。1、编写实验内容要求的程序、编译并调试通过; 2、实验报告中记录编程过程中出现的错误与改正方法;3、总结类的构造函数和析构函数的特点;继承与派生1、理解继承在面向对象程序设计中的重要作用; 2、理解继承和派生的概念;3、掌握通过继承派生出一个新类的方法; 4、进一步学习简单面向对象程序的编写;1. 设计一个Person类,它有
21、两个派生类Student和 Employee, Employee有两个派生类Faculty和 Staff。?Person类有一个string类型的名字name, string型的身份号id, string型的电话号码phonenumber, Perso类构造函数的对应nname的参数不能有默认形参值。?Student类有一个年级grade属性(Freshman、 Sophomore、 Junior或 Senior),将属性值定义为常量;?Employee类有一个string型的办公地点office,一个double型的月薪水salary和一个MyDate型的雇佣日期dateHired;?Fac
22、ulty类有一个级别rank属性(Professor = 3、AssociateProfessor = 2、AssistantProfessor = 1),属性值也定义成常量。教师的薪水的计算方式为“薪水=基本工资×级别”;?Staff类有一个职务position属性,为string类型,教工的薪水计算方式为“薪水 =基本工资+津贴×工作年数”。工作年数算到2010年 1月 1日为止,基本工资BasicWages、津贴Allowance定义为常量。?上述5个类都有一个print成员函数来输出该类对象除薪水外的基本信息。?MyDate类有year、 month、 day三个数
23、据成员,有一个计算两个MyDate对象间年差的成员函数diffYear(MyDate &) ,年差计算只精确到月;三个数据成员的获取器函数。3. 定义上述类,并合理地补充构造函数和其它需要的函数。在 main函数中,定义一个Person类对象,一个Student类对象和一个Employee类对象一个Faculty类对象和一个Staff类对象。输出Person类及其派生类对象的基本信息,并输出Faculty类对象和Staff类对象的薪水。【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;3、总结基类中public、 protecte
24、d、 private成员在不同的继承方式下在派生类中的访问权限;多态实现【实验目的】1、 了解继承和多态的作用和实现方式,掌握动态联编方法;2、 掌握使用C+语言的抽象类和派生类实现继承性;【实验内容】1、 设计一个立体图形类(CStereoShap类),并满足如下要求:e?CStereoShap类有一个纯虚函数eGetArea,能够获取立方体的表面积;?CStereoShap类有一个纯虚函数eGetVolume,能够获取立方体的体积;2、 设计一个立方体类(CCube类),该类继承于CStereoShape类,并满足如下要求:?CCube类有一个带参数的构造函数,其参数分别对应于立方体的长、
25、宽、高。?用一个成员函数来实现对立方体长、宽、高的设置。?重载CStereoShape类的GetArea和 GetVolume,分别完成立方体的表面积和体积的计算。3、 设计一个球体类(CSphere),该类继承于CStereoShap类,并满足如下要e求:?CSphere类有一个带参数的构造函数,其参数对应于球体的半径。?用一个成员函数来实现对球体半径的设置。?重载CStereoShape类的GetArea和 GetVolume,分别完成球体的表面积和体积的计算。4、 实现一个main函数,在main函数中至少完成如下工作:?实例化一个CCube类的对象a_cube和 CSphere类的对象
26、c_sphere;?定义一个CStereoShape类的指针p;?将a_cube的长、宽和高分别设置为4、5和6;将p指向a_cube,通过p将a_cube的表面积和体积打印到屏幕上;?将 c_sphere的半径设置为7;将p指向c_sphere,通过p将 c_sphere的表面积和体积打印到屏幕上。1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法; 3、总结静态联编和动态联编的区别;4、总结抽象类的特点及作用;友元与运算符重载【实验目的】1、 掌握友元函数的使用方法;2、 掌握使用运算符重载方法;【实验内容】1、 定义一个复数类,重载“-=”运算符
27、,使这个运算符能直接完成复数的“-=”运算。?分别用成员函数与友元函数编写运算符重载函数;?在主函数中定义复数对象c1(10,20)、 c2(15,30),进行c2-=c1 的复数运算,并输出 c1、 c2的复数值。2、 定义一个数组类Array:?其私有数据成员为整型一维数组a10;?通过构造函数给数组赋初值;?用show函数显示数组的元素值;?用成员函数重载运算符“ +”, 直接实现两个一维数组对应元素相加的运算。?在主函数中定义数组a、 b 分别为:int a10=1,2,3,4,5,6,7,8,9,10; int b10=4,5,6,7,8,9,10,11,12,13;?用Array
28、定义三个数组对象arr1(a)、 arr2(b)、 arr3,执行arr3=arr1+arr2 运算,输出arr3 的数组元素值。?类似地,用友元函数重载运算符“+=”,实现复合赋值运算:arr1+=arr2,并输出 arr1 的元素值。3、 定义一个人民币类Money;?类中数据成员为元、角、分;?用成员函数与友元函数重载“” 运算符, 实现人民币对象的减1 运算;?在主函数中定义人民币对象m1=10 元 8 角 5 分及对象m2、 m3,对m1 作前置“”并赋给m2。对m1 作后置“”并赋给m3。显示m1、 m2、 m3的结果。1、编写实验内容要求的程序、编译并调试通过; 2、实验报告中记
29、录编程过程中出现的错误与改正方法;3、总结友元函数的作用; 4、总结运算符重载时的注意事项;I/O 流库【实验目的】1、 理解流、流类、流类体系的概念;2、 学会用预定义格式控制函数设置输出格式(数制、宽度、小数点等);3、 掌握文本文件的使用方法;4、 初步掌握二进制文件的使用方法。【实验内容】1、 定义描述职工工资的类Laborage,数据成员为职工号(No)、姓名 (Name8)、应发工资(Ssalary)、社保金(Security)、实发工资(Fsalary)。?定义公有成员函数Input(),在Input()函数内输入职工号、姓名(用getline函数)、应发工资、社保金,实发工资由公式:Fsalary=Ssalary-Secur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 琴弦制作工岗中技术管理考核试卷含答案
- 己二酸装置操作工岗位专项实操考核试卷含答案
- 肾病营养治疗|蛋白摄入 + 电解质管控课件
- 2025年中国黄铜异型材市场调查研究报告
- 2025年中国高纯水装置市场调查研究报告
- 精准:孤立性纤维瘤靶向护理查房:一例TP53 R273H患者全程管理
- 规范:副神经节瘤靶向MDT查房:恶性副神经节瘤的全身治疗
- 前沿:副神经节瘤靶向教学课件:Sacituzumab Govitecan临床应用与研究进展
- 冬季户外作业防冻伤防滑安全操作规范
- 2022深圳数学试卷+答案+解析
- 脚手架施工安全风险评估方案
- 2025年新媒体运营师(中级)考试真题试卷及详细答案
- GB/T 20065-2025预应力混凝土用螺纹钢筋
- 旅游景区安全与消防培训课件
- 盐酸利托君的应用及护理
- 冶金用电安全培训课件
- 出血性中风课件
- 护理质量指标解读2025年非计划拔管
- 2025年首都博物馆合同制用工人员招聘17人笔试参考题库附带答案详解(10套)
- 2025年广东省中学生天文知识竞赛试题(及答案)
- 超声引导阴部神经阻滞技术
评论
0/150
提交评论