C程序设计实验指导书.doc

上传人:飞****2 文档编号:51229618 上传时间:2022-10-18 格式:DOC 页数:22 大小:78KB
返回 下载 相关 举报
C程序设计实验指导书.doc_第1页
第1页 / 共22页
C程序设计实验指导书.doc_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《C程序设计实验指导书.doc》由会员分享,可在线阅读,更多相关《C程序设计实验指导书.doc(22页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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、输入一摄氏温度,编程输出华氏温度。已知;华氏温度转换为摄氏温度的计算公式如下:其中,表示华氏温度,表示摄氏温度。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 employees work time and wage_per_hour:”输出时,提示:“The employees wage :”;2、编写一个程序,提示用户输入一个年份及这一年的第一天是星期几,输出每个月的第一天是星期几。例如,如果用户输入2005和6,表示2005年1月1日是星期六,程序应输出如下内容:January 1, 2005 is SaturdayDecember 1, 2005 is Thursday用函数 int ComputeDay(int year, int day)计算星期;在main函数完成用户输入和输出工作;3、编

7、写贷款分期偿还程序。一笔贷款的月还款包含偿还本金和偿还利息。月利息可以通过月利率乘以余额(剩余本金)来计算,于是月偿还金额就等于月还款额减去月利息。要求用户输入贷款额、贷款年限和利率,程序输出分期还款的计划。如果输入贷款额度10000美元、期限1年和利率7%,程序应该输出:Load Amount:10000Number of Years:1Annual Interest Rate:7%Monthly Payment:865.26Total Payment:10381.21Payment# Interest Principal Balance1 58.33 806.93 9193.072 53.

8、62 811.64 8381.4311 10.0 855.26 860.2712 5.01 860.25 0.01【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;3、把第2小题的ComputeDay(int year, int day) 函数的声明和实现分别放在同一工程项目下的不同文件中;4、总结文件包含编译命令的特点;实验三 指针和数组【实验目的】1、掌握指针的概念、学会定义和使用指针变量;2、学习使用指针数组和指向数组的指针;【实验内容】1、一个班有 5 名学生,每个学生修了五门课,求每个学生的平均成绩,并输出每个学生的学号,每门课

9、程的成绩及平均值。求某门课程的平均分;实现要求:分别编写2 个函数实现以上2 个要求,第1 个函数用数组名作参数,第2 个函数用指针用参数,并在函数体内用指针对数组操作。2、编写一个程序,实现矩阵运算,具体要求如下:用函数addMatrix( int aCOLUMN_SIZE, int bCOLUMN_SIZE, int cCOLUMN_SIZE, int rowSize)实现矩阵相加运算;用函数multiplyMatrix( int aCOLUMN_SIZE, int bCOLUMN_SIZE, int cCOLUMN_SIZE, int rowSize)实现矩阵相乘运算;矩阵a和矩阵b的数

10、据从键盘输入;输出矩阵相乘或相加结果即c矩阵的数据;【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;实验四 函数和作用域【实验目的】1、掌握函数的定义和说明方法;2、掌握函数调用时的传值调用、传址调用和引用调用方法;3、掌握函数重载的方法;4、学习使用指向字符串的指针变量;5、掌握作用域的种类和范围;【实验内容】1、编写一个极坐标转换为直角坐标的程序,具体要求如下:在main函数中读入极坐标半径和相角;使用函数conver实现极坐标和直角坐标之间的转换;分别用传址调用和引用调用的方式调用conver函数;2、编写一个程序,实现浮点类型数

11、据和复数类型数据的相乘;具体要求如下:用结构体定义复数类型数据;编写浮点类型数据乘法运算函数product;重载函数product实现复数类型数据相乘;在mian函数中通过键盘输入一对浮点数和一对复数,分别对这两对数据进行相乘计算,并输出结果;3、编写程序计算一个人的生物节律指数,它是生理、智力和情绪指数之和。情绪周期是一个正弦曲线,其振幅为1,周期为28天,在给定的一天内,一个人的情绪指数是,是他的年龄(以天计算)类似地,生理和智力周期也是正弦曲线,振幅为1,周期分别是23天和33天。编写输入年月日计算天输的函数computeday;编写计算生理指数的函数compute_physiologi

12、cal_index;编写计算情绪指数的函数compute_emotional_index;编写计算智力指数的函数compute_mentality_index;在主程序中输入年月日,计算生物节指数并输出;【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;3、在实验报告中回答如下问题:传址调用和引用调用有何不同?函数重载时可以除了参数的类型不同,其他都相同吗?4、总结作用域的种类和使用范围;实验五 类与对象(一)【实验目的】1、掌握类的概念以及定义类的方法;2、学习简单面向对象程序的编写;【实验内容】1、 设计一个名为Fan的类,表示一个风

13、扇,该类满足下述要求:具有描述风扇转速的成员speed;具有描述风扇是否开启的成员on;具有描述风扇半径的成员radius;具有描述风扇颜色的成员color以上所有成员的访问和更改函数;输出风扇所有信息的函数display;在main函数中创建2个Fan的对象,将第一个风扇的转速、半径和颜色分别设置为3、10和yellow,并将它打开。第二个风扇的转速、半径和颜色分别设置为2、5和blue,并将它关闭。输出以上2个风扇的所有信息。2、 设计一个名为Account的类,该类满足下述要求:一个名为id的int型成员,表示账户的身份号;一个名为balance的double型成员,表示账户余额;一个名

14、为annualInterestRate的double型数据域,保存当年利率;以上所有成员的访问和更改函数;一个名为getMonthlyInterestRate( )的函数,返回月利率;月利率为年利率/12;一个名为withDraw的函数,从账户中支取指定金额;一个名为deposit的函数,向账户中存入指定金额;在mian函数中,创建一个Account对象,其ID为1122,账户余额为20000,年利率为4.5%,使用withDraw函数取出2500美元,使用deposit函数存入3000美元,然后输出账户的余额、月利率。【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录

15、编程过程中出现的错误与改正方法;3、在报告中回答以下问题:定义类时,那些成员数据和成员函数是必须的,那些不是?public、protected、private分别表示什么意思?能否对类的成员数据在定义时初始化?在实验内容的第2小题中,账户余额变量balance是否必须定义为静态变量?为什么?实验六 类与对象(二)【实验目的】1、掌握类的构造函数和析构函数的概念和使用方法;2、掌握对象数组、对象指针的定义和使用方法;3、掌握new和delete的使用方法;【实验内容】1、 设计描述平面坐标上的点CPoint类,该类满足下述要求:具有x,y坐标信息;具有带默认形参值的构造函数,参数分别用于初始化x

16、和y坐标信息;具有获取x、y信息的GetX和GetY函数,具有设置x、y信息的SetX和SetY函数;2、 设计一个矩形类CRectangle,该类满足下述要求:具有矩形的左下角和右上角两个点的坐标信息,这两个点的数据类型是CPoint;具有带参数的构造函数CRectangle(const CPoint &, const CPoint &),参数分别用于设置左下角和右上角两个点的坐标信息;具有设置左下角和设置右上角的两个点坐标的功能SetLPoint(const CPoint &)和SetRPoint(const CPoint &);具有获得周长(GetPerimeter)和获得面积(GetA

17、rea)的功能。3、 在main函数中,完成以下工作:动态创建一个CRectangle类的对象a_rectagnle,其初始的左下角和右上角坐标分别为(2,5)、(6,8);调用GetPerimeter和GetArea获得矩形周长和面积,并将周长和面积显示在屏幕上;调用SetLPoint设置a_rectagnle的左下角为(4,6),调用SetRPoint设置a_rectagnle的右上角为(7,9);调用GetPerimeter和GetArea获得矩形周长和面积,并将周长和面积显示在屏幕上;销毁该动态创建的对象。【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过

18、程中出现的错误与改正方法;3、总结类的构造函数和析构函数的特点;实验七 继承与派生【实验目的】1、理解继承在面向对象程序设计中的重要作用;2、理解继承和派生的概念;3、掌握通过继承派生出一个新类的方法;4、进一步学习简单面向对象程序的编写;【实验内容】1. 设计一个Person类,它有两个派生类Student和Employee,Employee有两个派生类Faculty和Staff。Person类有一个string类型的名字name,string型的身份号id,string型的电话号码phonenumber, Person类构造函数的对应name的参数不能有默认形参值。Student类有一个年

19、级grade属性(Freshman、Sophomore、Junior或Senior),将属性值定义为常量;Employee类有一个string型的办公地点office,一个double型的月薪水salary和一个MyDate型的雇佣日期dateHired;Faculty类有一个级别rank属性(Professor = 3、 AssociateProfessor = 2、AssistantProfessor = 1),属性值也定义成常量。教师的薪水的计算方式为“薪水=基本工资级别”;Staff类有一个职务position属性,为string类型,教工的薪水计算方式为“薪水=基本工资+津贴工作年数

20、”。工作年数算到2010年1月1日为止,基本工资BasicWages、津贴Allowance定义为常量。上述5个类都有一个print成员函数来输出该类对象除薪水外的基本信息。 MyDate类有year、month、day三个数据成员,有一个计算两个MyDate对象间年差的成员函数diffYear(MyDate &),年差计算只精确到月;三个数据成员的获取器函数。3. 定义上述类,并合理地补充构造函数和其它需要的函数。 在main函数中,定义一个Person类对象,一个Student类对象和一个Employee类对象一个Faculty类对象和一个Staff类对象。输出Person类及其派生类对象

21、的基本信息,并输出Faculty类对象和Staff类对象的薪水。【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;3、总结基类中public、protected、private成员在不同的继承方式下在派生类中的访问权限;实验八 多态实现【实验目的】1、 了解继承和多态的作用和实现方式,掌握动态联编方法;2、 掌握使用C+语言的抽象类和派生类实现继承性;【实验内容】1、 设计一个立体图形类(CStereoShape类),并满足如下要求:CStereoShape类有一个纯虚函数GetArea,能够获取立方体的表面积;CStereoShape类

22、有一个纯虚函数GetVolume,能够获取立方体的体积;2、 设计一个立方体类(CCube类),该类继承于CStereoShape类,并满足如下要求:CCube类有一个带参数的构造函数,其参数分别对应于立方体的长、宽、高。用一个成员函数来实现对立方体长、宽、高的设置。重载CStereoShape类的GetArea和GetVolume,分别完成立方体的表面积和体积的计算。3、 设计一个球体类(CSphere),该类继承于CStereoShape类,并满足如下要求:CSphere类有一个带参数的构造函数,其参数对应于球体的半径。用一个成员函数来实现对球体半径的设置。重载CStereoShape类的

23、GetArea和GetVolume,分别完成球体的表面积和体积的计算。4、 实现一个main函数,在main函数中至少完成如下工作:实例化一个CCube类的对象a_cube和CSphere类的对象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、总

24、结静态联编和动态联编的区别;4、总结抽象类的特点及作用;实验九 友元与运算符重载【实验目的】1、 掌握友元函数的使用方法;2、 掌握使用运算符重载方法;【实验内容】1、 定义一个复数类,重载“-=”运算符,使这个运算符能直接完成复数的“-=”运算。分别用成员函数与友元函数编写运算符重载函数;在主函数中定义复数对象c1(10,20)、c2(15,30),进行c2-=c1的复数运算,并输出c1、c2的复数值。2、 定义一个数组类Array:其私有数据成员为整型一维数组a10;通过构造函数给数组赋初值;用show函数显示数组的元素值;用成员函数重载运算符“+”,直接实现两个一维数组对应元素相加的运算

25、。在主函数中定义数组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定义三个数组对象arr1(a)、arr2(b)、arr3,执行arr3=arr1+arr2运算,输出arr3的数组元素值。类似地,用友元函数重载运算符“+=”,实现复合赋值运算:arr1+=arr2,并输出arr1的元素值。3、 定义一个人民币类Money;类中数据成员为元、角、分;用成员函数与友元函数重载“”运算符,实现人民币对象的减1运算;在主函数中定义人民币对象m1=10元8角5分及对象m2、m3,对m1作前置“”并赋给

26、m2。对m1作后置“”并赋给m3。显示m1、m2、m3的结果。【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;3、总结友元函数的作用;4、总结运算符重载时的注意事项;实验十 I/O流库【实验目的】1、 理解流、流类、流类体系的概念;2、 学会用预定义格式控制函数设置输出格式(数制、宽度、小数点等);3、 掌握文本文件的使用方法;4、 初步掌握二进制文件的使用方法。【实验内容】1、 定义描述职工工资的类Laborage,数据成员为职工号(No)、姓名(Name8)、应发工资(Ssalary)、社保金(Security)、实发工资(Fsal

27、ary)。 定义公有成员函数Input(),在Input()函数内输入职工号、姓名(用getline函数)、应发工资、社保金,实发工资由公式:Fsalary=Ssalary-Security计算;定义输出职工工资的成员函数Show()。在显示函数Show()中,职工号、姓名的输出域宽为8、左对齐,其余数据的输出域宽为10、右对齐、保留小数点后两位,输出格式均用预定义格式控制函数设置;在主函数中用Laborage类定义职工对象数组a3。用Input()输入职工工资,用Show()显示每个职工的工资。(提示:用getline输入姓名后,必须用回车结束姓名输入);实验数据:1001Zhou Zhi

28、3000 2001002Chen Hua40004001003Wang Fan50005002、 将一个源文件复制为两个不同名目的文件,源文件与目的文件均用构造函数打开,使用成员函数get与put复制第一个目的文件,使用getline与插入运算符复制第二个目的文件。(提示:用get函数将输入文件流对象的指针指向文件尾后,无法将该指针移到文件首位置。所以只能定义两个输入文件流对象打开同一源文件,用于两种方式的文件复制。)实验数据:源文件:e:exa.txt,文件内容为souce file目的文件1:e:exb.txt目的文件2:e:exc.txt3、 将存放在源文件(e:exarray1.txt

29、)中学生成绩读入二维整型数组a35中,数组a的第0列存放学号,第4列存放平均成绩。计算出每个学生的平均成绩,用擂台法对数组a按平均成绩升序排序后,存放在目的文件(e:exarray2.txt)中。学生的学号与成绩如实验数据所示。编写程序实现上述要求。【实验要求】1、编写实验内容要求的程序、编译并调试通过;2、实验报告中记录编程过程中出现的错误与改正方法;实验报告模版如下(无需封面):实验X XXXXXXXXXXXXX选课时间:XXXX 学号XXXX 姓名XXX 【实验目的】1、XXXXXXXXXXXXXXXXXXXXXXXXXXXXx;2、XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;【源程序】 XXXXXXXXXXXXXXXXXXXX(程序关键语句加上注释)【错误及解决办法】1、 XXXXXXXXXXXXXXXX2、 (此部分记录在程序编写中的遇到的问题和解决方法,如果问题太多,可择要记录)【实验总结】 XXXXXXXXXXXXXXXXXXXXXX(此部分用来回答实验要求中的问题)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com