




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序设计实验指导书董晓梅张天成编写东北大学信息科学与工程学院计算机软件与理论研究所2006年3月前言本书是本科生课程C语言程序设计的配套实验指导书。C语言程序设计是一门实践性很强的课程,学习C语言程序设计最重要的环节就是实践,而不可能仅仅通过阅读教科书或听课来掌握。书中内容包括13个精心设计的实验,与C语言程序设计课程的各章内容配合,每一个实验都包括“实验目的”、“实验要求”、“实验内容及实验步骤”和“思考题”几部分,使学生在实践中达到对教科书和课堂内容的深入理解和熟练掌握。本书中的实验内容不仅可以指导学生上机练习,也可以由教师作为例题在课堂上演示,以丰富教学内容。目录前言1MICROSOFTVISUALC60开发环境简介1EXERCISE1熟悉语言及程序开发环境3EXERCISE2C简单程序设计10EXERCISE3函数的应用15EXERCISE4类与对象18EXERCISE5作用域与多文件程序21EXERCISE6数组、指针与字符串24EXERCISE7继承与派生27EXERCISE8多态性29EXERCISE9工资管理程序设计30EXERCISE10模板31EXERCISE11流类库与输入输出32EXERCISE12异常处理35EXERCISE13WINDOWS编程基础361MICROSOFTVISUALC60开发环境简介DEVELOPERSTUDIO是VISUALC60的核心部分,是MICROSOFTWINDOWS环境下的一个集成开发环境,集成了开发C或C应用程序所需要的所有工具和C编译器。1主窗口包括标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、输出窗口和状态栏,如图1所示。图1VISUALC60集成开发平台的主窗口2菜单栏包括以下菜单项FILE,EDIT,VIEW,INSERT,PROJECT,BUILD,TOOLS,WINDOWS和HELP。3工具栏默认时显示三个工具栏STANDARD,BUILD和WIZARDBAR。4采用项目开发应用程序采用项目开发一个应用程序的一般步骤如下(1)创建一个项目,系统自动创建了应用程序所需的基本文件。(2)采用工作区窗口建立项目中的类、文件和资源。2(3)将文件添加到项目中,或从项目中删除文件。(4)编辑项目中的源代码和资源。(5)连编项目。执行应用程序。3EXERCISE1熟悉语言及程序开发环境1实验目的熟悉MICROSOFTVISUALC60集成开发环境,学习创建控制台应用程序项目、编辑源程序、编译和调试程序。2实验要求(1)熟悉程序开发环境(2)编辑源程序(3)编译并调试程序3实验内容及实验步骤31熟悉MICROSOFTVISUALSTUDIO60的开发环境(1)启动VISUALC60;(2)用鼠标左键分别单击各主菜单项,观察各下拉菜单的项目内容;(3)单击“文件新建”,观察弹出的对话框;(4)分别单击“新建”对话框的各选项卡,查看其中的内容;(5)单击“结束”按钮,关闭对话框;(6)单击“帮助帮助目录”,熟悉帮助的内容和使用方法。32编辑并调试下面的程序321在VISUALC环境中编辑并调试下面的程序(1)启动VISUALC60;(2)向APPWIZARD提供关于新项目的有关信息(A)单击“文件新建”,(B)在“新建”对话框中单击“工程”选项卡;在列表中选中“WIN32CONSOLEAPPLICATION”;在名为“工程”的文本框中输入项目名“TIME”在“位置”文本框中设置项目的位置;选择“创建新工作区”选项;确认在“平台”列表框中选中了“WIN32”;单击“确定”按钮。以上过程如图11所示。4(3)选择项目类型ANEMPTYPROJECT。(4)单击“完成”按钮。(5)在开发环境的主窗口中单击“插入新建类”,类型为“GENERICCLASS”,名字为“TIMETYPE”,单击“确定”。见图12。图11向APPWIZARD提供关于新项目的有关信息图12新建类5(6)在左侧的“CLASSVIEW”中选择类“TIMETYPE”,单击右键,选择“添加成员变量”,在弹出的对话框中填入变量HRS的类型和名称,见图13和图14;重复此过程,加入成员变量MINS和SECS。图13选择类“TIMETYPE”,单击右键图14添加成员变量(7)选择类“TIMETYPE”,单击右键,选择“添加成员函数”,在弹出的对话框中填入函数SET的原型说明,并在代码编辑窗口中填入函数体的代码,见图15和图16;重复此过程,加入所有的成员函数。6图15添加成员函数图16添加代码(8)保存文件。(9)单击“文件新建”,在“新建”对话框的“文件”选项卡中选择“C源文件”,名字为“DIARY”。(10)在代码编辑窗口中写入代码,保存文件。(11)编译和执行程序单击“编译构件TIMEEXE”,或者按F7键,生成可执行文件TIMEEXE;单击“编译执行TIMEEXE”,或者同时按下“CTRL”和“F5”键,执行程序,查看运行结果。322源程序(1)文件TIMETYPEH7/“TIMETYPEH”CLASSTIMETYPEPUBLICVOIDSETINTHOURS,INTMINUTES,INTSECONDSVOIDINCREMENTVOIDWRITECONSTBOOLEQUALTIMETYPEOTHERTIMECONSTBOOLLESSTHANTIMETYPEOTHERTIMECONSTPRIVATEINTHRSINTMINSINTSECS(2)文件TIMETYPECPP/“TIMETYPECPP”INCLUDE“TIMETYPEH”INCLUDEVOIDTIMETYPESETINTHOURS,INTMINUTES,INTSECONDSHRSHOURSMINSMINUTESSECSSECONDSVOIDTIMETYPEINCREMENTSECSIFSECS59SECS0MINSIFMINS59MINS0HRSIFHRS23HRS0VOIDTIMETYPEWRITECONSTIFHRSINCLUDE“TIMETYPEH“INTMAINTIMETYPETIMEINTHOURSINTMINUTESINTSECONDSCOUTHOURSMINUTESSECONDSWHILEHOURS0TIMESETHOURS,MINUTES,SECONDSTIMEINCREMENTCOUTHOURSMINUTESSECONDSRETURN094思考题1如何启动MICROSOFTVISUALSTUDIO602如何用APPWIZARD新建一个控制台项目3如何新建一个类,并添加类的成员4如何编译和连接一个程序5如何执行一个程序6如何使用帮助10EXERCISE2C简单程序设计1实验目的(1)学会编写简单的C程序。(2)复习基本数据类型变量和常量的应用。(3)复习运算符与表达式的应用。(4)复习结构化程序设计基本控制结构的运用。(5)复习自定义数据类型的应用。(6)练习使用简单的输入输出。(7)观察头文件的作用。(8)学会使用VISUALC60开发环境中的DEBUG调试功能单步执行、设置断点、观察变量值。2实验要求(1)输入并运行教材C语言程序设计中的例题27,即用DOWHILE语句编程,求自然数110之和。程序正确运行之后,去掉源程序中INCLUDE语句,重新编译,观察会有什么问题。(2)将DOWHILE语句用FOR语句代替,完成相同的功能。(3)编程计算图形的面积。程序可计算圆形、长方形、正方形的面积,运行时先提示用户选择图形的类型,然后,对圆形要求用户输入半径值,对长方形要求用户输入长和宽的值,对正方形要求用户输入边长的值,计算出面积的值后将其显示出来。(4)使用DEBUG调试功能观察任务3程序运行中变量值的变化情况。(5)定义一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。3实验内容及实验步骤(1)建立一个控制台应用程序项目LAB2_1,向其中添加一个C源文件LAB2_1CPP方法见实验1,输入教材C语言程序设计中例27的代码,检查一下确认没有输入错误,选择菜单命令BUILD|BUILD1AB2_1EXE编译源程序,再选择BUILD|EXECUTE运行程序,观察输出是否与教材中的答案一致。(2)程序正确运行之后,在源程序第一行“INCLUDE”前面加注释标记“/”使之成为注释行,重新编译,查看此时编译器会输出什么样的提示。现在,删除注释标记,将程序恢复正确。11(3)另建立一个项目LAB2_2,包含一个C源程序1AB2_2CPP,将DOWHILE语句用FOR语句代替,完成与实验任务1相同的功能。(4)建立项目LAB2_3,计算图形的面积。圆形的面积计算公式为SPIRR,长方形的面积计算公式为SAB,正方形的面积计算公式为SAA。程序中定义一个整型变量ITYPE表示图形的类型,用COUT语句输出提示信息让用户选择图形的类型,用CIN读入ITYPE的值,然后,使用SWITCH语句判断图形的类型,分别提示用户输入需要的参数值,计算出面积的值后用COUT语句显示出来。最后,编译运行程序。(5)学习简单的DEBUG调试功能,参考程序如下LAB2_3CPPINCLUDECONSTFLOATPI31416VOIDMAININTITYPEFLOATRADIUS,A,B,AREACOUTITYPESWITCHITYPECASE1COUTRADIUSAREAPIRADIUSRADIUSCOUTACOUTBAREAABCOUTAAREAAA12COUT2;FIB(1)FIB(2)1。使用IF语句判断函数的出口,在程序中用COUT语句输出提示信息。程序名LAB3_5CPP(5)使用DEBUG中的STEPINTO追踪到函数内部,观察函数的调用过程,参考程序如下/LAB3_516INCLUDEINTFIBINTNINTMAININTN,ANSWERCOUTNCOUTENUMCPU_RANKP11,P2,P3,P4,P5,P6,P7CLASSCPUPRIVATECPU_RANKRANKINTFREQUENCYFLOATVOLTAGEPUBLICCPUCPU_RANKR,INTF,FLOATVRANKRFREQUENCYFVOLTAGEVCOUTINTFUNCINTVOIDMAINCOUT22VOIDMAININTA1,B2,C3COUTINTA1,B2INTF1INTXINTI,B3IAB/XCOUTCLASSSTRINGPRIVATECHARCONTENTSPUBLICSTRINGCONTENTS0INTGET_LENGTHCHARGET_CONTENTSRETURNCONTENTSVOIDSET_CONTENTSINTIN_LENGTH,CHARIN_CONTENTSVOIDSET_CONTENTSCHARIN_CONTENTSINTSTRINGGET_LENGTHINTI0CHARPCONTENTSWHILEP0IRETURNIVOIDSTRINGSET_CONTENTSINTIN_LENGTH,CHARIN_CONTENTSIN_CONTENTSIN_LENGTH0CONTENTSIN_CONTENTS26VOIDSTRINGSET_CONTENTSCHARIN_CONTENTSCONTENTSIN_CONTENTSVOIDMAINSTRINGX,YXSET_CONTENTS“HELLO,WORLD“YSET_CONTENTS34,“THISISANOBJECT_ORIENTEDPROGRAM“CHARPXGET_CONTENTSCHARQYGET_CONTENTSCOUT和头文件有何区别3有几种方法来表示和处理数组元素27EXERCISE7继承与派生1实验目的(1)学习定义和使用类的继承关系,定义派生类。(2)熟悉不同继承方式下对基类成员的访问控制。(3)学习利用虚基类解决二义性问题。2实验要求(1)定义一个基类ANIMAL,有私有整型成员变量AGE,构造其派生类DOG,在其成员函数SETAGE(INTN)中直接给AGE赋值,看看会有什么问题,把AGE改为公有成员变量,还回有问题吗编程试之。(2)定义一个基类BASECLASS,有整型变量NUMBER,构造其派生类DERIVEDCLASS,观察构造函数和析构函数的执行情况。(3)定义一个车(VEHICLE)基类,具有MAXSPEED、WEIGHT等成员,RUN、STOP等成员函数,由此派生出自行车(BICYCLE)类、汽车(MOTORCAR)类。自行车(BICYCLE)类有高度(HEIGHT)等属性,汽车(MOTORCAR)类有座位数(SEATNUN)等属性。从BICYCLE和MOTORCAR派生出摩托车(MOTORBICYCLE)类,在继承过程中,注意把VEHICLE设置为虚基类。如果不把VEHICLE设置为虚基类,会有什么问题编程试之。3实验内容及实验步骤(1)编写程序定义基类ANIMAL,成员变量AGE定义为私有的。构造派生类DOG,在其成员函数SETAGE(INTN)中直接对AGE赋值时,会出现类似以下的错误提示ERRORC2248AGECANNOTACCESSPRIVATEMEMBERDECLAREDINCLASSANIMALERRORC2248AGECANNOTACCESSPRIVATEMEMBERDECLAREDINCLASSANIMAL把AGE改为公有成员变量后重新编译就可以了。程序名LAB7_1CPP。(2)编写程序定义一个基类BASECLASS,构造其派生类DERIVEDCLASS,在构造函数和析构函数中用COUT输出提示信息,观察构造函数和析构函数的执行情况。程序名LAB7_2CPP。(3)用DEBUG功能跟踪程序LAB7_2的执行过程,观察基类和派生类的构造函数和析构函数的执行情况。(4)编写程序定义一个车(VEHICLE)基类,由此派生出自行车(BICYCLE)类、汽车(MOTORCAR)类,注意把VEHICLE派生为虚基类。再从BICYCLE和MOTORCAR派生出摩托车(MOTORCYCLE)类,在MAIN函数中测试这个类。程序名LAB7_3CPP编译成功后,把VEHICLE设置为非虚基类,再编译一次,此时系统报错,无法编译成功。这是因为若不把VEHICLE设置为虚基类,会出现二义性错误,程序不能成功编译。284思考题1如何在已有的类的基础上设计新的类2基类和派生类对象的构造顺序是怎样的3如何利用虚基类解决二义性问题29EXERCISE8多态性1实验目的(1)掌握运算符重载的方法。(2)学习使用虚函数实现动态多态性。2实验要求(1)定义POINT类,有坐标_X,_Y两个成员变量;对POINT类重载“”自增、“”自减运算符,实现对坐标值的改变。(2)定义一个车VEHIELE基类,有RUN、STOP等成员函数,由此派生出自行车BICYCLE类、汽车MOTORCAR类,从BICYCLE和MOTORCAR派生出摩托车MOTORCYCLE类,它们都有RUN、STOP等成员函数。观察虚函数的作用。3选做对实验4中的PEOPLE类重载“”运算符和“”运算符,“”运算符判断两个PEOPLE类对象的ID属性是否相等;“”运算符实现PEOPLE类对象的赋值操作。3实验内容及实验步骤1编写程序定义POINT类,在类中定义整型的私有成员变量_X_Y,定义成员函数POINTDEFINEDATINCLUDEINCLUDE/求一元二次方程的根,函数返回根的个数INTGETROOTFLOATA,FLOATB,FLOATC,DOUBLEROOTDOUBLEDELTA,DELTASQRTDELTABB40ACIFDELTA00RETURN0/无根DELTASQRTSQRTDELTAIFA00ROOT0BDELTASQRT/20AROOT1BDELTASQRT/20AELSE37IFB00ROOT0ROOT1C/BELSERETURN0IFROOT0ROOT1RETURN1ELSERETURN2CHARSTR80LRESULTCALLBACKWNDPROCHWND,UINT,WPARAM,LPARAM/窗口过程INTWINAPIWINMAINHINSTANCEHINSTANCE,HINSTANCEHPREVINSTANCE,LPSTRLPCMDLINE,INTNCMDSHOWHWNDHWND/窗口句柄MSGMSG/消息WNDCLASSWNDCLASS/窗口类WNDCLASSSTYLECS_HREDRAW|CS_VREDRAWWNDCLASSLPFNWNDPROCWNDPROCWNDCLASSCBCLSEXTRA0WNDCLASSCBWNDEXTRA0WNDCLASSHINSTANCEHINSTANCEWNDCLASSHICONLOADICONNULL,IDI_APPLICATIONWNDCLASSHCURSORLOADCURSORNULL,IDC_ARROWWNDCLASSHBRBACKGROUNDHBRUSHGETSTOCKOBJECTWHITE_BRUSHWNDCLASSLPSZMENUNAMENULLWNDCLASSLPSZCLASSNAME“SDKWIN“/窗口类名IFREGISTERCLASS/创建窗口HWNDCREATEWINDOW“SDKWIN“,/窗口类名“实验1WINDOWS编程基础“,/窗口标题WS_OVERLAPPEDWINDOW,/窗口样式CW_USEDEFAULT,/窗口最初的X位置CW_USEDEFAULT,/窗口最初的Y位置CW_USEDEFAULT,/窗口最初的X大小CW_USEDEFAULT,/窗口最初的Y大小NULL,/父窗口句柄NULL,/窗口菜单句柄HINSTANCE,/应用程序实例句柄NULL/创建窗口的参数SHOWWINDOWHWND,NCMDSHOW/显示窗口UPDATEWINDOWHWND/更新窗口,包括窗口的客户区WHILEGETMESSAGE/转换某些键盘消息DISPATCHMESSAGE/将消息发送给窗口过程,这里是WNDPROCRETURNMSGWPARAMLRESULTCALLBACKWNDPROCHWNDHWND,UINTMESSAGE,WPARAMWPARAM,LPARAMLPARAMHDCHDCPAINTSTRUCTPSSTATICHWNDHWNDBUTTON,HWNDEDITCHARSTREDIT80
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024秋一年级道德与法治上册 第10课 和家人在一起教学设计 未来版
- 极简商务计划总结
- 2024秋五年级语文上册 第八单元 第25课 古人谈读书教学设计 新人教版
- 半年工作总结与数据分析报告
- 18 旅游节(教学设计)人教版(2012)美术五年级下册
- 2025IDEAS毕业答辩模版
- 一年级语文上册 第7单元 课文3 11 项链教学设计 新人教版
- 个人代持股协议书7篇
- 《三位数乘两位数》(教学设计)- 2024-2025学年四年级上册数学人教版
- 2024秋四年级英语上册 Unit 3 My friends Part A 第1课时教学设计 人教PEP
- 专题04-完形填空2023年高考英语三模试题分项汇编(新高考八省专用)-(原卷版)
- 物理治疗学(人卫三版)
- 房屋市政工程生产安全重大事故隐患判定标准(2024版)宣传海报
- 湖北省黄冈八模2025届高三第一次模拟考试数学试卷含解析
- 道路工程交通安全设施施工方案及保障措施
- 花粉购销合同范例
- 柑橘品种改良研究
- 2024年秋儿童发展问题的咨询与辅导终考期末大作业案例分析1-5答案
- 劳务派遣信息管理系统
- 无人值守道闸运营方案
- 极地安全课件教学课件
评论
0/150
提交评论