版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言程序设计实习指导 C C 语言课组编写语言课组编写 西北农林科技大学信息工程学院西北农林科技大学信息工程学院 2010 年 2 月 前前 言言 程序设计是实践性很强的课程,实习的目的是为了巩固所学知识,培养、提高实际动手能 力和严肃认真的科学工作态度,而程序设计是创造性的劳动,因此需要编程人员全身心地投入, 充分发挥主观能动性,认真做好每一次实习。 每道题没有唯一解,只要掌握了基本的方法和技巧,加上自己创造性的工作,就一定能够 编写出各种各样的好程序。任何程序最终都必须在计算机上运行,以检验程序的正确与否。因 此在学习程序设计中,一定要重重视视上机上机实践环节,通过上机加深理解 C 语
2、言的有关概念,巩 固理论知识,另一方面培养调试程序的能力与技巧。为了加强基础知识和语言主干结构的学习, 深刻理解和掌握教材内容,减少实习时的盲目性,特编写本实习指导书。 为方便内容组织,每个实习由实习目的、实习内容及讲解、注意事项等几部分组成。下面 对每次实习提几点具体要求: (1) 实习前应进行充分的准备,做到心中有数。实习前应进行充分的准备,做到心中有数。要弄懂教材中的相关知识和例题,深刻理解 教材中涉及到的知识点及程序设计方法,根据实习要求,对题目进行分析,选择适当的算法、 事先事先编编写好程序写好程序。上机前一定要仔细检查程序(称为静态调试) ,直到找不出错误(包括 语法错误和逻辑错误
3、)为止。分析可能遇到的问题及解决的办法。准备几组测试测试程序的数程序的数 据据、写出预预期的期的结结果果,以便发现程序中可能存在的错误。 (2) 在实习中,应该对编写好的程序使用预先准备好的测试数据运行程序,观察是否能得到在实习中,应该对编写好的程序使用预先准备好的测试数据运行程序,观察是否能得到 预期的结果预期的结果(称为动态调试) 。对于实习中出现的问题问题进行仔细的分析,找出解决办法,调试 程序排除各种错误,直到得到正确结果。对运行结结果果要做好记录,为写实习报告做好准备。调 试过程中,要充分利用系统提供的各种调试手段和工具,例如:单步跟踪、设置断点、观察变 量值等。对出现的错误要善于思
4、考,勤于分析,尽量自己动手解决问题,逐渐提高自主分析问 题和解决问题的能力。 (3) 实习结束后,要整理实习结果,并应根据问题、解决办法和运行结果,对本次实习及时实习结束后,要整理实习结果,并应根据问题、解决办法和运行结果,对本次实习及时 进行认真分析和总结,撰写出实习报告并提交到电子作业管理系统。进行认真分析和总结,撰写出实习报告并提交到电子作业管理系统。 以这种方式提交实习报告书还处于尝试阶段,限于作者水平,其中疏漏在所难免,敬请各 位老师和同学批评指正。联系地址:Email:hl 或 Email:cy 。 作者 2010 年 2 月 目目 录录 实习一实习一 C C 语言编程环境及简单程
5、序设计语言编程环境及简单程序设计.- 1 - 实习二实习二 分支结构程序设计分支结构程序设计.- 9 - 实习三实习三 循环结构程序设计循环结构程序设计.- 15 - 实习四实习四 数数 组组.- 17 - 实习五实习五 指指 针针.- 19 - 实习六实习六 函数调用函数调用.- 20 - 实习七实习七 结构体、联合体及用户定义的数据类型结构体、联合体及用户定义的数据类型.- 21 - 实习八实习八 文件操作文件操作.- 22 - 实习一实习一 C C 语言编程环境及简单程序设计语言编程环境及简单程序设计 一、实习目的一、实习目的 熟悉 C 语言集成开发环境的使用方法,学会独立使用该系统;
6、通过编写简单的程序,掌握 C 语言源程序的编辑、编译、连接、调试和运行过程; 通过编写、运行简单的 C 语言源程序,学习程序编写方法,了解 C 源程序的特点; 理解 C 语言数据的类型、取值范围、定义和使用方法; 掌握各种运算符、表达式的基本概念、使用方法,以及各种运算符的优先级及结合方向; 掌握各种类型数据的输入/输出方法,能正确使用各种格式转换符和控制符。 二、实习要求二、实习要求 实习前认真复习第 1、2 章内容,尤其是 P17 的 1.4 C 程序的开发步骤; 对实习内容中给定的题目上机前先进行程序的编写和数据的准备; 学会使用上机环境; 上机编辑、调试、运行程序,保存最终程序到自己的
7、文件夹中。 注意:注意:当本次作业全部完成后,提交到信息学院作业管理系统中任课教师的名下。 三、三、Visual C+6.0 运行环境介绍运行环境介绍 Visual C+6.0 是运行于 Windows 环境下的交互式可视化集成开发环境,有中、英文两种 版本,使用方法相同,即可在该环境中编辑程序、也可编译连接运行程序,此处仅介绍中文环 境下的使用方法。 安装安装 使用前必须先在所使用的机器上安装 Visual C+6.0 运行环境系统。该系统软件放在一张光 盘上,只要根据提示便可以轻松安装,此处不做详细介绍。实习机房机器上已安装,可供使用。 启动启动 一般安装后便在桌面上创建了快捷方式图标 。
8、首次启动 Visual C+6.0,只要双击此图标即可; 也可通过开始菜单所有程序Microsoft Visual Studio 6.0Microsoft Visual C+6.0 启动 Visual C+6.0; 直接双击 C 语言源程序,即名为.c 或.cpp 的文件,也可启动 Visual C+6.0 并显示程序。 运行环境介绍运行环境介绍 Visual C+6.0 启动后,界面如图 1 所示。 可见 VC(Visual C+6.0 的简称)的主界面由标题栏、菜单栏、工具栏、编辑窗口、信息 提示窗口、工作区窗口及其切换按钮等组成。 标题栏标题栏 用于显示应用程序名和当前打开的文件名,在上
9、图中为 exam1-1.c 创天中文 VC+。若文件名后带有“*”号,表示修改后的内容尚未存盘,提示用户及时保存更新的内容。 菜单栏菜单栏 列出了 VC 提供的各种命令,用法与 Word 相同。其中: 文件文件 用来对文件和项目进行管埋,如创建新文件和项目、打开己有的文件和项目、保 存文件和项目;关闭文件和项目等。其中打开、保存、关闭工作区工作区是一个新的概 念,因为VC中为源程序建立了一个工作区,当再次新建一个C程序时,必须要关 闭上一个程序已打开的工作区,否则会出错。 编辑编辑 对文件进行各种编辑操作,如剪切、粘贴、插入、删除、复制、全部选择、查找、 定位等。 查看查看 用于改变窗口和工具
10、栏的显示方式,如建立类向导、全屏幕显示、工作区、输出、 激活调试时所用的各个窗口、属性等。 插入插入 创建、添加项目和资源,如新建类、插入新的资源、插入新的ATL对象等。 工程工程 设置与工程相关的源文件、库函数,如添加工程、设置活动工程、来源控制、插 入工程到工作区等。 编译编译 对应用程序进行编译、连接和执行,如编译、构件、重建全部、批构件、开始调 试等。 工作区窗口 标题栏 图 1 Visual C+主界面 编辑窗口 信息提示窗口 主菜单 状态栏 工具栏 切换工作区 按钮 工具工具 选择或制定开发环境中的一些实用工具,以激活各个调试窗口,改变各个窗口的 显示模式等。 窗口窗口 对窗口进行
11、各种设置。 帮助帮助 显示各种帮助信息。 工具栏工具栏 提供常用工具,方便编辑、保存、编译运行程序。分为以下三个部分。 常用工具栏常用工具栏 编译运行工具栏编译运行工具栏 编 译 编 译 及 连 接 中 断 编 译 连 接 运 行 调 试 运 行 设 置 取 消 断 点 WizardBar 工具栏工具栏 包含一些快速使用 Class Wizard 的工具,此处从略。 工作区窗口工作区窗口 用目录树的方式显示工程文件的组织结构形式。与 Windows 的资源管理器类似,可以通过 点击“+”或“-”号,来展开或折叠下级结构。通过点击切换工作区按钮,可改变显示方式。 Class View 标签标签
12、用于显示当前打开的项目所包含的类、函数和变量定义等信息。 File View 标签标签 用于显示当前打开的项目所包含的各种文件信息,包括:源文件、头文 件、资源文件等。 编辑窗口编辑窗口 新 建 文 件 打 开 文 件 保 存 当 前 文 件 保 存 所 有 打 开 的 文 件 剪 切 选 定 内 容 复 制 选 定 内 容 粘 贴 复 制 内 容 撤 销 上 次 操 作 恢 复 被 撤 销 的 操 作 打 开 关 闭 工 作 区 窗 口 打 开 关 闭 信 息 提 示 窗 口 文 件 窗 口 操 作 在指 定的 多个 文件 中查 找字 符串 指定要查找的字符串,按 Enter 键进行查找 在
13、当 前文 件中 查找 指定 的字 符串 为用户提供的编辑源文件的区域,用法与 Word 完全相同,此处不再赘述。 信息提示窗口信息提示窗口 用于显示编译、连接、运行时,系统产生的各种提示信息,包括当前状态信息、各种错误 信息、警告信息等;调试信息和查找的结果也在此处显示。阅读这些信息可帮助用户查找错误。 状态栏状态栏 用于显示当前操作的状态、注释、光标所的行和列的在位置。 编辑、编译、连接和运行程序编辑、编译、连接和运行程序 此工作当 VC 启动完成,在主界面中即可开始进行。 直接建立源文件直接建立源文件 选菜单“文件”“新建” ,弹出图 2 所示界面; 选“文件”标签“C+ Source F
14、ile”; 在文件框中输入要建立的文件的名字,如图 2 中的 exam1-1.c; 在目录框中选择所建文件存放的位置,如图中的 D:2009-2010-2C。该目录必须已存在, 否则会有提示信息; 单击“确定”按钮,在弹出的图 1 所示界面的编辑窗口中,即可进行源文件的编辑。 打开已存在的打开已存在的 C C 源程序文件源程序文件 选菜单“文件”“打开” ,或单击快捷按钮 ,弹出图 3 所示打开文件界面; 用与在 Windows 中相同的方法,打开自己选定的文件到图 1 所示的 VC 环境中,然后 进行编辑、修改; 当编辑、修改完毕后,就可以原名保存或另存为其它名字的文件了。 保存保存/ /另
15、存文件另存文件 输入或修改完毕,单击菜单“文件”“保存” ,或单击快捷按钮 ,即可以前面确 图 2 新建源程序文件 图 3 打开文件 定的位置、文件名或原文件名保存文件; 若想改变文件名或文件的存放位置,则应选文件另存为,根据提示另保存文件。 编译、连接编译、连接 C C 程序程序 编译编译 进行编译的方法有三种: 方法一:按 Ctrl+F7 组合键 方法二:单击工具栏的按钮 方法三:选择菜单“编译” 执行编译后,信息提示窗口中显示出编译的结果信息,指出源程序中是否存在语法错误, 如图 4 所示。如: *.obj - error(s), warning(s) 其中:“*.obj”是所产生的目标
16、文件名, “*”代表具体的文件名,如图 4 中的 exam1-1; “ error(s)”指明发现的致命语法错误, “”是错误具体个数。若无错误即为 0; “ warning(s)”对可能的潜在性错误发出警告, “”是具体个数。若无即为 0。 如果有错误,还会在该窗口中逐一显示出具体的错误类型及位置,只要双击某错误行,便 可直接指向编辑窗口中错误所在行,以方便查看和改正错误。然后再编译。 直到源程序中没有任何语法错误,即 error 型错误,表示编译成功,已正确生成目标文件, 即.obj 文件,接着就可以进行连接了。 建建议议: :对有多个错误的情况,要分析错误提示,根据前后语句找出出错原因,
17、再进行修改,且 最好从第一个错误开始修改,因为前面的错误可能会连带后面也出错;最好每改正一个错误,就 编译一次,这样能够有效地消除连带错误。 连接连接 目标文件生成后,就要把目标程序与系统中的库函数连接起来,生成可执行文件,即.exe 文件。进行连接的方法也有三种: 方法一:按 F7 键 方法二:单击工具栏的按钮 方法三:选择菜单“编译” 图 4 编译界面 图 5 连接界面 与编译类似,连接的结果也会在信息提示窗口中显示,如图 5 所示。若有错误提示,必须 改正后重新再进行编译、连接,直到生成没有错误的可执行文件。错误多一般是因为函数名不 正确,或包含命令不对,如头文件的位置不正确等。 编译编
18、译+ +连接连接 编译和连接操作也可一次完成。如果尚未进行编译就直接选择执行连接,系统将会先进行 编译,若成功后再自动进行连接。 运行运行 运行可执行文件的方法也有三种: 方法一:按 Ctrl+F5 组合键 方法二:单击工具栏的按钮 方法三:选择菜单“编译” 若程序能够正常运行,系统会在 VC 界面上弹出一个命令行方式的用户窗口,如果需要的 话用户可以通过这个窗口给程序输入数据,而程序运行的结果也是显示在这个界面上的。如对 图 1 中所示的程序,运行的结果如图 6 所示。其中的“Press any key to continue”是系统提示 信息,只要根据该提示按任意键,便可返回编辑界面。 关
19、闭程序工作区关闭程序工作区 当一个程序调试、运行完毕后,必须先关闭当前程序的工作区,才可进行下一个程序的工 作,否则可能会出现意想不到的错误。关闭工作区可选菜单“文件”“关闭工作区”来实现。 退出退出 VCVC 系统环境系统环境 可选菜单“文件”“退出” ,其它退出方法与 Windows 其它应用程序相同。 四、实习内容四、实习内容 创建文件夹创建文件夹 在自己实习机器的 C 上盘以自己的姓名创建一个文件夹,以便将实习内容保存在自己的文 件夹中,你建立的文件夹名为: 。 学习学习 VC+6.0VC+6.0 集成开发环境的使用方法,掌握建立、打开、保存、运行一个集成开发环境的使用方法,掌握建立、
20、打开、保存、运行一个 C C 源程序的操作源程序的操作 方法,注意完成以下内容方法,注意完成以下内容 图 6 运行结果界面 输输入入教材 P3【例 1-1】的源代码后,以文件名 exam1-1.c 保存。保存。 通过资源管理器查查看看你自己的文件夹,此时其中有 个文件。 编译编译源代码(快捷键为 CTRL+F7)后,通过资源管理器查看你的文件夹,发现除源程 序文件外,多了 个文件和 个文件夹,多出的文件夹名为: 。 连连接接程序(快捷键为 F7) ,结束后查看新增加的文件夹中在第(3)步的基础上又多出 了 个文件。其中最重要的是结果文件,其扩展名为 exe。 运行运行(快捷键为 Ctrl+F5
21、)后,选菜单“文件”“关闭工作区”命令结束当程序,为 新建下一个 C 源程序做准备。若不关闭工作区,可能会出现意想不到的错误。 实习中的有关约定实习中的有关约定 为便于管理,本实习中特作以下有关约定。 电子实习报告的命名电子实习报告的命名 凡提交的电子实习报告,均以姓名+实习号命名。如张三同学提交实习一的电子实习报 告,则命名为:张三 1,依此类推实习五的即为:张三 5 提交作业题的命名提交作业题的命名 例例题验证题验证 以 exam+章号+题号命名。如第一章的例 1,则写为:exam1-1.c 作作业题业题 以 zy+章号+题号命名。如对 P18 第一章的作业程序设计题 1 中的第 2 题,
22、则 写为:zy1-2.c 作作业题业题一一题题多解多解 则以 zy+章号+题号+序号命名。如第一章的 P18 的程序设计题 1 中的 第 2 题的第 2 种解法,则写为:zy1-2-2.c 附加附加题题 则以 fj+章号+题号命名。如第一章的第 1 个附加题,则写为:fj1-1.c 附加附加题题一一题题有多解有多解 则以 fj+章号+题号+序号命名。如第一章的第 1 个附加题的第 2 种 解法,则写为:fj1-1-2.c 按要求完成按要求完成 P18 程序设计题程序设计题 1 1 中的第中的第 2 2、第、第 5 5 题题 对第对第 2 2 题的提示题的提示 该题要求在屏幕上输出“Happy
23、New Year!” ,仿照教材 P3【例 1-1】即可完成。 对第对第 5 5 题的分析题的分析 该题要求从键盘输入任意两个数。由教材可知,在 C 程序中数据要存在变量中,以后才 可以多次使用。又因未限定数据类型,为扩大适用范围,此处定义两个实型变量 a 和 b 来接受从键盘输入的数据,可用语句:float a,b; 要求保存计算的和、差、积、商,可设定四个变量来存放。为扩大适用范围此处定义四 个实型变量 h、c、j 和 s 来保存计算的结果,可用语句:double h,c,j,s; 接受从键盘输入的实型数据,可用语句:scanf(%f%f, 计算可用四个赋值语句完成:h=a+b;c=a-b
24、;j=a*b;s=a/b; 最后结果的输出可用输出语句:printf(和=%f,差=%f,积=%f,商=%f n,h,c,j,s); 其实,本题可以参考 P11 代码 1-5(b)来完成。 按要求完成按要求完成 P52 程序设计题程序设计题 2 2 中的第中的第 1 1、第、第 3 3、第、第 4 4 题题 对第对第 1 1 题的分析题的分析 根据题意需要定义存放梯形上底、下底、高和面积的实型变量为:float sd,xd,h,area; 求梯形面积的公式为:面积=(上底+下底)高/2,即 area=(sd+xd)*h/2; 为使程序具有通用性,可先从键盘输入上底、下底和高的值,然后再计算面积
25、; 计算出的面积值一定要输出,才能看到计算结果。 对第对第 3 3 题的分析题的分析 输入任意一个字符,需定义一个字符变量:char c; 在 C 语言中,字符型变量的值即可用字符形式也可以整数形式输出。当以字符形式输出 时输出的是原字符,而以整数形式输出时输出的就是该字符的 ASCII 码值了。所以使用 的输出语句可为:printf(字符为:%c, ASCII 码值为:%d n, c,c); 输出字符也可用 putchar(c); 对第对第 4 4 题的分析题的分析 仔细阅读教材 P36 的 2.4.8 节的内容; 可通过逐个输出 sizeof 函数的值完成该题。如:printf(整型占 %
26、d 字节 n,sizeof(int); 五、注意事项五、注意事项 1. 上机实习前一定要认真阅读教材相关内容,结合实习步骤整理出实习涉及的内容。从本 次实习开始大家应该明白,上机实习的目的有两个,其一是加深对知识点的理解;其二 是验证自己学习过程中的一些疑问。对于教材中的内容、例题,如果已经理解的可以跳 过,对于有疑问的才需要上机调试验证。 2. 对程序的可靠性要进行多方面的测试,有时要和别的程序对比运行结果,甚至要用手算。 3. C 语言程序编写及上机调试步骤: 先根据题意决定算法,并用笔在纸上画出程序流程图; 根据流程图编写源程序代码,经人工检查无误后才能上机。对自己有疑问的地方,应事 先
27、作好标记,以便上机时给予注意。初学时切忌不编程序或抄袭别人的程序,应养成良 好的习惯和严谨的科学作风; 准备好测试数据,写出预期结果(必要时应准备多组测试数据); 将源程序代码输入计算机; 再次检查程序有无错误(包括语法错误和逻辑错误) ; 运行和调试。进行编译和连接,仔细分析编译信息,如有错误应找出原因并记录,然后 改正、再进行编译和连接,直到输出结果正确为止。对出现的问题应仔细分析,一 般应尽量独立处理,尤其是对“出错信息” ,应学会自己分析判断,不要轻易问他人, 这是学会调试程序的良方; 程序调试过程中,应记录出现的各种状况、解决的方法,为撰写实习报告作好准备。程 序运行通过后,应将结果
28、与事先的预期结果进行对比分析; 对于教材上的例题输入运行后,自己可以再修改、调试,例如:故意改成错的,然后分 析其编译和运行情况; 将每次实习的所有内容调试好后,仅保留扩展名为“.c”和“.exe”的文件,将其它文 件全部删除,经压缩后保存在自己的邮箱中或提交给老师。 实习二实习二 分支结构程序设计分支结构程序设计 一、一、实习目的实习目的 1掌握 C 语言的六种关系运算符关系运算符和三种逻辑逻辑运算符运算符的使用方法; 2了解 C 语言表示逻辑量的方法(以“0”代表“假” ,以 1 或非“0”代表“真” ) ; 3深刻理解选择结构,熟练掌握和应用 if 语句的三种基本形式和嵌套形式; 4掌握
29、 switch 语句的规则、功能与特点,能准确构造表达式; 5通过上机,理解选择结构程序中常见的语法及逻辑错误,掌握基本的程序调试技术。 二、程序调试方法介绍二、程序调试方法介绍 程序编译、连接通过,即可执行,这说明程序无语法错误,但不能确定程序执行的结果是 否正确。若程序执行结果与要求不符,则说明程序存在算法算法上的问题,这类错误称为逻辑错误逻辑错误。 逻辑错误的判断、定位、修改,往往要比通过编译检查语法错误困难得多,不仅依赖于程 序设计者对算法的理解以及编程的经验,还需借助于必要的手段,这一点对于初学者显得尤为 重要。C 语言的环境都或多或少地提供了必要的调试工具,在此简单介绍几种常用的调
30、试方法 和手段。 添加输出语句添加输出语句 输出语句的作用是输出程序的最终结果,对于中间的执行结果是不必输出的,但是在程序 的调试过程中,输出一些中间结果对于错误的判断是十分有益的。因此可以在程序执行的中间 增加一些输出语句,以检测程序执行过程中的问题,这也是调试的重要手段。下面通过例题, 说明其基本使用方法。 例例 1-11-1 求 1-5 的累加和,即 S=1+2+3+4+5。若程序代码如下: #include void main(void) int i,s; for(i=1;i=5;i+) /*循环取五个数*/ s=s+i; /*五个数累加*/ printf(1+2+3+4+5=%dn,
31、s); /*输出累加结果*/ 在VC+6.0环境下,输入源程序,编译连接无语法错误,经执行后其结果如图7所示。 图 7 例 1-1 执行结果 从图7可以看出,虽然程序没有语法错误,但执行结果明显是错误的,5个正数的累加和绝 对不可能为负数。问题出在哪里?为了定位错误,可以在循环的累加过程中加入输出语句,输出 每次累加前变量s的值,则可将代码改为: #include void main(void) int i,s; for(i=1;i=5;i+) /*循环取五个数*/ printf(s=%dn,s); /*输输出每次累加前出每次累加前变变量量s的的值值*/ s=s+i; /*五个数累加*/ pr
32、intf(1+2+3+4+5=%dn,s); /*输出累加结果*/ 执行结果如图8所示。可见,在循环中s的值按i的变化递增,即累加是正确的。但第一次没 有累加之前s的值就是-而不是0,这就意味着产生错误的原因是在循环之前,没有为s赋初值0。 因此,将s=0;语句加在for循环前,然后注释或删除掉增加的输出语句后的程序如下。再次编译、 执行程序,结果如图9所示,正确无误。 #include void main(void) int i,s; s=0; /*为为s赋赋初初值值*/ for(i=1;i=5;i+) /*循环取五个数*/ s=s+i; /*五个数累加*/ printf(1+2+3+4+5
33、=%dn,s); /*输出累加结果*/ 建议: 在程序代码的适当位置增加输出语旬,可以暴露程序存在的问题。 分支中必须设计多组测试数据,对临界值以及每一种分支的情况进行测试,以发现漏洞。 循环中必须设计多组测试数据,对循环的边界状态进行测试,以发现漏洞。 单步执行单步执行 单步执行是编程环境常备的一种调试工具,它是指每执行一条语句后即暂时停止,以方便 用户观察程序的执行情况,然后再启动执行下一条语旬,如此一步一步地执行程序。这样可以 观察程序中每条语句的执行过程和执行结果,便于在调试中发现问题。下面通过例题,说明 VC+6.0下单步执行的基本使用方法。 例例1-21-2 求级数 。若程序代码如
34、下: 图 8 改进后的运行结果 图 9 增加初始化语句后的结果 5 1 4 1 3 1 2 1 1 s #include void main(void) float s; int i; s=0; /*为s赋初值*/ for(i=1;i0 i100; for (i=100;i10;i- -) ,从表达式 2 可见条件一开始就不成立; i=101;.;while (i=100) .;原因同; 对于 do-while 循环,无论如何循环体最少也要执行一次,因为它是先执行后判断的。 如果循环控制变量在循环执行过程中永不发生变化或条件表达式恒为真,则循环就会变 成死循环。遇到这种情况,可用 Ctrl +
35、 Break 组合键终止循环的进行。以下情况可能 造成死循环: 漏掉循环控制变量值的修改语句。如: for(i=1;i=100;) ; /*缺少表达式 3*/ 如果循环体中也没有 i 的增值语句,则 i 的值永远不会超过终值 100。 循环体中对循环控制变量重新赋值。如: for(i=1;i=100;i+) ;i=4; ; 由于循环体中 i 的值被改为 4,所以其值永远不会大于终值 100,程序无法终止。 表达式 2 设置错误。如:想循环 10 次,写成了; for(i=1;i=10;i+) ; 表达式 2 是赋值表达式,每次判断时 i 的值赋为 10,条件恒为真,程序陷入死循环; 循环变量的
36、终值达到变量类型所允许的边界值,经表达式 3 运算又回到了域内。如 计算: 若将循环控制变量设为 int 型并作为分母,则可能出现这种情况,循环将不会终止。 实习四实习四 数数 组组 一、实习目的一、实习目的 熟练掌握一维、二维数组的定义、数组元素的赋值、引用和输入输出方法; 理解数组的作用及下标的表示方法,学会灵活运用数组元素下标,能用数组优化程序; 能正确使用字符数组存储字符串,掌握字符串函数的使用方法及字串的输入输出方法; 熟练掌握选择、循环结构和数组的综合应用; 熟悉与数组有关的算法,如排序、查找等。 二、实习内容二、实习内容 认真阅读教材第认真阅读教材第 4 4 章内容,并对其中理解
37、有困难的程序段上机进行调试。章内容,并对其中理解有困难的程序段上机进行调试。 完成教材完成教材 P122P122 程序设计题程序设计题 4 4 中的全部作业题。中的全部作业题。 对第对第 4 4 题的分析题的分析 定义四个变量 d1、d2、x1、x2,分别存放最大数、最小数及它们的位置; 在循环开始前,将第一个元素作为参考,将其值分别存入 d1、x1,将其下标分别存 入 d2、x2; 在循环中将其它元素逐一与 d1 比较,若比 d1 大,将其存入 d1,并将其下标存入 d2;否则将其与 x1 比较,若比 x1 小,将其存入 x1,并将其下标存入 x2; 结束循环后,将 d2 所示位置的数与第一
38、个数交换,将 x2 所示位置的数与最后一个 数交换,然后输出数组所有元素即可。 对第对第 3 3 题的提示题的提示 主对角线为从矩阵的左上角至右下角的连线,在数组中即指行列下标相同的元素,辅对 角线为从矩阵的右上角至左下角的连线,这些元素的下标之间也可用相应的表达式表达。 对第对第 8 8 题的分析题的分析 杨辉三角形的特点:第一列和对角线上的元素值均为 1,即 ai0=aii=1;其余位 置元素的值=上一行本列元素值+上一行前一列元素值,如第三行第二列 2 就是第二 行第一列+第二行第二列,计算公式为 aij=ai-1j-1+ ai-1j。 应先对第一列和对角线元素赋值,然后再为其它元素赋值
39、。 三、注意事项三、注意事项 数组是用一个统一的名字和有序下标来标识的一组类型相同的数据的集合; 数组元素下标默认从 0 开始,在内存占一片连续存储区,每个元素等价于一个变量; 运用数组可使程序精练。数组的奥妙和编程的灵活性全都体现在下标的灵活使用上。使 用时下标可以是常量、变量、表达式,也可以是数组元素,甚至是函数; 使用数组时要注意: 要先定义后引用,并且不能用变量定义数组的个数,即定义数组之前必须确定数组大小; 要注意数组元素的初值。若数组元素定义后没赋值,其值可能是任意的; 要记住数组的下标边界,下标越界后系统不会报错,虽然越界读是没有意义的,但越界 写可能引起数据、应用程序或操作系统
40、的错误,使系统出现故障,甚至瘫痪。 C 语言中没有字符串类型的变量,所以对于字符串只能用字符数组进行处理。 对于字符数组,赋值时,可以用赋值语句、键盘输入语句或初始化方式; 输出时,可用%c 格式按元素输出字符,也可用%s 格式整体输出字符串。 处理字符串最容易犯的三个错误是: 不可用赋值语句为字符数组赋值,例如 s=abcde错,要用 strcpy 函数; 不能用“= =”判断两个字符串串是否相等,要用 strcmp 函数; 不能用“+”连接两个字符串,如 s=s1+s2,要用 strcat 函数。 内存中用空字符0作为字符串结束标志,注意: 0是输出格式%s 及字符串函数操作的需要。处理字
41、符串时,第一个0前面的所有字符 被视为一个字符串,不管其后面有多少个字符; 系统在字符串常量(而不是字符数组)末尾自动加0,用户不必另加。用 strlen 函数测 字符串长度时, 0不计算在内; 对字符数组, 0有时是系统自动加的,有时必须由用户添加。 使用字符串处理函数要注意参数的选取。参数允许是字符数组,有的还允许是字符串常 量,编程时要考虑是否加入结束标志0或覆盖结束标志0。 定义字符数组时要留有余地,即留一个位置放0。否则,处理时可能会产生错误。 使用字符串函数要在程序前面用#include 命令行指定包含标准头文件。 实习五实习五 指指 针针 一、实习目的一、实习目的 深刻理解指针的
42、含义,熟练掌握指针变量的定义和使用方法; 明白指针与数组的关系,能正确使用数组的指针和指向数组的指针变量; 能正确使用字符串的指针和指向字符串的指针变量; 在函数的调用中,能正确利用数组和指针进行参数的传递; 能正确理解函数指针的概念、熟练使用函数指针代替函数名调用函数、了解指向函数的 指针变量做另一函数的参数的实际意义; 了解多级指针的概念及其使用方法。 二、实习内容二、实习内容 认真阅读教材第 5 章的内容,并对其中理解有困难的例题上机进行调试。 按要求完成 P145 程序设计题 5 中的题目。 对第对第 2 2 题的分析题的分析 定义二维字符数组和指向该数组的指针数组; 用循环使指针数组
43、的元素指向二维字符数组各行首; 用循环为指针数组元素赋字符串为值; 用 strcmp 函数比较两个指针数组元素的值、用 strcpy 函数交换两个指针数组元素的值。 对第对第 3 3 题的提示题的提示 数据倒置是指将数组前后元素的值交换后再输出。 对第对第 5 5 题的分析题的分析 定义二个字符数组 zfsour100、zfdest100,zfsour 存放原串,zfdest 存放新串; 定义二个指针变量*pzfsour、*pzfdest; zfsour 字符数组的首地址; 从键盘输入取字符的开始位置 m(即下标值)和要取的字符个数 n; 让指针变量 pzfsour 指向 zfsour+m 处
44、,让 pzfdest 指向 zfdest 字符数组的首地址; 通过 n 次循环,逐次赋值、移动指针,即将原串中的 n 个字符存到新串字符数组中。 三、注意事项三、注意事项 指针里存放的是地址,是程序运行时由系统分配的,用户程序中不应为指针变量赋常量 为值,但必须为指针变量赋地址值后才能引用,否则可能引起严重后果。 使用指针常见的错误如下: 引用没有赋值的指针变量; 未分清变量的指针和变量的指针表示。如:int a,*p= 和 *p=10; 混淆给指针变量赋值和给指针变量指向的变量赋值的区别。如:p=q; 与 *p=*q; 指针移动后未复位便使用,认为是从头开始;地址越界问题; 指针与输入输出格式不匹配; 指针运算符的结合性和优先级的理解不正确。 实习六实习六 函数函数调用调用 一、实习目的一、实习目的 掌握 C 语言库函数的调调用方法用方法、自定义函数的定定义义和使用方法和使用方法; 掌握函数实参与形参的对应关系、 “值传递值传递”和“地址地址传递传递”的意义、区别及使用方法; 掌握函数的嵌套嵌套调调用用方法,了解递归调用的思想方法; 理解变量的作用域作用域概念,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年好玩的车说课稿
- 2026年河南省新乡市事业单位人员招聘笔试备考试题及答案详解
- 2025-2026学年冬夜送人说课稿
- 平安银行昆明分行2027届秋季校园招聘考试备考试题及答案解析
- 2026年鹤岗市兴山区公务员人员招聘笔试备考试题及答案详解
- 2025-2026学年中学生禁毒教育说课稿
- 2026年淮南市大通区公务员人员招聘考试备考题库及答案详解
- 2025年朝阳市双塔区公务员人员招聘笔试试题及答案详解
- 2025-2026学年北伐战争说课稿初中
- 2026年陕西省西安市公务员人员招聘考试参考试题及答案详解
- 时空耦合分类模型构建-洞察及研究
- 2025年揭阳揭西县选调高中教师考试试题(含答案)
- 咯血患者介入治疗的护理讲课件
- GB/T 45472-2025架空和综合管廊用预制保温管道
- 急救与生命支持类设备管理
- 2025年湖北恩施州巴东县机关事业单位选调46人历年高频重点提升(共500题)附带答案详解
- 培训劳动纪律
- 如何做好临床护理带教组长
- 人教版六年级数学上册【全册教案】
- 车位租赁协议
- 做有梦想的少年 课件-2024-2025学年统编版道德与法治七年级上册
评论
0/150
提交评论