内 容 简 介
本书是与《C语言程序设计教程》(中国科学出版社)配套使用的教学参考书,内容包括:VC++6.0和Turbo C 2.0两种集成编程环境的使用及两种环境下C语言程序的开发过程和调试方法的介绍;C语言程序设计相关章节实验项目;《C语言程序设计教程》一书中各章节习题的参考解答;配合全国计算机等级考试二级C的拓展训练试题。
本书内容详实,实验项目设计合理,具有较强的条理性和针对性,是学习C语言并更好地掌握C语言程序上机实践的必备参考书。
本书可作为高等院校计算机专业或其他非计算机专业的计算机程序设计教学用书,也可作为从事计算机应用及开发人员的参考书。
前 言
《计算机程序设计基础(C语言)》课程是我国高校理工科专业普遍开设的一门计算机公共基础课程,该课程实践性较强,要求学生具有较好的上机实践能力。为配合该课程的理论内容的学习,使得学生既能够较好地掌握课程的理论知识内容又能具备较强的上机实践能力,我们特组织了C语言实践教学经验丰富的教师编写了此书。
本书内容丰富,首先系统地介绍了两种常用的C语言集成开发环境VC++ 6.0和Turbo C 2.0的使用方法及程序的调试过程和方法。在本书的第二部分――实验项目设计中,我们有针对性地根据许多编程人员易犯的错误精心设计了各实验的内容,并且丰富了实验项目的种类以使得读者能够更好更快地掌握C语言程序设计的方法和技巧。本书的第三部分给出了《C语言程序设计教程》中部分习题的参考答案,其中程序设计习题我们都给出了相应的参考程序代码,以帮助读者掌握C语言程序设计的知识内容并培养和锻炼程序阅读的水平和能力。另外,为配合广大读者更好地参加全国计算机等级考试二级C的考试,我们不仅在本书的第三部分中给出了模拟试题,而且在第二部分的实验项目设计时也与等级考试的机试题型尽可能地保持一致。
本书由湖北襄樊学院李勇负责组织编写并统稿,袁磊教授主审。全书内容由李勇、王毅、项东升编写。
本书中的内容不可避免会有疏漏和不足,敬请广大读者批评指正。
编者 2009年7月
目 录
第一篇 C语言程序开发环境 .......................................................................................................... 1
1.1 VC++6.0集成开发环境 .................................................................................................. 1
1.1.1 VC++6.0环境中开发程序的过程 .......................................................................... 1 1.1.2 程序调试 ................................................................................................................. 6 1.2 Turbo C 2.0开发环境 .................................................................................................. 10
1.2.1 Turbo C 2.0 主菜单功能 ....................................................................................... 10 1.2.2 Turbo C 2.0 的配置文件 ....................................................................................... 22 1.2.3 Turbo C 2.0 环境下程序的编制实例 ................................................................... 22 1.2.4 Turbo C 2.0 环境下程序的调试实例 ................................................................... 25
第二篇 C语言程序设计实验指导 ............................................................................................... 28
实验1 C语言程序开发环境及上机过程 ........................................................................... 28 实验2 顺序结构程序设计 .................................................................................................. 30 实验3 选择结构程序设计 .................................................................................................. 36 实验4 循环结构程序设计 .................................................................................................. 43 实验5 模块化程序设计与函数 .......................................................................................... 51 实验6 数组程序设计 .......................................................................................................... 59 实验7 结构体程序设计 ...................................................................................................... 67 实验8 文件操作 .................................................................................................................. 76 第三篇 习题解答与拓展训练 ....................................................................................................... 79
3.1习题参考解答 .................................................................................................................. 79
习题3 参考解答 ............................................................................................................ 79 习题4 参考解答 ............................................................................................................ 91 习题5 参考解答 ............................................................................................................ 96 习题6 参考解答 .......................................................................................................... 119 习题7 参考解答 .......................................................................................................... 134 3.2 拓展训练 ........................................................................................................................ 141
计算机等级考试笔试模拟题1 .................................................................................... 141 计算机等级考试笔试模拟题1答案 ........................................................................... 157 计算机等级考试笔试模拟题2 .................................................................................... 159 计算机等级考试笔试模拟题2答案 ........................................................................... 175 计算机等级考试笔试模拟题3 .................................................................................... 177 计算机等级考试笔试模拟题3答案 ........................................................................... 196 计算机等级考试上机模拟题1 .................................................................................... 198 计算机等级考试上机模拟题2 .................................................................................... 203 计算机等级考试上机模拟题3 .................................................................................... 208 计算机等级考试上机模拟题4 .................................................................................... 212
附录一 实验报告模板 ............................................................................................................... 216 附录二 编译错误信息表 ........................................................................................................... 217 附录三 常用库函数 ................................................................................................................... 233
第一篇 C语言程序开发环境
1.1 VC++6.0集成开发环境
C语言程序的集成开发环境较多,较常用的为VC++6.0集成开发环境和Turbo C 2.0集成开发环境。以下简介在VC++6.0集成开发环境中设计实现及调试C语言程序的方法。
1.1.1 VC++6.0环境中开发程序的过程
Visual C++是Microsoft公司的Visual Studio开发工具箱中的一个C++程序开发包,是基于Windows平台的可视化开发环境。从最早期的1.0版本,发展到最新的6.0版本,Visual C++已经有了很大的变化,在界面、功能、库支持方等面都有了许多的增强。最新的6.0版本在编译器、MFC类库、编辑器以及联机帮助系统等方面都比以前的版本有了较大的改进。
Visual C++安装完成后,在开始菜单的程序选单中选择Microsoft Visual Studio 6.0图标,点击其中的Microsoft Visual C++ 6.0即可运行(也可在Window桌面上建立一个快捷方式,以后可双击运行)。第一次运行时,将提示如图1.1所示对话框。单击“下一提示”按钮,将看到各种操作提示;如果下次运行不需要此对话框,则取消选中“再启动时显示提示”复选框。单击“结束”按钮,关闭提示对话框,进入Visual C++ 6.0开发环境见图1.2。
图1.1 Visual C++ 6.0启动提示对话框
Visual C++ 6.0开发环境界面由标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、
1
输出窗口和状态栏等组成。
图1.2 Visual C++ 6.0开发环境主界面
进入Visual C++ 6.0环境后,我们就可以按照下列步骤进行C语言程序的编辑、编译、调试及运行了。
1、建立新的工程
(1)进入Visual C++ 6.0环境后,选择菜单“文件| 新建”,在弹出的对话框中单击上方的选项卡“工程”,选择“Win32 Console Application”工程类型,在“工程”一栏中填写工程名,在“位置”一栏中填写工程路径(目录),见图1.3,然后按“确定”继续。
图1.3 “新建”工程对话框
2
(2)弹出如图1.4所示对话框,在该对话框中选择“An empty project”,建立空工程。单击“完成”按钮,弹出“新建工程信息”对话框,单击“确定”完成新工程的建立。
图1.4 工程类型选择对话框
2、建立源程序
在新建立的空工程中,选择“文件|新建”菜单项,打开“新建”对话框,选择“文件”选项卡,在该选项卡中选择“C++ Source File”选项。在右边的“文件”文本框中输入源文件名,单击“确定”按钮。如图1.5所示。
如图1.5 建立源程序对话框
3
3、编辑源程序
在文档窗口中,可进行源程序代码的输入或者修改,结束时一定要保存该源程序文件。如图1.6。
图1.6 Visual C++ 6.0编辑窗口
4、编译程序
对源程序进行编译可以检查语法错误,在Visual C++ 6.0环境中,通过“编译”菜单、“编译”工具或Ctrl+F7对源文件进行编译。如图1.7所示。没有语法错误的源程序文件可以编译为目标程序文件。如果有语法错误,将在输出窗口中显示错误提示信息,双击该错误提示信息,查找错误并改正。如图1.8所示。
图1.7 Visual C++ 6.0编译窗口
4
图1.8 查找错误窗口
5、运行程序
程序编译成功后,通过“编译”菜单中的“运行”工具或Ctrl+F5运行程序,并显示运行结果。如图1.9所示。
图1.9 运行结果窗口
另外,可以加载以.c为扩展名的C源程序。方法是:双击程序文件名,将直接进入开发环境进行调试。
为了保护已完成的程序,注意保存。
5
1.1.2 程序调试
程序出错的类型大致可以分为语法错误和逻辑错误。语法错误可以通过编译器的出错信息得到纠正,而逻辑错误则不能。Visual C++ 6.0提供了Debug功能,可以快速找到逻辑错误。
Visual C++ 6.0的“Debug”菜单如图1.10所示,下面对常用的调试命令进行简要介绍:
图1.10 Debug菜单
1、Go 命令 (快捷键:F5):系统将编译、链接,自动运行程序,但是会在程序设置的断点(breakpoint)处停下。
2、Restart命令 (快捷键:Ctrl+Shift+F5):重新调试程序。
3、Stop Debugging命令 (快捷键:Shift+F5):终止(所有)调试,并返回到常规编辑状态。
4、Step Into 命令 (快捷键:F11):单步执行每条语句,在遇到函数的时候,系统将进入函数,单步执行其中的语句。
5、Step Over 命令 (快捷键:F10):单步执行每条语句,但在遇到函数时候,系统将把函数当作“一条语句”来执行,自动执行其中的内容,而不进入函数内部单步执行。
6、Step Out命令 (快捷键:Shift+F11):结束对所调用函数的调试,跳出函数。
6
7、Run to cursor 命令 (快捷键:Ctrl+F10):系统将自动执行到用户光标所指的语句前。
Visual C++ 6.0还提供了一些帮助调试的窗口(可以通过“View”菜单下的“Debug Windows”子菜单中的命令来打开):
1、观察窗口 (操作:Watch 快捷键:Alt+3):输出变量和表达式的名字和值。 2、调用栈窗口 (操作:Call Stack 快捷键:Alt+7):显示所有未返回的函数调用的堆栈。
3、内存对话框 (操作:Memory 快捷键:Alt+6):显示当前内存的内容。 4、变量窗口 (操作:Variables 快捷键:Alt+4):输出当前和前面的语句中使用的变量信息和函数的返回值信息以及当前函数的局部变量信息。
5、寄存器窗口 (操作:Register 快捷键:Alt+5):显示一般用途寄存器和CPU状态寄存器的当前内容。
6、反汇编窗口 (操作:Disassembly 快捷键:Alt+8):显示编译后的程序经反汇编后的汇编语言代码。
以上窗口也可以使用“Debug”工具栏来打开,方法是在环境窗口的菜单栏中单击鼠标右键,选择“Debug”命令。如图1.11所示:
图1.11 Debug 工具栏
图标依次对应于命令:“Restart”、“Stop Debugging”、“Break Execution”、“Apply code change”、“Show next statement”、“Step Over”、“ Step Out”、“Run to Cursor”、“Quickwatch”、“Watch”、“Variables”、“Register” 、“Memory”、“Call Stack”和“Disassembly”。
设置断点的方法:在程序代码中,移动到需要设置断点的那一行上,单击鼠标右键,在弹出的快捷菜单中选自“Insert/Remove Breakpoints”命令,你可以看到代码行的左端出现了一个红色的圆点——那是VC++中断点的标志,表示在此行代码上设置了一个断点。以后程序在调试过程中,每次执行到这里,都会停下,方便用户观察watch区域中的内容。
7
去除断点的命令与设置断点的命令相同:在已设置断点的地方,单击鼠标右键,在弹出的快捷菜单中选自“Insert/Remove Breakpoints”命令,左端的红色圆点就消失,断点被去除了。
下面分别用单步调试和断点调试两种方法调试以下程序: #include \void main() {int f=1,i; for(i=1;i<=20;i++)
f=f*i;
printf(\}
单步调试方法的特点是程序执行时一次只执行一行,每执行一行,程序就会停止运行,这时,可以通过变量窗口和观察窗口检查有关变量和表达式的值,以此来判断是否正确,从而找到错误的位置。
断点调试方法的特点是可以在程序中的某行语句位置设置断点,当程序执行到此语句的前一条语句时停止运行,此时在观察窗口中插入必要的表达式,以此来检查错误。
1、使用单步调试方法调试
(1)对上面的程序进行编辑、编译、连接并运行。运行结果为“f=-288522240”,显然结果错误。
(2)选择“Step Into”命令,界面中增加了两个窗口如图1.12所示:
8
图1.12 单步调试窗口
增加的左边窗口是变量窗口,右边是观察窗口。在程序的左边有一个黄色箭头。此时在观察窗口中提示错误信息:“CXX0069:Error:variable needs stack frame”表示变量定义类型有错误,改为“long int f=1;”。
(3)连续按F10键,在变量窗口中发现当i为17时,f的输出值为负数,把“printf(\”改为“printf(\”,仍然存在这个问题,说明我们计算的数值太大,已经超过了长整型的取值范围,若把17改为16,则结果正确。
2、使用断点调试方法调试
(1)对上面的程序进行编辑、编译、连接并运行。运行结果为“f=-288522240”,显然结果错误。
(2)由于输出结果错误,我们在“printf(\”处设置断点。 (3)选择“go”命令,进入调试器状态,界面如图1.13所示:
9
图1.13 断点调试窗口
程序在断点处停止运行,从变量窗口中显示,可以看出变量f的值为负数,超出了表示范围。把“17”改为“16”,重新调试,调试成功。
1.2 Turbo C 2.0开发环境
Turbo C 2.0同前述VC++ 6.0一样,它也是一个集C语言程序编辑、编译、链接、调试及运行为一体的集成开发软件,具有界面简单直观、开发效率高、功能强、使用灵活等优点,是人们进行C语言程序开发的常用工具。
1.2.1 Turbo C 2.0 主菜单功能
Turbo C 2.0软件无须安装,只要将对应的压缩包解压到硬盘某个分区即可(一般为C盘),解压后即在对应分区上出现一个名称为turboc2的文件夹,Turbo C 2.0软件所有的文件都包含在这个文件夹内。
运行Turbo C 2.0软件时可以选择进入turboc2 文件夹,用鼠标点击名称为TC的图标,也可以在命令行方式下进入turboc2目录,然后键盘输入tc并回车即可。
运行Turbo C 2.0软件后,就进入了该软件的主菜单界面,如图1.14所示。
10
图1.14 Turbo C 2.0主菜单
由图1.14可见,Turbo C 2.0提供了8个功能菜单供编程使用,而这8个功能菜单又有各自的子菜单,各子菜单功能如下:
1、【File】菜单
打开【File】菜单可按Alt+F组合键,其子菜单内容如图1.15所示。用户要想选择某个子菜单的功能可使用↑或↓方向键移动选中并回车或直接按各子菜单名称的首字母,也可使用其对应的快捷键来选择相应的功能,快捷键显示在子菜单名称的右侧。
如果用户要返回上级菜单或取消某个操作,可以按ESC键操作。
图1.15 File子菜单
●【Load】:打开已有的某个文件,默认的文件后缀名为.C,当选中此项或直接按其对应的快捷键F3,系统将弹出一个对话框,用户可在对话框内输入需打开的文件名称(须包
11
含文件的存取路径)即可打开指定的文件。例如:需打开C盘user目录下的文件1.c,则需键入c:\%user\\1.c。
●【Pick】:选择此选项后,屏幕上会显示出用户最近编辑过的8个文件列表,用户可根据需要选择其中某个文件打开。
●【New】:选择此选项后,系统将打开一个新的空白文件进行编辑,其文件名为NONAME.C,用户可键入自己编写的源程序代码后存盘时再给该文件命名。
●【Save】:选择此选项后,系统将为用户保存其正在编辑的文件。注意:如果用户未在弹出的对话框中为需存盘的文件重新命名,则该文件就以原有的名字进行保存。
●【Write to】:该选项的功能相当于Word软件中的“另存为”功能,即将正在编辑的文件以另外的名字进行保存。
●【Directory】:选择此选项后,系统将弹出一个对话框要求用户输入一个路径名,完成后回车,系统将显示该路径下所有文件供用户选择。
●【Change dir】:其功能是更改系统默认的文件存取路径。
●【Os shell】:选择此选项后,用户可暂时离开Turbo C 2.0开发环境回到DOS命令状态下,此时用户可运行DOS命令。如需回到Turbo C 2.0环境中可在DOS提示符下键入EXIT命令并回车。
●【Quit】:选择此选项后,用户将彻底退出Turbo C 2.0,如用户在退出前未进行过保存操作,系统将会提示用户保存编辑的文件并允许用户修改要保存文件的文件名。
2、【Edit】菜单
该菜单下无其它子菜单,其功能是对用户打开的文件进行编辑,用户打开一个文件后就自动进入该功能。
在编辑中,用户可使用以下快捷键以方便文件的编辑。 ●Page Up:向上翻页 ●Page Down:向下翻页
●Home:将光标移动到当前行的头部 ●End:将光标移动到当前行的末尾 ●Ctrl+Y:删除光标所在行的内容 ●Ctrl+T:删除光标所在处的一个单词 ●Ctrl+KB:设置块的开始位置 ●Ctrl+KK:设置块的结束位置
12
●Ctrl+KV:块移动 ●Ctrl+KC:块复制 ●Ctrl+KY:块删除 ●Ctrl+KH:块取消 3、【Run】菜单
使用Alt+R快捷键可打开【Run】菜单,如图1.16所示。
图1.16 Run子菜单
●【Run】:选择此项或按快捷键Alt+F9后,系统将对当前编辑的文件进行编译,如无编译错误则运行该程序,否则将在窗口中显示程序中的编译错误的种类及个数。按任意键后将在窗口的Message区域显示对应错误的信息。
例如:某程序代码如下: #include
printf(“Value of a is%d\\n”,a) }
选择【Run】选项后,窗口即出现如图1.17所示信息,按任意键后系统显示相关错误信息如图1.18所示。
13
图1.17 执行【Run】选项的系统信息
图1.18 程序编译错误信息
●【Program reset】:此选项功能是终止当前程序的调试。
●【Go to cursor】:该选项功能是使得程序只运行到光标所在行,主要用于程序的调试。
●【Trace into】:单步跟踪程序的执行,并跟踪被调用子函数的内部执行情况。 ●【Step over】:单步跟踪程序的执行,但不跟踪被调用的子函数。
●【User screen】:显示程序的执行结果。程序运行后,用户可使用快捷键Alt+F5进行程序结果的反复查看,查看后按任意键返回程序的编辑状态。
4、【Compile】菜单
按快捷键Alt+C可直接打开程序的编译菜单,如图1.19所示。
14
图1.19 【Compile】子菜单
●【Compile to OBJ】:编译用户当前的源代码文件,如无错误将生成与源代码文件对应的目标文件(.OBJ)。选择此功能后,窗口信息如图1.17所示。
源程序经编译后,可能会出现3种级别的错误,分别为警告错误(Waring)、一般错误(Error)和致命错误(Fatal)。其中,警告错误可以不修改而继续运行程序,但可能会使得程序结果出错;而后两类错误只有修改后通过编译器检查无错时方可继续运行程序。
另外,编译器只能检查出程序中包含的语法和词法错误,对于逻辑错误无法检查,所以即使编译无错也不代表着程序运行肯定能得到正确的结果。
●【Make EXE file】:生成可执行文件(.EXE)。
●【Link EXE file】:链接.OBJ文件和库文件,生成.EXE可执行文件。
●【Build all】:类似与【Compile to OBJ】和【Make EXE file】的组合,即无条件重新编译和链接,最终生成可执行文件。
●【Primary C file】:弹出一个对话框,要求用户输入将要编译或Make的新文件名,如在编译或链接过程中出现错误,则把相应的文件载入编辑窗口。
●【Get info】:显示当前工作目录名、源文件名、源文件字节数、编译错误数等信息。 5、【Project】菜单
按Alt+P即进入【Project】菜单,如图1.20所示。
15
图1.20 【Project】子菜单
●【Project name】:选择后将弹出对话框,要求用户输入将要编译、链接的项目文件名(.PRJ)。注:项目文件的内容为将要编译、链接的文件名列表。
●【Break make on】:规定终止Make的缺省条件。此项被选择后系统弹出一个包含4个选项的对话框,其中:Warning表示在编译一个项目文件时,如发现警告(Warning)以上的错误就停止编译;Error表示编译时发现一般错误(Error)就停止编译;Fatal Error表示只有发现致命错误才停止编译;Link表示在链接前停止Make,不生成可执行文件。
●【Auto dependencies】:设置自动依赖关系。当此项设置为On时,系统在编译时会检查源文件与对应的.OBJ文件的日期与时间是否一致,如源文件时间新于.OBJ文件,则重新编译;如设置为Off,则不进行检查。
●【Clear project】:清除当前的Project name,并重置消息窗口。 ●【Remove messages】:清除消息(Message)窗口中的错误信息。 6、【Options】菜单
按Alt+O可打开Turbo C 2.0的操作菜单,如图1.21所示。该菜单主要是供用户对Turbo C 2.0软件环境进行配置。
16
如图1.21 【Options】子菜单
●【Compile】:此选项又包含一个子菜单,其中的选项为用户提供了选择文件配置、内存模式、查错技术、代码优化、诊断消息控制和宏定义等功能,如图1.22所示。
①【Model】:允许用户选择Tiny、Small、Medium、Compact、Large和Huge共6种存储模式。模式选取的原则一般为:多数情况下用户应选择Small模式;如程序代码大于64K而数据不多(小于64K)时,可选Medium模式;程序不大而数据多时选择Compact模式;程序和数据规模都大而静态数据不超过64K时选择Large模式;静态数据超过64K时选择Huge模式。
②【Defines】:弹出一个对话框,用户可在其中输入宏定义。用户可同时定义多个宏,宏之间用分号相隔。
图1.22 【Compile】子菜单
17