C语言实验讲义 C语言实验讲义 田生伟 编审 新疆大学软件学院 2014-02
C 语言实验讲义 C 语言实验讲义 田生伟 编 审 新疆大学软件学院 2014-02
C语言实验讲义 前言 C语言程序设计是一门实践性很强的课程,该课程的学习有其自身的特点 学习者必须通过大量的编程训练,在实践中掌握程序设计语言,培养程序设计的 基本能力,并逐步理解和掌握程序设计的思想和方法。具体的说,通过上机实践, 应该达到以下几点要求: 1.使学习者能很好地掌握一种程序设计开发环境的基本操作方法(例如 (Visual C++6.0), 掌握应用程 开发的一般步骤。 2.在程序设计和调试程序的过程中,可以帮助学习者进一步理解教材中各 章节的主要知识点,特别是一些语法规则的理解和运用,程序设计中的常用算法 和构造及应用,也就是所谓“在编程中学习编程”。 3.通过上机实践,提高程序分析、程序设计和程序调试的能力。程序调试 是一个程序员最基本的技能,不会调试程序的程序员就意味着他即使会 门 言,却不能编制出任何好的软件。通过不断的积累经验,摸索各种比较常用的技 巧,可以提高编程的效率和程序代码的质量。 参考资料: 《C语言程序设计》K.N.King人民邮电出版社 《C程序设计语言》 (美)BrianW.Kernighan/,(美)DennisM.Ritchie 机械工业出版社 网易科技频道网易学院 http://www.isblog.cn/user1/1032/archives/2006/3127.html 中国IT实验室 http://www.chinaitlab.com/Cisco/others/392925.html
C 语言实验讲义 前言 C 语言程序设计是一门实践性很强的课程,该课程的学习有其自身的特点, 学习者必须通过大量的编程训练,在实践中掌握程序设计语言,培养程序设计的 基本能力,并逐步理解和掌握程序设计的思想和方法。具体的说,通过上机实践, 应该达到以下几点要求: 1.使学习者能很好地掌握一种程序设计开发环境的基本操作方法(例如 (Visual C++6.0),掌握应用程序开发的一般步骤。 2.在程序设计和调试程序的过程中,可以帮助学习者进一步理解教材中各 章节的主要知识点,特别是一些语法规则的理解和运用,程序设计中的常用算法 和构造及应用,也就是所谓“在编程中学习编程”。 3.通过上机实践,提高程序分析、程序设计和程序调试的能力。程序调试 是一个程序员最基本的技能,不会调试程序的程序员就意味着他即使会一门语 言,却不能编制出任何好的软件。通过不断的积累经验,摸索各种比较常用的技 巧,可以提高编程的效率和程序代码的质量。 参考资料: 《C 语言程序设计 》 K. N. King 人民邮电出版社 《C 程序设计语言》 (美)Brian W. Kernighan/(美)Dennis M. Ritchie 机械工业出版社 网易科技频道网易学院 http://www.isblog.cn/user1/1032/archives/2006/3127.html 中国 IT 实验室 http://www.chinaitlab.com/Cisco/others/392925.html
C语言实验讲义 目录 讲义一Visual C+6.0上机操作 .4 讲义二三种结构的设计 .17 讲义三利用数组处理批量数据 .25 讲义四用函数实现模块化程序设计.34 讲义五善于利用指针 .43 讲义六用户自己建立数据类型 .55 讲义七对文件的输入输出 .66
C 语言实验讲义 目录 讲义一 Visual C++ 6.0 上机操作 .4 讲义二 三种结构的设计 .17 讲义三 利用数组处理批量数据 .25 讲义四 用函数实现模块化程序设计 .34 讲义五 善于利用指针 .43 讲义六 用户自己建立数据类型 .55 讲义七 对文件的输入输出 .66
C语言实验讲义 讲义一Visual C++6.0上机指南 1.1 Visual C+6.0概述 Visual C+6.0是微软公司推出的目前使用极为广泛的基于Windows平台的可视 化集成开发环境,它和Visual Basic、Visual Foxpro、Visual J+等其它软件构成 了Visual Studio(又名Developer Studio)程序设计软件包。Developer Studio 是一个通用的应用程序集成开发环境,包含了一个文本编辑器、资源编辑器、工程编 译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档。使用 Visual Studi0,可以完成创建、调试、修改应用程序等的各种操作 VC+6.0提供面向对象技术的支持,它能够帮助使用FC库的用户自动生成一个 具有图形界面的应用程序框架。用户只需在该框架的适当部分添加、扩充代码就可以 得到一个满意的应用程序。 VC+6.0除了包含文本编辑器,C/C+混合编译器,连接器和调试器外,还提供了 功能强大的资源编辑器和图形编辑器,利用“所见即所得”的方式完成程序界面的设 计,大大减轻程序设计的劳动强度,提高程序设计的效率。 VC+的功能强大,用途广泛,不仅可以编写普通的应用程序,还能很好地进行系 统软件设计及通信软件的开发
C 语言实验讲义 讲义一 Visual C++ 6.0 上机指南 1.1 Visual C++ 6.0 概述 Visual C++6.0 是微软公司推出的目前使用极为广泛的基于 Windows 平台的可视 化集成开发环境,它和 Visual Basic、Visual Foxpro、Visual J++等其它软件构成 了 Visual Studio(又名 Developer Studio)程序设计软件包。Developer Studio 是一个通用的应用程序集成开发环境,包含了一个文本编辑器、资源编辑器、工程编 译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档。使用 Visual Studio,可以完成创建、调试、修改应用程序等的各种操作。 VC++6.0 提供面向对象技术的支持,它能够帮助使用 MFC 库的用户自动生成一个 具有图形界面的应用程序框架。用户只需在该框架的适当部分添加、扩充代码就可以 得到一个满意的应用程序。 VC++6.0 除了包含文本编辑器,C/C++混合编译器,连接器和调试器外,还提供了 功能强大的资源编辑器和图形编辑器,利用“所见即所得”的方式完成程序界面的设 计,大大减轻程序设计的劳动强度,提高程序设计的效率。 VC++的功能强大,用途广泛,不仅可以编写普通的应用程序,还能很好地进行系 统软件设计及通信软件的开发
C语言实验讲义 1.2使用Visual C+6.0建立c语言应用程序 利用vC+6.0提供的一种控制台操作方式,可以建立C语言应用程序,Win32 控制台程序(Win32 Console Application)是一类Windows程序,它不使用复杂的图 形用户界面,程序与用户交互是通过 个标准的正文窗口, 下面我们将对使用 Visual C+6.0编写简单的C语言应用程序作一个初步的介绍。 1,安装和启动 运行Visual Studio软件中的setup.exe程序,选择安装Visual C+6.0, 然后按照安装程序的指导完成安装过程。 安装完成后,在开始菜单的程序选单中有Microsoft Visual Studio6.0 图标,选择其中的Microsoft Visual C+6.0即可运行(也可在Window桌面上 建立一个快捷方式,以后双击即可运行)。 2.创建工程项目 用Visual C+6.0系统建立C语言应用程序,首先要创建一个工程项目 (project),用来存放C程序的所有信息。创建一个工程项目的操作步骤如下 进入V 6.0环境后 选择主菜单 文件 (File)”中的“新建 (New)”选项,在弹出的对话框中单击上方的选项卡“工程(Projects)”,选择 “Win32 Console Application”工程类型,在“工程(Project name)” 一警中 填写工程名,例如Myexaml,在“位置(Location)”一栏中填写工程路径(目 录)例如:D:\MyProject,见图2-1,然后单击“确定(OK)”按钮继续。 音建 2☒ 文件工程|工作区|其它文档 T程 Type Wizard c位置: :R创建新工作区 CA天 作区 厂D从属性的 ■ 确定☐ 结束 图2-1创建工程项目
C 语言实验讲义 1.2 使用 Visual C++ 6.0 建立 C 语言应用程序 利用 VC++6.0 提供的一种控制台操作方式,可以建立 C 语言应用程序, Win32 控制台程序(Win32 Console Application)是一类 Windows 程序,它不使用复杂的图 形用户界面,程序与用户交互是通过一个标准的正文窗口,下面我们将对使用 Visual C++ 6.0 编写简单的 C 语言应用程序作一个初步的介绍。 1.安装和启动 运行 Visual Studio 软件中的 setup.exe 程序,选择安装 Visual C++ 6.0, 然后按照安装程序的指导完成安装过程。 安装完成后,在开始菜单的程序选单中有 Microsoft Visual Studio 6.0 图标,选择其中的 Microsoft Visual C++ 6.0 即可运行(也可在 Window 桌面上 建立一个快捷方式,以后双击即可运行)。 2.创建工程项目 用 Visual C++6.0 系统建立 C 语言应用程序,首先要创建一个工程项目 (project),用来存放 C 程序的所有信息。创建一个工程项目的操作步骤如下: (1)进入 Visual C++6.0 环境后,选择主菜单“文件(File)”中的“新建 (New)”选项,在弹出的对话框中单击上方的选项卡“工程(Projects)”,选择 “Win32 Console Application”工程类型,在“工程(Project name)”一栏中 填写工程名,例如 Myexam1,在“位置(Location)”一栏中填写工程路径(目 录)例如:D:\ MyProject,见图 2-1,然后单击“确定(OK)”按钮继续。 图 2-1 创建工程项目
C语言实验讲义 (2)屏幕上出现如图2-2所示的“Win32 Console Application-一Step1of 1”对话框后,选择“An empty project'”项,然后单击“E完成(Finish)”按 钮继续 Vin32 Console Application-Step I of I 2☒ 。An emply projeet. A simple application. CA"Hello.World!'application. C An application that supports MFC. E完成☐取消 图2-2Win32 Console Application-Step1of1对话框 出现如图2-3所示的“新建工程信息(New Project Information)”对话框 后,单击“确定(OK)”按钮完成工程创建。创建的工作区文件为myexaml.ds 和工程项目文件myexaml.dsp。 新建工程信息 工程目录: D:\Myprojecfmyexam1 确定取消」 图2-3新建工程信息对话框 3.新建C源程序文件 选择主菜单“工程(Project)”中的“添加工程(Add to Project)→新建 (New)”选项,为工程添加新的C源文件
C 语言实验讲义 (2)屏幕上出现如图 2-2 所示的“Win32 Console Application—Step 1 of 1”对话框后,选择“An empty project”项,然后单击“F 完成(Finish)”按 钮继续: 图 2-2 Win32 Console Application—Step 1 of 1 对话框 出现如图 2-3 所示的“新建工程信息(New Project Information)”对话框 后,单击“确定(OK)”按钮完成工程创建。创建的工作区文件为 myexam1.dsw 和工程项目文件 myexam1.dsp。 图 2-3 新建工程信息对话框 3. 新建 C 源程序文件 选择主菜单“工程(Project)”中的“添加工程(Add to Project)→新建 (New)”选项,为工程添加新的 C 源文件
C语言实验讲义 注 2☒ 文件|工程|其它文档 。A添加工程 myexaml 文件 myexaml.c Script 确定☐结束 图2-4加入新的C源程序文件 出现如图2-4所示的“新建”对话框后,选择“文件(Fi1e)”选项卡,选 定“C+Source File”项,在“文件(File Name)”栏填入新添加的源文件名, 如nyexaml.c,“C目录:(Location)” 栏指定文件路径,单击“确定(OK)” 按钮完成C源程序的系统新建操作,如图2-4所示。 在文件编辑区输入源程序,然后保存工作区文件,如图2-5所示。 注意:填入C源文件名一定要加上扩展名“.c”,否则系统会为文件添加默 认的C+源文件扩展名“,CPp” 目文件院特查香括入工提简译工具自口衫助 自日a为用的2,企,四元管 New Class c-") Savea the document 图2-5建立c源程序 4.打开己存在的工程项目, 进入Visual C+6.O环境后,选择主菜单“打开工作区(0 pen Workspace)” 命令,在“Open Workspace”对话框内找到并选择要打开的工作区文件 myexaml.dsw,单击“确定(OK)”按钮,打开工作区
C 语言实验讲义 图 2-4 加入新的 C 源程序文件 出现如图 2-4 所示的“新建”对话框后,选择“文件(File)”选项卡,选 定“C++ Source File”项,在“文件(File Name)”栏填入新添加的源文件名, 如 myexam1.c,“C 目录:(Location)”一栏指定文件路径,单击“确定(OK)” 按钮完成 C 源程序的系统新建操作,如图 2-4 所示。 在文件编辑区输入源程序,然后保存工作区文件,如图 2-5 所示。 注意:填入 C 源文件名一定要加上扩展名“.c”,否则系统会为文件添加默 认的 C++源文件扩展名“.CPP”。 图 2-5 建立 c 源程序 4.打开已存在的工程项目,编辑 C 源程序 进入 Visual C++6.0 环境后,选择主菜单“打开工作区(Open Workspace)” 命令,在“Open Workspace”对话框内找到并选择要打开的工作区文件 myexam1.dsw,单击“确定(OK)”按钮,打开工作区
C语言实验讲义 回可☒ -6× members[Na members-Create New Ciass. 国0 pen Torkapac0 2☒ 查找流围①: 习图心团 ( G开D 打开工程自源程序控制 s来源控制 图2-6打开myexaml.c源程序 在左侧的工作区窗口,单击下方的“FileView”选项卡,选择文件视图显 示,打开“Source”文件夹,再打开要编辑的C源程序进行编辑和修改。如图 2-6所示。 5.在工程项目中添加已经存在的C源程序文件 选择主菜单“打开工作区(Open Workspace)”命令,在“Open Workspace” 对话框内找到并选择要打开的工作区文件“myexam.dsw”,单击“确定(OK)”按钮 打开工作区。 将已经存在的C源程序文件添加工程到当前打开的工程区文件中,选择主菜单 “工程(Project)” 中的“添加工程(Add to Project)→File” 选项,在“Inser File into Project'”对话框内找到已经存在的C源程序文件,单击“确定(OK) 按钮完成添加。 6.编译、连接和运行 (1)编译 选择主菜单“编译(Build)”中的“编译(Compile)”命令,或单击工具条 上的图标多,系统只编译当前文件而不调用链接器或其它工具。输出(Output) 窗口将显示编译过程中检查出的错误或警告信息,在错误信息处单击鼠标右键或 双击鼠标左键,可以使输入焦点跳转到引起错误的源代码处大致位置以进行修 改。如图2-7所示,输出窗口中提示“E ror C2146: miss e fore1 dentifier sum形 。提示在标识符sUm2之前缺少分号,同时在程序菌 口标注出出错语句的大致位置。在“suml=b一”语句的后面加一个分号后再编译 一次即可。 (2)构建 选择主菜单“编译(Build)”中的“构建(Build)”命令,或单击工具条上 的图标草,对最后修改过的源文件进行编译和连接。 选择主菜单“编译(Build)”中的“重建全部(RebuildAll)”命令,允许 用户编译所有的源文件,而不管它们何时曾经被修改过
C 语言实验讲义 图 2-6 打开 myexam1.c 源程序 在左侧的工作区窗口,单击下方的 “FileView” 选项卡,选择文件视图显 示,打开“Source”文件夹,再打开要编辑的 C 源程序进行编辑和修改。如图 2-6 所示。 5.在工程项目中添加已经存在的 C 源程序文件 选择主菜单“打开工作区(Open Workspace)”命令,在“Open Workspace” 对话框内找到并选择要打开的工作区文件“myexam.dsw”,单击“确定(OK)”按钮 打开工作区。 将已经存在的 C 源程序文件添加工程到当前打开的工程区文件中,选择主菜单 “工程(Project)”中的“添加工程(Add to Project)→ File”选项,在“Insert File into Project”对话框内找到已经存在的 C 源程序文件,单击“确定(OK)” 按钮完成添加。 6.编译、连接和运行 (1)编译 选择主菜单“编译(Build)”中的“编译(Compile)”命令,或单击工具条 上的图标 ,系统只编译当前文件而不调用链接器或其它工具。输出(Output) 窗口将显示编译过程中检查出的错误或警告信息,在错误信息处单击鼠标右键或 双击鼠标左键,可以使输入焦点跳转到引起错误的源代码处大致位置以进行修 改。如图 2-7 所示,输出窗口中提示“Error C2146: syntax error : missing ';' before identifier 'sum2'”,提示在标识符 sum2 之前缺少分号,同时在程序窗 口标注出出错语句的大致位置。在“sum1=b-a”语句的后面加一个分号后再编译 一次即可。 (2)构建 选择主菜单“编译(Build)”中的“构建(Build)”命令,或单击工具条上 的图标 ,对最后修改过的源文件进行编译和连接。 选择主菜单“编译(Build)”中的“重建全部(Rebuild All)”命令,允许 用户编译所有的源文件,而不管它们何时曾经被修改过
C语言实验讲义 选择主菜单“编译(Build)”中的“批构建(Batch Build)”命令,能单 步重新建立多个工程文件,并允许用户指定要建立的项目类型。 程序构建完成后生成的目标文件(.obj),可执行文件(exe)存放在当前工 程项目所在文件夹的“Debug1 子文件夹中。 o-tegrtd 日件棉五入工我工A口 迪心日日送电危2·,巧页台 -global member,◆main 滨保连按运行 pintesum1-id.sun2-".sunt.sun2): gration:exant-vin32 Debug- a1.c(18)error C2146:syntax error missing ':before identifier u2” 输出窗口 Ln 9.Cel 13 REC COL OVR READ 图2-7编译、连接和运行.C源程序 (3)运行 选择主菜单“编译(Build)”中的“执行(Build Execute)”命令,或单 击工具条上的图标!,执行程序,将会出现一个新的用户窗口,按照程序输入 要求正确输入数据后,程序即正确执行,用户窗口显示运行的结果。 对于比较简单的程序,可以直接选择该项命令,编译、连接和运行一次完成。 7.调试程序 在编写较长的程序时,能够一次成功而不含有任何错误决非易事,对于程序 中的错误,系统提供了易用且有效的调试手段。调试是一个程序员最基本的技能 不会调试的程序员就意味着即使学会了一门语言,却不能编制出任何好的软件 (1)调试程序环境介绍 ①进入调试程序环境 选择主菜单“编译(Build)”中的“开始调试(Start Debug)”命令,选择 下一级提供的调试命令,或者在菜单区空白处单击鼠标右键,在弹出的菜单中选 中“调试(Debug 激活调试工具条 选择需要的调试命令,系统将会进入 调试程序界面。同时提供多种窗口监视程序运行,通过单击“调试(Debug)”工 具条上的按钮,可以打开/关闭这些窗口,参考图2-8。 ②Watch(观察)窗口 单击调试(Debug)工且条上的Watch按.就出现一个Watch窗口 系统支持查看程序运行到当前指令语句时变量、表达式和内存的值。所有这 些观察都必须是在断点中断的情况下进行。 观看变量的值最简单,当断点到达时,把光标移动到这个变量上,停留一会 就可以看到变量的值
C 语言实验讲义 选择主菜单“编译(Build)”中的“批构建(Batch Build)”命令,能单 步重新建立多个工程文件,并允许用户指定要建立的项目类型。 程序构建完成后生成的目标文件(.obj),可执行文件(exe)存放在当前工 程项目所在文件夹的“Debug” 子文件夹中。 图 2-7 编译、连接和运行.C 源程序 (3)运行 选择主菜单“编译(Build)”中的“执行(Build Execute)”命令,或单 击工具条上的图标 ,执行程序,将会出现一个新的用户窗口,按照程序输入 要求正确输入数据后,程序即正确执行,用户窗口显示运行的结果。 对于比较简单的程序,可以直接选择该项命令,编译、连接和运行一次完成。 7.调试程序 在编写较长的程序时,能够一次成功而不含有任何错误决非易事,对于程序 中的错误,系统提供了易用且有效的调试手段。调试是一个程序员最基本的技能, 不会调试的程序员就意味着即使学会了一门语言,却不能编制出任何好的软件。 (1)调试程序环境介绍 ① 进入调试程序环境 选择主菜单“编译(Build)”中的“开始调试(Start Debug)”命令,选择 下一级提供的调试命令,或者在菜单区空白处单击鼠标右键,在弹出的菜单中选 中“调试(Debug)”项。激活调试工具条,选择需要的调试命令,系统将会进入 调试程序界面。同时提供多种窗口监视程序运行,通过单击“调试(Debug)”工 具条上的按钮,可以打开/关闭这些窗口,参考图 2-8。 ② Watch(观察)窗口 单击调试(Debug)工具条上的 Watch 按钮,就出现一个 Watch 窗口, 系统支持查看程序运行到当前指令语句时变量、表达式和内存的值。所有这 些观察都必须是在断点中断的情况下进行。 观看变量的值最简单,当断点到达时,把光标移动到这个变量上,停留一会 就可以看到变量的值
C语言实验讲义 还可以采用系统提供一种被称为Watch的机制来观看变量和表达式的值。在 断点中断状态下,在变量上单击右键,选择Quick Watch, 就弹出一个对话框 显示这个变量的值 在该窗口中输入变量或者表达式,就可以观察变量或者表达式的值。注意 这个表达式不能有副作用,例如“+”和 运算符绝对禁止用于这个表达 式中,因为这个运算符将修改变量的值,导致程序的逻辑被破坏。 单击调试(De ug)工具条上的“Variables“按钮弹出Variables窗口,显 示所有当前执行上下文中可见的变量的值。特别是当前指令语句涉及的变量,以 红色显示。 ④Memory(内存) 由于指针指向的数组,Watch窗口只能显示第一个元素的值。为了显示数组 的后续内容,或者要显示一片内存的内容,可以使用memory功能。单击调试 Debug 工具条上的 安钮,就弹出 一个对话框 在其中输入地址 就可以显示该地址指向的内存的内容。 ⑤Registers(寄存器) 单击调试(Debug)工具条上的“Registers'”按钮弹出一个对话框,显示当 前的所有寄存器的值。 ⑥Call Stack (调用雄找 调用堆栈反映了当前断点处函数是被哪些函数按照什么顺序调用的。单击 调试(Debug)工具条上的.“Call stack”显示Call Stack对话框。在Call Stack 对话框中显示了一个调用系列,最上面的是当前函数,往下依次是调用函数的上 级函数。单击这些函数名可以跳到对应的函数中去。 8 瓷餐置 调试工具布 上下mim 月tch1th2Wth3tc7 图2-8调试程序界面 (2)单步执行调试程序 系统提供了多种单步执行调试程序的方法:可以通过单击调试(Debug)工 具条上的按钮或按快捷键的方式选择多种单步执行命令 ①单步跟踪进入子函数(Step Into,F11),每按一次F11键或按?,程 序执行一条无法再进行分解的程序行,如果涉及到子函数,进入子函数内部:
C 语言实验讲义 还可以采用系统提供一种被称为 Watch 的机制来观看变量和表达式的值。在 断点中断状态下,在变量上单击右键,选择 Quick Watch, 就弹出一个对话框, 显示这个变量的值。 在该窗口中输入变量或者表达式,就可以观察变量或者表达式的值。注意: 这个表达式不能有副作用,例如“++”和“- -”运算符绝对禁止用于这个表达 式中,因为这个运算符将修改变量的值,导致程序的逻辑被破坏。 ③ Variables(变量)窗口 单击调试(Debug)工具条上的“Variables“按钮弹出 Variables 窗口,显 示所有当前执行上下文中可见的变量的值。特别是当前指令语句涉及的变量,以 红色显示。 ④ Memory(内存) 由于指针指向的数组,Watch 窗口只能显示第一个元素的值。为了显示数组 的后续内容,或者要显示一片内存的内容,可以使用 memory 功能。单击调试 (Debug)工具条上的“memory“按钮,就弹出一个对话框,在其中输入地址, 就可以显示该地址指向的内存的内容。 ⑤ Registers(寄存器) 单击调试(Debug)工具条上的“Registers”按钮弹出一个对话框,显示当 前的所有寄存器的值。 ⑥ Call Stack(调用堆栈) 调用堆栈反映了当前断点处函数是被哪些函数按照什么顺序调用的。单击 调试(Debug)工具条上的.“Call stack”显示 Call Stack 对话框。在 Call Stack 对话框中显示了一个调用系列,最上面的是当前函数,往下依次是调用函数的上 级函数。单击这些函数名可以跳到对应的函数中去。. 图 2-8 调试程序界面 (2) 单步执行调试程序 系统提供了多种单步执行调试程序的方法:可以通过单击调试(Debug)工 具条上的按钮或按快捷键的方式选择多种单步执行命令。 ① 单步跟踪进入子函数(Step Into,F11),每按一次 F11 键或按 ,程 序执行一条无法再进行分解的程序行,如果涉及到子函数,进入子函数内部;