1、广东工业大学实验(上机)任务书(2014 2015 学年度第 1 学期)课程名称 高级语言程序设计 课程设计 实验室名称及地点: 实验 2 号楼 306 指导教师: 孟安波、王星华 周次 节次 实验主要内容 每组学生人数 具体任务要求6 5-8 熟悉 C+编程开发工具输入输出程序编程练习运算符和表达式编程训练1 在 C+开发环境中编写、编译程序,并能够运行成功。(1) 创建 Win32 Console Application,添加源文件(2) 参考课本例子,编写 C 语言源代码(3) 编译、调试并运行成功(4) 简单的输入输出语句练习(5) 编写不同数据类型的输入输出程序并运行成功(6) 编写
2、运算符与表达式(7) 练习任务 1、2、37 5-8 练习选择结构及分支结构编程、循环结构编程1 练习 C 语言程序的运算符及表达式(1) 练习 if 语句、if-else 语句、switch 语句编程(2) 编写不同数据输入、运算并在屏幕上输出的程序,并运行成功(3) C 语言三种不同的循环结构练习(4) 练习任务 4、58 5-8 练习数组及循环结构编程指针编程1 练习 C 语言的数组及循环结构:(1) 练习数组的应用,包括初始化、赋值、运算,特别注意体会数组下标的控制(2) 结合循环结构进行数组应用的训练(3) 指针与数组结合编程(4) 指针、数组与循环结构相结合的编程练习(5) 练习任
3、务 6、79 5-8 上课10 5-8 上课11 5-8 练习指针及结构体编程1 指针及结构体的应用编程:(1) 结构体的创建、赋值及应用编程(2) 结构体数组的应用编程(3) 结构体指针的应用编程(4) 练习任务 8、912 5-8 学习结构体编程,并结合数组、指针进行编程训练综合设计任务1 结构体编程练习(1) 练习任务 913 5-8 114 5-8 115 5-8综合设计任务1完成综合设计任务(1) 自学文件输入输出(2) 完成全部设计任务编程(3) 评优的同学完成评优设计任务说明:1、 上机时间为下午 1:304:00。2、 一次上机一个班,一人一台计算机。3、 请不要迟到,上课、下
4、课需签到。4、 上机同学的练习任务未完成,不得早退;若当次练习任务完成,建议提前开始下一次课上机内容;当次任务完成,3:30 之后开始交任务,允许早退。5、 要求上机前提前编好程序。6、 想评优的同学必须完成评优设计任务,并参加答辩。高级语言程序课程设计练习任务:1、 课本 P15,习题 5。2、 课本 P83,习题 5。3、 课本 P84,习题 6。4、 课本 P113,习题 10。5、 课本 P168,习题 6。6、 课本 P168,习题 9。7、 课本 P291,习题 8。8、 课本 P330,习题 5。9、 综合设计任务a) 保龄球计分(学号尾数为 0、5 的同学完成)【问题描述】打保
5、龄球是用一个滚球去撞击 10 个站立的瓶,将瓶击倒。一局分 10 轮,每轮可滚球 1 次或多次,以击倒的瓶数为依据计分,一局得分为 10 轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。计分规则如下: 若某一轮的第一次滚球就击倒全部 10 个瓶,则本轮不再滚球(若是第 10 轮还需加 2 次滚球) ,该轮得分为本次击倒瓶数 10 与以后 2 次滚球所击倒瓶数之和。 若某一轮的第一次滚球未击倒全部 10 个球,则对剩下未击倒的瓶再滚球一次,如果这 2 次滚球击倒全部 10 个瓶,则本
6、轮不再滚球(若是第 10 轮还需加 1 次滚球) ,该轮得分为这 2 次击倒瓶数 10 与以后 1 次滚球所击倒瓶数之和。 若某一轮 2 次滚球未击倒全部 10 个瓶,则本轮不在滚球,该轮得分为这 2 次滚球所击倒瓶数之和。【实现要求】 模拟 n 个人各打一局保龄球比赛过程,统计每局各轮得分和累计总分。 逐人逐轮逐次输入一次滚球击倒的瓶数。 对 n 人的得分由低到高排序并显示。 用户可以规定参赛人数,需要输入选手姓名 参赛成绩可以选择存入文件,程序启动可以选择从文件读取。 显示输出时应将所有选手每轮得分及总分均整齐显示。 程序应能自动判别输入错误。【测试数据】自定模拟数据【说明】完成本题 1、
7、2、3,4 成绩“中等” 。完成本题 5、6、7,成绩“良好” 。b) 学生成绩统计(学号尾数为 1、6、9 的同学完成)【问题描述】学期考试结束,统计某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。【实现提示】考试课程有:高等数学、物理、外语、C 语言 4 门课程。录入所有同学的成绩,对数据进行处理,输出所要求的内容,程序的功能主要包括以下几个方面: 输入成绩 修改记录 删除记录 输出成绩并按平均成绩排序,并标记平均分不及格的学生。 界面提供上述功能选择。 学生人数由软件根据输入的成绩记录数自动控制。 提供输出成绩到文件以
8、及从文件读取成绩功能。【测试数据】自定模拟数据【说明】完成本题 1-5,成绩“中等” 。完成本题 6-7,成绩“良好” 。c) 编制一个学生的选课及学籍管理程序(学号尾数为 2、4、7 的同学完成)【问题描述】现有若干个班级的学生,进行下学期课程的选课,假设已经通过文件储存了选课内容的数据库,数据库中包括 n 门课(课程内容由学生自己定)第 i 门课程能接纳的学生数为 10i,i 为课程的序号,即第一门课能接纳的学生数为 101,第二门课为 102, 依此类推,每门课的学分数分别为1、2、3、4、5、6、7,现要求每一个学生至少选 3 门课,最多不超过 5 门。【实现提示】(1)显示课程内容供
9、学生选择,并能进行选课的操作。(2)随着学生选课工作的进行,动态更新数据库的内容,显示各科剩余学位。(3)进行学生的最少选课量和最多选课量的控制。(4)显示所有学生的选课的结果。(5)把学生所选的课按学分总积分由小到大排列,同样学分按姓名的英文字母排序。(6)学生总人数和选课数量由程序自动控制(7)选课情况需存入文件,能从文件读取并显示。【测试数据】自定模拟数据【说明】完成本题 1-4,成绩“中等” 。完成本题 5-7,成绩“良好” 。d) 校际运动会管理系统程序(学号位数为 3、8 的同学完成)【问题描述】 完成校际运动会成绩管理功能,包括输入项目及参赛成绩,输入参赛学校,统计各校成绩并排序
10、。各项目名次取法有如下几种:取前 5 名:第 1 名得分 7,第 2 名得分 5,第 3 名得分 3,第 4 名得分 2,第 5 名得分 1; 取前 3 名:第 1 名得分 5,第 2 名得分 3,第 3 名得分 2; 用户自定义分数选择,并有查错功能(名次靠前的得分要高于名次靠后的得分)【实现提示】 (1) 显示主菜单功能选项,包括初始化、输入比赛成绩、修改比赛成绩、成绩统计、数据读取及存储。(2) 初始化:从文件读取比赛项目和参赛学校;增加比赛项目及名称;增加参赛学校及名称;(3) 输入各比赛项目比赛成绩:选择项目,输入各名次的选手名及所属学校(4) 统计各学校总分并排序。(5) 输出显示
11、所有参赛项目及已输入成绩,并提示未完成输入的项目。(6) 修改已输入比赛项目成绩:选择项目选择待修改名次 修改该名次选手名及学校(7) 输出到文件,并能从文件进行数据的读取。【测试数据】自拟定【说明】完成本题 1-4,成绩“中等” 。完成本题 5-7,成绩“良好” 。10、 评优设计任务(完成任务 9 综合设计并得到良好,想评优的同学需完成此题)开发潮流计算软件的导纳矩阵形成模块:1) 要求从文件读取电网数据。2) 完成电网数据的导纳矩阵形成。3) 将结果写入到数据文件中输出4) 输入文件格式要求按照附件 IEEE90.DAT 的格式读取。5) 输入文件格式说明参考附件“潮流手册.pdf” ,
12、P64 页开始的“4 网络数据说明” ,重点学习“4.3 节点数据卡” , “4.4 支路数据卡”中的“L 卡”和“T 卡” 。附件:Visual C+简单使用指南1、Visual C+界面元素在开始编程之前,花点时间讲述一下 Developer Studio 的界面。Developer Studio 窗口元素 当使用 Visual C+ 编辑程序时,你可以把 Visual C+ 的显示界面划分成三块功能区:工具条、视图以及编辑窗口。每个功能区都可以独立于其它功能区来操作,因此,可以在各功能区之间自由地切换。图 1.1 显示了典型编辑器的显示情况以及这三个功能区的位置。注释 本节中介绍各种窗口
13、、视图以及工具条。随后的各节中介绍它们的详细信息。经常用到的窗口有两种类型:文本窗口和资源窗口。图 1.1 显示了一个典型的文本窗口。无论什么时候,当你要修改代码或编辑文本文件时,看到的就是这类窗口。Visual C+ 通过各种手段来简化编码工作。文本窗口中首先注意到的东西是代码的颜色。例如,关键字的缺省颜色为蓝色,而注释的颜色为绿色。这种方式的彩色代码让你能够轻易地分辨出代码的性质。图 1.1 Developer Studio 的屏幕可以划分成三个功能区 本窗口的左边缘是一竖条,这是 Visual C+ 放置各种符号的地方,你甚至会看到它通过颜色来区分数据和代码控制区。例如,当我们在代码中设
14、置了断点后,Visual C+ 就在这个竖条上显示断点符号,当该断点可用时,断点符号为红色,否则,断点符号为白色。文本框的各个区域中都可以通过右击来显示一个上下文相关菜单。上下文菜单中包含了可以进行基本操作的各种选项,与 Developer Studio 界面的其它地方不同,这些菜单不能直接进行修改。下图是右击文本编辑器时可能出现的上下文菜单的一个示例。请注意,你可以像使用任何编辑器那样剪切、复制或粘贴文本。由于我已经加亮了#include 文件项,因此上下文菜单提供了一个打开该文件的机会。如果当前工程中还没有包含该文件,那么使用Insert File into Project 菜单项就可以把
15、该文件包含到工程中。后面的两个菜单项Insert/Remove Breakpoint 和 Enable Breakpoint 用于调试应用程序。最后,你可以打开ClassWizard 来操作所选对象(本书将多次使用这种方法)或查看文档的属性。类视图(ClassView) 或许类视图(ClassView)将花去你大部分的时间。该视图提供了工程中所有类的层次列表,通过扩展可以显示类中包含的细节。例如,类中将包含要编辑的成员函数等。图 1.3 显示了一个典型的类视图。请注意,在层次列表的每个项目前面都有一个特殊的图标。例如,每个类的前面都有一个由线条连接起来的三个方框形图标。类视图中显示三种成员函数
16、:第一种是公共成员函数,它的图标为一个紫色菱形框;第二种是私有成员函数,它的图标上也有个菱形框,不过菱形框的旁边还有一把钥匙;第三种是保护成员函数,它的图标上有个菱形框和一个小锁。与此相似,变量也有三种类型,它们都使用青绿色图标。当看到一个绿色框时,你就知道是看到了某个 COM 对象的方法。类视图中还使用了其它几种类型的图标,但上面所述的六种图标是创建绝大多数工程时都需要知道的图标。文件视图(FileView) 文件视图(FileView)提供了工程中所有文件的完整列表,无论这些文件是否包含代码。图 1.5显示了文件视图窗口的一个典型示例。请注意,列表中包含了从 ReadMe.txt 到 Vi
17、sual C+ 自动生成的各种文件。每个文件类型都有自己的文件夹,例如,所有的源代码文件都显示在 SourceFiles(源文件)文件夹中。我们不仅可以把文件从一个文件夹移动到另一个文件夹中,也可以创建保存特定类型文件(根据其扩展名)的新文件夹。我通常要创建一个 Text File(文本文件)文件夹来保存所有扩展名为 TXT的文件。创建新文件夹的方法是,右击要添加新文件夹的文件夹或工程项目,然后从上下文菜单中选择 New Folder 菜单项。此后系统将显示如下图所示的 New Folder 对话框,键入文件夹的名称以及相应的文件扩展名,然后单击 OK 按钮完成创建过程。工具条 工具条(Too
18、lbar)是我们讨论 Developer Studio 界面的最后一个话题。应该说明的是,Visual C+ 拥有比你启动 Visual C+ 后看到的工具条多得多的工具条。在工具条上的任何位置右击,你都会看到如下图所示的上下文菜单:该菜单中列出了 Visual C+ 提供的所有标准工具条。带选中符号的菜单项对应的工具条当前显示在工具条区域中。如果想把某个菜单项对应的工具条添加到工具条区域,只需要单击该菜单项即可;反过来,如果想在工具条区域中去掉某个工具条,也只需要通过在上下文菜单中单击对应的菜单项、去掉其选中符号即可。上下文菜单中还有一个 Customize 菜单项值得注意。选择该菜单项后你
19、会看到如下图所示的对话框:Customize 对话框包含了几个让你重新配置 Developer Studio 界面上绝大多数部件的选项卡。然而,这里我们最感兴趣的是 Commands 选项卡。对每个菜单和工具条它都包含了一系列的图标(代表对应的命令)或文本命令。如果想给现存工具条上增加一个命令,只需要抓住其图标(或文本命令)并把它拖曳到工具条上,这样,所选命令就显示在工具条上,你可以更快速地访问它们了。如果选择了某个现在还没有相应图标的命令,那么系统会显示 Button Appearance 对话框,在这个对话框中可以为命令选择一个图标。同样的功能对菜单项也一样起作用。你需要做的工作就是打开要
20、修改的下拉菜单,在 Commands 选项卡中抓住要添加到菜单中的命令,然后将其拖曳到菜单项中希望的位置。在这种情况下,你看到的总是命令的文本版本而不是图标。从工具条或菜单中删除不需要命令的方法也很简单。简单地抓住不需要的命令,并把它拖曳到Customize 对话框中。该命令将在菜单或工具条中消失,当然,你随时都可以重新把它添加到菜单或工具条中。你也可以根据需要移动工具条的位置。单击工具条左边缘的双线竖杠,然后把工具条拖曳到所需位置。与此相似,如果你不喜欢某个菜单的当前位置,那么抓住它(在 Customize 对话框打开的情况下)并把它移动到所需位置。2、编写控制台应用程序Visual C+有
21、能力创建多种不同类型的应用程序。然而,从简单起见,本课程设计要创建最简单的“控制台应用程序”。控制台应用程序适用于不需要为用户提供全功能操作界面(Windows 窗口)的情况。本质上讲,控制台应用程序就像添加了一些特性的 DOS 应用程序。让我们探讨一个相当简单的控制台应用程序,看看在这个程序中你能做些什么。这个示例中,我们并不把程序的功能看得很重要,只是要了解应该如何完成示例。当然,第一步的工作是创建程序框架。按下述步骤进行操作:1. 如果你还没有启动 Visual C+,那么启动 Visual C+。2. 使用 File|New 命令显示如下图所示的 New 对话框。注意,我已经选择了 P
22、rojects 选项卡并加亮了要在本例中使用的工程类型。3. 当选择了 Win32 Console Application 后,在 Project Name 域中键入程序名称。这个样本程序使用的名称为 Console。你或许还需要修改一下 Location 域的内容,那么单击一下该域旁边的浏览按钮,系统会显示 Choose Directory 对话框,在这个对话框中选择应用程序的存放目录。4. 单击 OK 按钮。你会看到 Win32 Console Application - Step 1 of 1 对话框,如下图所示。注意,在这个对话框中有几个应用程序类型供选择。这也是 VisualC+ 6
23、.0 的一个新特性。以前版本的 Visual C+简单地创建一个空的工程。现在到了选择要创建哪种类型工程的时候了(即使空工程也要进行选择)。5. 选择 An Empty Project,然后单击 Finish。你会看到一个 NewProject Information 对话框,它告诉你都选择了哪些选项。6. 单击 OK 按钮创建示例程序。现在到了给示例程序添加代码的时候了。需要完成的第一件事是向工程中添加一个文件,让我们看看添加过程。1. 使用File | New命令打开New对话框,选择File选项卡,其中显示了文件类型的完整列表,包括Resource Template以及像Icon Fil
24、e这样的各种图像文件。2. 加亮C+ Source File选项。3. 在File Name域中键入Console(Visual C+会自动添加上正确的文件扩展名)。4. 单击OK。系统显示一个空的C+源文件。现在我们有了一个要使用的空文件,该添加一些代码了。程序列表2.1显示了一组简单的代码,目的是为了让大家看清楚在这种环境下系统是如何工作的。程序列表2.1 /预编译的头文件#include “stdio.h“/程序运行起始点void main()/屏幕上输出Hello,World!printf(“Hello,World!n“);在编写完代码后,要进行编译连接后才能执行。在Visual C+
25、中,在“Build”弹出菜单中选择“Build *.Exe”(其中*即为创建应用程序时填写的工程名)菜单项,或者在工具栏上选择“ ”按钮即可。在编写代码的过程中,由于多种原因,很可能出现各种各样的语法错误,使得代码无法编译连接成为可执行程序。Visual C+在编译连接的过程中可以指出这些错误供用户修改。编译中发现语法错误后,VC+的界面如下图。在编译完全成功后,Output窗口中将如下所示:3、调试程序如果程序的语法正确,但是在编译连接成可执行程序后,运行不是预想的结果,就需要利用Visual C+的调试功能。(1) 调试执行调试执行是程序的一种运行状态,在此状态下,整个程序的运行在Visu
26、al C+的监控之下,可以设置断点、观察程序中变量的数值,方便用户查找错误。在菜单“Build”中,选择弹出菜单“Start Debug”中的“go”命令可执行程序即可进入调试状态开始运行。或者在工具栏上选择“ ”命令。或使用快捷键“F5”(2) 设置断点(Break Point)断点是调试中常用的功能,在可能出错的语句附近设置断点,可以在程序进入调试状态运行时停止在断点设置点。在希望设置断点的语句上单击右键,在弹出的菜单中选择“Insert/Remove Breakpoint”即可,或者在工具栏上选择“ ”命令,或使用快捷键“F9”。输出(Output)窗口编译中指出的错误出错的代码(3) 观察变量的值(Watch)程序进入调试状态,并在断点处暂停后,VC+会自动调出新的工具栏和菜单,选择 “ ”按钮或“View”菜单栏下的弹出菜单“Debug Windows”中的“Watch”命令,一般在VC+的底部会出现一个Watch 窗口,如下图。(4) 单步执行(Step)程序在断点停止后,可以由用户控制一步一步地执行,只要选择工具栏中的“ ”或快捷键“F10”。断点标志Watch 窗口调试执行 调出观察窗口单步执行中止调试待观察变量