C语言程序设计A--实验指导书_第1页
C语言程序设计A--实验指导书_第2页
C语言程序设计A--实验指导书_第3页
C语言程序设计A--实验指导书_第4页
C语言程序设计A--实验指导书_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 语语 言言 程程 序序 设设 计计 指指 导导 书书 电类专业使用 电类专业使用 电气与信息工程学院 计算机系 2009 12 24 目目 录录 前言前言 3 实验一实验一 C 语言环境实验语言环境实验 4 实验二实验二 简单程序设计简单程序设计 19 实验三实验三 分支结构程序设计分支结构程序设计 24 实验四实验四 循环结构程序设计循环结构程序设计 29 实验五实验五 函数程序设计函数程序设计 34 实验六实验六 数组程序设计数组程序设计 40 实验七实验七 指针程序设计指针程序设计 47 实验八实验八 结构程序设计结构程序设计 52 实验九实验九 文件结构程序设计文件结构程序设计 57 实验十实验十 综合程序设计综合程序设计 61 实验十一实验十一 综合程序设计综合程序设计 64 附录附录 1 C 语言程序的上机步骤语言程序的上机步骤 65 附录附录 2 程序调试的方法程序调试的方法 67 前前 言言 一 本课程实验教学的地位和作用一 本课程实验教学的地位和作用 C 语言程序设计 课程是一门重要的公共基础课 其主要任务是使学生掌握 C 语言 的基本概念与结构化程序设计方法等方面的知识 实验课是本课程重要的教学环节 通过 本课程的学习使学生加深对讲授内容的理解 熟悉所用计算机系统的操作方法 学会上机 调试程序基本操作 能够运用 C 语言程序解决本专业某些实际问题 并养成严谨的科学态 度和科学的思维方法 从而提高分析和解决问题的能力 为后续课程的学习和在毕业设计 时使用计算机解决实际问题打下良好的基础 二 本课程应讲授的基本实验理论二 本课程应讲授的基本实验理论 1 掌握所用 VC 6 0 系统的基本操作方法 学会独立使用该系统 了解在该系统上如 何编辑 编译 连接和运行 C 程序 2 掌握结构化程序设计方法 三 本课程实验教学应达到的能力要求三 本课程实验教学应达到的能力要求 1 掌握赋值语句的使用方法及各种类型数据的输入输出方法 2 掌握实现选择和循环的编程方法 学习调试程序 3 掌握数组的定义 赋值和输入输出方法 掌握字符数组和字符串函数的使用等 4 掌握定义函数及调用函数的方法 5 通过实验进一步掌握指针的概念 学会定义和使用指针变量 能正确使用指向数组 的指针变量 能正确使用指向字符串的指针变量 6 掌握结构体类型变量的定义和使用 7 掌握文件以及文件指针的概念 初步学会文件的操作函数 四 本课程实验教学目的与要求四 本课程实验教学目的与要求 学生在实验过程中注意自始至终贯彻课程中所介绍的程序设计风格 养成良好的编程 习惯 应独立完成所布置的上机作业 为保证尽量在统一安排的上机时间内编译运行通过 程序 在每次实验前应事先预习 按照要求写好预习报告 编写好程序 课后撰写实验报 告 1 了解所用的计算机系统 包括 编译系统 的性能和使用方法 2 复习和掌握与本实验有关的教学内容 3 准备好上机所需的程序 在上机实验时必须完成预习要求中规定的任务 切忌不编 程或抄别人的程序去上机 4 对程序中出现的问题应事先估计 对程序中自己有疑问的地方应先作上记号 以便 上机时给予注意 5 准备好调试程序和运行程序所需的数据 6 在实验中 学生根据实验指导中的内容进行验证与总结 然后再去完成实验内容中 安排的任务 五 本课程实验教学考核办法五 本课程实验教学考核办法 实验课成绩占本课程总成绩的 20 对于没有按照预习要求预习的 视本次实验无效 对无故缺实验者 本门课程实验成绩以零分计 实验一实验一 C C 语言环境实验语言环境实验 实验目的实验目的 1 熟悉 C 语言的集成环境 了解菜单的使用方法 2 通过运行简单的 程序 了解 C 语言程序的结构 实验性质实验性质 验证性 实验要求实验要求 1 认真本实验的实验内容 熟悉 VC 环境使用过程 2 会使用 VC 编写最简单的程序 预习要求预习要求 1 仔细阅读实验内容中关于 VC 环境使用的步骤 2 有条件的话可以在电脑上按照实验内容实际操作 3 在预习报告中回答问题 实验内容实验内容 一一 VCVC 环境介绍环境介绍 Visual C 是微软公司开发的 面向Windows 编程的C 语言工具 它不仅支持C 语 言的编程 也兼容C 语言的编程 由于VC 被广泛地用于各种编程 使用面很广 本课程 采用Visual C 作为开发环境 下面介绍如何在VC 下开发 运行C 语言程序 1 1 启动 启动VC VC VC 是一个庞大的语言集成工具 经安装后将占用几百兆磁盘空间 点击 开始 程序 Microsoft Visual Studio 6 0 Microsoft Visual C 6 0 可启 动VC 环境 如下图所示 启动VC 环境 启动VC后 屏幕上将显示如下图所示的窗口 VC 启动后界面 2 2 创建工程 创建工程 在启动VC环境后 需要为C程序创建一个工程 如下图所示 点击 文件 菜单下 的 新建 菜单项 新建C工程1 选择 选择 输入工程的名字 工程所有文件的位置 新建工程2 如上图所示 在 工程 一栏中选择 Win32 Console Application 类型 在 工程 输入框中输入你为工程起的名称 点击 C位置 后面的 按钮 显示如下界面 先选择需要保存在哪个盘 再选择需要保存该盘的哪个文件夹 选择保存位置 在上图中选择需要保存的文件夹的位置 点击 确定 按钮 显示如下界面 选择工程类型 在上图中 选择 An empty project 选项 点击 完成 按钮 弹出如下界面 完成工程新建 点击 确定 按钮 新建一个空工程 如下图所示 新建工程后界面 新建完工程后 点击 文件 菜单 如下图所示 新建C源程序文件1 点击 新建 子菜单 弹出如下图的界面 新建C源程序文件 选择 选择 输入新建C程序的文件名 新建C源程序文件2 选择 文件 下的 C Source File 选项 在 文件 输入框中输入C源程序的文件 名 注意需要加 C表示是C源程序文件 假如不指定扩展名 C VC 会把扩展名定义为 CPP 即C 程序 如果程序没有错误 点击 确定 按钮 进入编辑C程序界面 3 3 编写代码 编写代码 如下图所示 代码区 编写程序 工程区 查看工程 菜单栏 提供功能操作 工具栏 提供快捷操作 信息区 提供编译信息 如果编译错误 需要在此查看 VC版面介绍 在上图所示的代码区中输入需要编写的C程序代码 如果需要查看已经编写的C程序文件 点击工程区中的 File View 展开 Source Files 下面包含的文件即为所创建的C源程序文件 点击可以打开 选择 展开 C1 1 C即为所创建的C程序 双 击可以打开 查看C程序文件 输入程序的代码 如下图 注释 编写程序时 请养成 给代码注释的好习惯 一行一条语句 代码采用锯齿形式 有利于代码的阅读 定义变量时不要偷懒 需要将变量名做到见名知义 编写C程序文件 在编写代码时请注意养成一些好习惯 1 行编写一条语句 代码采用锯齿形式 有利于代码的阅读 2 定义名需要做到见名知义 3 编写程序时 请养成给代码注释的好习惯 方便代码阅读 4 4 编译运行 编译运行 在代码编写完成后 点击 编译 菜单下的 编译 子菜单 将C程序编译成 Obj文件 如下图所示 编译C程序 如果编译成功 在信息区中 会出现 0 error s 的提示信息 如果编译不成功 则会在在信息区中提示出错信息 如下图所示 请注意 该程序中 出现了以下错误 第五行 prinf 语句后少了一个分号 第六行scanf 函数中 没有 符号和 配对 第七行value2写成了value 由于源程序错误 在编译代码时 提示出错信息 共有三个错误 注意由于编译器不能完全智能化 提示的信息可能和实际错误有些出入 出错位置信息 错误详细信息 编译 C 程序的错误信息 在编译出错后 请仔细根据错误信息 双击某行出错信息 程序窗口中会指示对应出 错位置 根据信息窗口的提示分别予以纠正 在编译程序时 请注意 工具栏 上的 保存 按钮 将程序保存 以免造成不必要 的损失 如果出现VC环境 死了 的情况 程序点击不动 关闭VC环境出现如下图 这时 请按 Ctrl ALT Del 键 选择 VC 点击 结束任务 将VC强制关闭 重新启动即可 如下图所示 任务管理器 点击 编译 菜单下的 构建 子菜单 将 Obj 文件连接成 EXE 文件 如下图所示 构建 C 程序 构建成功后 点击 编译 菜单下的 执行 子菜单 可以运行程序 如下图 执行 C 程序 当运行C 程序后 VC 将自动弹出数据输入输出窗口 在其中输入数据 完成程序 执行 显示结果 如下图所示 按任意键将关闭该窗口 C 程序运行界面 对于编译连接执行操作 VC 还提供了一组工具按钮 如图下图所示 工具栏上的编译 执行按钮 5 5 关闭程序工作区 关闭程序工作区 当一个程序编译连接后 VC 系统自动产生相应的工作区 以完成程序的运行和调 试 若想执行第二个程序时 必须关闭前一个程序的工作区 然后通过新的编译连接 产 生第二个程序的工作区 否则的话运行的将一直是前一个程序 文件 菜单提供关闭程序工作区功能 如下图右 执行 关闭工作区 菜单功能 会弹 出询问是否保存的对话框 如下图左 如果选择 是 将同时关闭源程序窗口 关闭工作区 6 6 程序调试 程序调试 调试程序是编写代码的一个非常重要的步骤 当程序编译成功 需要查看程序执行过 程以及其变量值的情况 需要启动调试 VC 是一个完全基于Windows 的系统 它的调 试过程通过鼠标比较容易进行 1 程序执行到中途暂停以便观察阶段性结果 方法一 使程序执行到光标所在的那一行暂停 在需暂停的行上单击鼠标 定位光标 如图A 17 所示 分别点击菜单 编译 开始调试 Run to Cursor 或按 Ctrl F10 程序将执行到光标所在行会暂停 如果把光标移动到后面的某个 位置 再按 Ctrl F10 程序将从当前的暂停点继续执行到新的光标位置 第二次 暂停 程序执行到光标所在行暂停 方法二 在需暂停的行上设置断点 在需设置断点的行上单击鼠标 定位光标 按 编译微型条 中最右面的按钮 如图A 18 所示 或按 F9 调试 被设置了断点的行前面会有一个红色圆点标志 与TC 一样 不管是通过光标位置还 是断点设置 其所在的程序行必须是程序执行的必经之路 亦即不应该是分支结构中的语 句 因为该语句在程序执行中受到条件判断的限制 有可能因条件的不满足而不被执行 这时程序将一直执行到结束或下一个断点为止 2 设置需观察的结果变量 按照上面的操作 使程序执行到指定位置时暂停 目的是为了查看有关的中间结果 在如图A 19 中 左下角窗口中系统自动显示了有关变量的值 其中value1 和value2 的值 分别是3 4 而变量i sum 的值是不正确的 因为他们还未被赋值 图中左侧的箭头表 示当前程序暂停的位置 如果还想增加观察变量 可在图中右下角的 Name 框中填入相 应变量名 观察结果变量 3 单步执行 当程序执行到某个位置时发现结果已经不正确了 说明在此之前肯定有错误存在 如 果能确定一小段程序可能有错 先按上面步骤暂停在该小段程序的头一行 再输入若干个 查看变量 然后单步执行 即一次执行一行语句 逐行检查下来 看看到底是哪一行造成 结果出现错误 从而能确定错误的语句并予以纠正 单步执行按 调试条 中 Step Over 按钮或 F8 如图A 20 所示 如果遇到 自定义函数调用 想进入函数进行单步执行 可按 Step Into 按钮 或 F11 当想 结束函数的单步执行 可按 Step Out 按钮或 Shift F11 对不是函数调用的 语句来说 F11 与 F8 作用相同 但一般对系统函数不要使用 F11 单步调试 4 断点的使用 使用断点也可以使程序暂停 但一旦设置了断点 不管你是否还需要调试程序 每次 执行程序都会在断点上暂停 因此调试结束后应取消所定义的断点 方法是先把光标定位 在断点所在行 再按 编译微型条 中最右面的按钮或 F9 该操作是一个开关 按 一次是设置 按二次是取消设置 如果有多个断点想全部取消 可执行 编辑 菜单中的 断点 菜单项 屏幕上会显示 Breakpoints 窗口 如图A 21 所示 窗口下方列出了所 有断点 按 Remove All 按钮 将取消所有断点 断点通常用于调试较长的程序 可以 避免使用 Run to Cursor 运行程序到光标处暂停 或 Ctrl F10 功能时 经常 要把光标定位到不同的地方 而对于长度为上百行的程序 要寻找某位置并不太方便 如 果一个程序设置了多个断点 按一次执行键 Ctrl F5 会暂停在第一个断点 再按一 次 Ctrl F5 会继续执行到第二个断点暂停 依次执行下去 取消所有断点 5 停止调试 使用 Debug 菜单的 Stop Debugging 菜单项 或 Shift F5 键可以结束调 试 从而回到正常的运行状态 上面只介绍了VC 中主要的功能 对于其他的操作可以自己试验或参考有关VC 手册 二二 程序练习 程序练习 1 1 请将下面程序在 请将下面程序在VCVC环境中输入 并运行观察结果环境中输入 并运行观察结果 1 include void main printf 我爱学C语言 n printf 告诉你学好C语言的秘笈 n printf 编程 编程 再编程 n 2 include void main int price weight value price 10 weight 20 value price weight printf 价格为 d 重量为 d货物 价值为 d n price weight value price 5 weight 8 printf 价格为 d 重量为 d货物 价值为 d n price weight value value price weight printf 价格为 d 重量为 d货物 价值为 d n price weight value 3 include void main float r s FILE fp r 12 4 s r r 3 14 fp fopen c data txt w fprintf fp 半径为 f的圆 其面积为 f r s printf 计算成功 具体请看C盘下的data txt文件 fclose fp 2 2 依照 依照1 31 3中函数的写法 编写一程序 求高为中函数的写法 编写一程序 求高为5 45 4 半径为 半径为2 32 3的圆柱体的体积的圆柱体的体积 实验报告实验报告 思考题思考题 1 使用 VC 编程时 应先创建的工程是什么类型 2 如何运行一个 C 程序 实验二实验二 简单程序设计简单程序设计 实验目的实验目的 1 掌握 scanf printf 函数语句的使用 2 掌握算术表达式和赋值表达式的使用 3 能够编程实现简单的数据处理 实验性质实验性质 验证性 实验要求实验要求 1 认真阅读本次实验的目的 了解本次实验要求掌握的内容 2 在上机前 需要预习 在程序改错题旁将程序中存在的错误修改过来 将编程题的 代码和流程图写在预习报告中 3 在实验时 将实验要求的基本题 程序改错和编程题 根据预习报告中编写的代码 在 VC 环境中编写出来 4 在 VC 中将编写的程序编译 调试 能正确运行结果 各题目的具体要求请看题目 下的要求 5 将正确程序上传 FTP 服务器 6 争取完成选作题 实验内容实验内容 1 程序改错 1 下面程序需要从键盘输入三个数 计算其平均值在屏幕上显示输出 要求平均值 需要保留两位小数 源代码如下 程序中存在错误 请将其改正写在旁边 并注明为 什么错误 include stdio h Main int x y z float ave 定义变量 printf 请输入三个数 n 输入提示 scanf d d d x y z 从键盘输入 ave x y z 3 计算 printf 平均值是 ave f AVE 2 编程题 1 编写程序 在计算机屏幕上显示如下信息 要求 1 使用 printf 函数输出字符 2 设一个正圆台的上底半径 r1 下底半径 r2 高 h 请设计一程序 从键盘输入 r1 r2 r3 计算并在显示器上输出该圆台的上底面积 s 1 下底面积 s 2 圆台的体积 V 要求 1 r1 r2 h 用 scanf 函数输入 且在输入前要有提示 2 在输出结果时要有文字说明 每个输出值占一行 且小数点后取 2 位数字 思路点拔 1 圆面积计算公式为 s r2 其中 r 为圆半径 2 圆台体积计算公式为 V 3 r1r2r2r1 h 22 3 鸡兔同笼 已知鸡兔总头数为 h 总脚数为 f 求鸡兔各有多少只 要求 1 用 scanf 函数输入 h 和 f 且在输入前要有提示 2 在输出结果时要有文字说明 思路点拔 设有 x 只鸡 有 y 只兔 则有 求出 x 和 y 的公式 从而可以计算出 x 和 y 3 选作题 1 编程求 ax2 bx c 0 的解 思路点拔 用求根公式 x1 2 b b2 4ac 2a 2 编程求 y sin ln a x 要求 a 和 x 从键盘输入ax 思路点拔 使用数学函数计算 预习报告预习报告 1 流程图代码 2 流程图代码 3 流程图代码 实验报告实验报告 思考题思考题 1 变量在程序中有什么作用 如何从键盘中输入多个变量的值 2 用 define 定义的常量与变量有什么区别 什么时候应该使用 define 定义符 号常量 3 程序中有哪几种流程结构 具体在程序中用什么体现 实验三实验三 分支结构程序设计分支结构程序设计 实验目的实验目的 1 掌握关系表达式和逻辑表达式的使用 2 掌握使用 if 语句实现分支结构程序设计 3 了解 switch 语句 实验性质实验性质 验证性 实验要求实验要求 1 认真阅读本次实验的目的 了解本次实验要求掌握的内容 2 在上机前 需要预习 在程序改错题旁将程序中存在的错误修改过来 将编程题的 代码和流程图写在预习报告中 3 在实验时 将实验要求的基本题 程序改错和编程题 根据预习报告中编写的代码 在 VC 环境中编写出来 4 在 VC 中将编写的程序编译 调试 能正确运行结果 各题目的具体要求请看题目 下的要求 5 将正确程序上传 FTP 服务器 6 争取完成选作题 实验内容实验内容 1 程序改错 1 下面程序需要从键盘输入一个数 判断其是奇数还是偶数 源代码如下 程序中 存在错误 请将其改正写在旁边 并注明为什么错误 include stdio h main int x printf 请输入一个数 n 提示输入 scanf d if x 2 n 判断 printf x 是偶数 printf x 是奇数 2 编程题 1 编写一程序 从键盘输入三角形的三条边 如果能构成一个三角形判断其是否 是等腰三角形 等边三角形是等腰三角形的特例 要求 1 用 scanf 函数输入三角形的三条边 a b c 且在输入前要有提示 2 使用 if 语句判断 对每种情况都需要有提示 2 在商场购物时 若所购物品的总价值 x 由键盘输入 在某一范围时 付款 y 按 对应折扣支付 即 x x 1000 y 0 9x 1000 x 2000 0 8x 2000 x 3000 0 7x x3000 编写一程序 根据 x 的值计算 y 要求 1 用 scanf 函数输入 x x 为小数 且在输入前要有提示 2 使用 if else if else 语句判断 计算 y 的值 2 使用 printf 输出 y 的值 小数点保留 2 位 3 从键盘输入 3 个数 输出最大值和最小值 要求 1 用 scanf 函数输入三个数 且在输入前要有提示 2 使用嵌套结构出最大值 然后求出最小值 并使用 printf 输出 3 选作题 1 编写一程序 从键盘输入一个不多于 4 位的正整数 能显示出它是几位数 并按正反 两种顺序显示出各位数字 例如 若输入 1234 输出为 位数 n 4 正序 1234 反序 4321 编程点拨 1 先判断 x 是否为满足要求 n 大于 9999 小于 0 时 则不满足要求 2 通过 和 运算分离出各个位上的值 先判断千位是否为零 如果为零 则不可能为四 位数 再判断百位上的数是否为零 3 反序输出时 先输出个位 再十位 百位 千位 2 从终端输入两个实数和一个四则运算符 执行相应的运算并输出运 算结果 如输入 12 4 结果为 48 编程点拨 1 先用 scanf 函数 输入四则运算的两个操作数和运算符 分别保存在不同的变量 注意保存运算符的变量只能是字符型 2 对运算符变量进行判断 根据运算规则 编写相应的表达式求运算结果 预习报告预习报告 1 流程图代码 2 流程图代码 3 流程图代码 实验报告实验报告 思考题思考题 1 对于编程题 2 如何使用 if 语句嵌套的方式和 switch 语句的方式实现 2 对于多分支结构 使用 if else if 还是使用嵌套结构 需要注意什么 3 编写分支结构时 条件的编写需要注意什么 实验四实验四 循环结构程序设计循环结构程序设计 实验目的实验目的 1 掌握使用 for while 和 do while 语句实现循环程序设计 2 理解循环条件 循环体 3 掌握 break continue 语句的使用 实验性质实验性质 验证性 实验要求实验要求 1 认真阅读本次实验的目的 了解本次实验要求掌握的内容 2 在程序改错题旁 将程序中存在的错误修改过来 3 将编程题的代码在预习报告中写出来 4 在实验时 将实验要求的基本题 程序改错和编程题 根据预习报告中编写的代码 在 VC 环境中编写出来 5 在 VC 中将编写的程序编译 调试 能正确运行结果 6 将正确程序上传 FTP 服务器 7 争取完成选作题 实验内容实验内容 1 程序改错 1 编写程序 求 1 2 3 10 的和 源代码如下 程序中存在错误 请将其 改正写在旁边 include stdio h main int i long sum temp 定义变量 for i 1 iy 如果 x y 两个值互换 保证第一个参数为小值 x y y x acd acd int m1 int m2 调用函数求最大公约数 amd x y acd 求最小公倍数 printf 最大公约数 d 最小公倍数 d acd amc 函数功能 使用辗转相除法求两个数的最大公约数 参数 m1 两个数中较小者 参数 m2 两个数中较大者 返回值 m1 和 m2 的最大公约数 int acd int m1 int m2 int r while m1 0 使用辗转相除法求最大公约数 r m2 m1 m1 r m2 m1 return r 返回最大公约数 2 编程题 1 若正整数 A 的所有因子 包括 1 但不包括自身 下同 之和为 B 而 B 的因子之和为 A 则称 A 和 B 为一对亲密数 例如 6 的因子之和为 1 2 3 6 因此 6 与 6 为一对亲密数 即 6 自身构成一对亲密数 又如 220 的因子之和为 l 2 4 5 10 11 20 22 44 55 110 284 而 284 的因子之和为 1 2 4 71 142 220 因此 220 与 284 为一对亲密数 编写程序 求 500 以内的所有亲密数对 要求 1 编制 facsum n 函数 返回 n 的所有因子 包括 1 但不包括自身 之和 2 在 main 函数中调用 facsum 寻找并输出 500 以内的所有亲密数对 3 输出要有文字说明 并且小数在前 大数在后 去掉重复的数对 4 采用程序改错题的的编码风格对源代码做注释 2 计算并输出 n nm m 要求 1 编制一个函数 pq n 返回 n 值 2 在 main 函数中 从键盘输入 m 与 n 调用函数 pq 计算 3 在 main 函数中 输入 m 与 n 之前要有提示 并检查输入数据的合理性 m n O 对 于不合理的输入 应输出出错信息 不再进行计算 4 采用程序改错题的的编码风格对源代码做注释 3 使用函数的方法求 1000 之内的自守数 自守数是指一个数的平方的尾数等于该数自身 的自然数 例如 252 625 762 5776 93762 1 编制一个函数 isAutomorphic n 判断 n 是否为自守数数 如果是返回 1 如果不 是返回 0 2 在 main 函数中 使用 for 循环 调用函数 isAutomorphic 判断 n 是否为自守数 3 打印的数字占 8 个字符宽 每行显示 5 个自守数 4 采用程序改错题的的编码风格对源代码做注释 3 选作题 1 已知 编写一程序 从键盘输入 x 求 s x 的 37 25 13 753 xxx xxs 值 计算后面的 20 项的和 2 用递归方法 计算13 23 33 43 n3的值 n的值由键盘输入 编程点拨 假设用f n 表示13 23 33 43 n3 则可用以下公式表示 1 当n 1时 f n n3 f n 1 当n 1时 根据上述的递归关系式 编写函数 f 预习报告预习报告 1 流程图代码 2 流程图代码 3 流程图代码 实验报告实验报告 思考题思考题 1 函数调用时 参数是如何传递的 2 如果在函数中有多条 return 语句 程序执行会如何处理 如果想返回多个值 应该 怎么办 3 如果函数在执行时 需要得到上一次该函数调用时变量的值该怎么办 如果函数想使 用别的函数中的变量的值该怎么办 实验六实验六 数组程序设计数组程序设计 实验目的实验目的 1 掌握使用一维数组编程方法 2 掌握使用字符数组处理字符串的方法 2 了解二维数组 实验性质实验性质 验证性 实验要求实验要求 1 认真阅读本次实验的目的 了解本次实验要求掌握的内容 2 在程序改错题旁 将程序中存在的错误修改过来 3 将编程题的代码在预习报告中写出来 4 在实验时 将实验要求的基本题 程序改错和编程题 根据预习报告中编写的代码 在 VC 环境中编写出来 5 在 VC 中将编写的程序编译 调试 能正确运行结果 6 将正确程序上传 FTP 服务器 7 争取完成选作题 实验内容实验内容 1 程序改错 1 下面程序的功能 是从键盘输入一个数组 数组长度为 10 查找数组中正数的 个数 源代码如下 程序中存在错误 请将其改正写在旁边 include stdio h main int a 10 定义数组 int count i i 循环变量 count 正数个数 for i 0 i 10 i 循环输入 scanf d a i count 1 for i 0 i0 count printf 数组中正数有 d 个 count 2 编程题 1 从键盘输入一个字符串 将其中的大写字母变小写字母 小写字母变大写字母 并输出 要求 1 用字符数组表示存储字符串 字符串最大为 100 2 使用 scanf 函数逐个输入字符保存在字符数组中 3 使用 printf 函数逐个输出字符数组中的字符 2 输入数组 最大的与第一个元素交换 最小的与最后一个元素交换 输出数组 要求 1 数组长度定义为 10 2 输出数组时每个元素占 8 个宽度 每行 5 个 3 编程序按下列公式计算 s 的值 其中 x1 x2 xn由键盘输入 其中 x0是 x1 x2 xn的平均值 2 0 1 xxs n i i 要求 1 用数组保存 x1 x2 xn的值 2 n 的值从键盘输入 3 选作题 1 求从一个字符串中删除所有指定字符的其余字符串 如字符串为 abcaca 删 除字符 a 后 为 bcc 编程点拨 1 使用字符数组保存字符串 从字符串数组的第一个元素开始遍历 2 如果当前的元素与需要删除的元素相等 则删除 3 删除是指将该元素前移到需要拷贝的位置 2 使用二维数组打印如下图形 编程点拨 1 注意数组中元素和下标的关系 根据其规律给数组的元素赋值 2 然收再输出二维数组即可 预习报告预习报告 1 流程图代码 2 流程图代码 0 0 0 10 0 0 9 8 0 7 6 5 4 3 2 1 3 流程图代码 实验报告实验报告 思考题思考题 1 数组在程序设计时有什么作用 如果程序在设计时 不知道数组中保存数据的个数 应该怎么办 2 二维数组在内存中是如何存储的 二维数组中元素的下标与其在内存中排列的位置有 什么关系 3 如何将一个元素插入数组中 如何将一个元素从数组中删除 实验七实验七 指针程序设计指针程序设计 实验目的实验目的 1 理解指针 地址和变量的关系 2 掌握通过指针操作数组元素的方法 3 掌握数组名 指针作为函数参数的编程方式 4 掌握通过指针操作字符串的方法 实验性质实验性质 验证性 实验要求实验要求 1 认真阅读本次实验的目的 了解本次实验要求掌握的内容 2 在程序改错题旁 将程序中存在的错误修改过来 3 将编程题的代码在预习报告中写出来 4 在实验时 将实验要求的基本题 程序改错和编程题 根据预习报告中编写的代码 在 VC 环境中编写出来 5 在 VC 中将编写的程序编译 调试 能正确运行结果 6 将正确程序上传 FTP 服务器 7 争取完成选作题 实验内容实验内容 1 程序改错 1 下面程序想使指针变量 pt1 指向 a 和 b 中的大者 pt2 指向小者 源代码如下 程序 中存在错误 请将其改正写在旁边 include stdio h swap int p1 int p2 int p p p1 p1 p2 p2 p main int a b scanf d d pt1 pt2 if printf d d n pt1 pt2 2 编程题 1 使用指针的方法求 100 的素数 要求 1 先在数组中保存 1 100 的所有整数 2 使用指针的方式对数组中非素数剔除 2 判断一个数是否为回文数 要求 1 定义一个函数 separate int data int n 该函数将 n 的各个位上的数分离 保存在 data 所指向的数组中 2 定义一个函数 judge int data int len 判断 data 所指向的数组是否为回 文 3 main 函数中调用上述的函数 完成程序的功能 3 从键盘输入两个字符串 输出第一个字符串在第二个字符串中的位置 第一个字 符串的首字母在第二个字符串中的位置 如 abc 在 bbbacccabcddaw3 的位置为 7 要求 1 使用指针的方法遍历数组 3 选作题 1 使用指针的方式 从一个字符串中删除所有指定字符的其余字符串 如字符串为 abcaca 删除字符 a 后 为 bcc 编程点拨 1 注意指针的使用 参考实验六的编程方法 2 有 20 个数 编写一程序 使其右循环移 m 个位置 m 的值可以从键盘输入 并 输出移到后的 20 个数 编程点拨 1 20 个数使用数组保存 2 使用指针的方法遍历数组 预习报告预习报告 1 流程图代码 2 流程图代码 3 流程图代码 实验报告实验报告 思考题思考题 1 指针在程序设计中有什么作用 2 一维数组名 二维数组名有什么区别 实验八实验八 结构程序设计结构程序设计 实验目的实验目的 1 掌握结构变量的基本使用方法 2 掌握结构数组的基本使用方法 3 掌握结构指针的概念 4 掌握链表的概念和基本操作 实验性质实验性质 验证性 实验要求实验要求 1 认真阅读本次实验的目的 了解本次实验要求掌握的内容 2 在程序改错题旁 将程序中存在的错误修改过来 3 将编程题的代码在预习报告中写出来 4 在实验时 将实验要求的基本题 程序改错和编程题 根据预习报告中编写的代码 在 VC 环境中编写出来 5 在 VC 中将编写的程序编译 调试 能正确运行结果 6 将正确程序上传 FTP 服务器 7 争取完成选作题 实验内容实验内容 1 程序改错 1 下面程序使用结构体的方法实现两个复数的相加 源代码如下 程序中存在错误 请将其改正写在旁边 include stdio h 定义结构体 struct plural int a 实部 int b 虚部 main plural p1 p2 p3 定义结构体变量 printf 请输入复数 1 的实部和虚部 中间用逗号隔开 n scanf d d p1 输入 printf 请输入复数 2 的实部和虚部 中间用逗号隔开 n scanf d d p2 p3 p2 p1 两复数相加 printf 复数 1 和复数 2 的和为 d di n p3 2 编程题 1 要求编写程序 有 4 名学生 每个学生的数据包括学号 姓名 成绩 要求找出 成绩最高者的姓名和成绩 要求 1 定义结构体类型 2 使用结构体数组 保存学生的信息 2 已知一个职工的信息为 职工号 工资 从键盘输入 n 个职工的信息 并将其显 示出来 要求 1 使用链表实现 2 n 可以从键盘输入 3 定义 create 函数实现链表的创建 4 定义 list 函数实现链表的显示 3 选作题 1 在上题基础上 写一函数 insert 来插入新的职工信息 插入位置可由参数指定 2 在上面的基础上 写一函数 delete 根据职工号来删除一个结点 预习报告预习报告 1 流程图代码 2 流程图代码 3 流程图代码 实验报告实验报告 思考题思考题 1 结构体在什么情况下需要用到 2 使用结构体的一般步骤是什么 3 结构数组和链表在保存数据时各有什么优点和缺点 实验九实验九 文件结构程序设计文件结构程序设计 实验目的实验目的 1 掌握文件的基本概念 2 掌握文本文件的打开和关闭操作 3 掌握文本文件的顺序读 写方法 实验性质实验性质 验证性 实验要求实验要求 1 认真阅读本次实验的目的 了解本次实验要求掌握的内容 2 在程序改错题旁 将程序中存在的错误修改过来 3 将编程题的代码在预习报告中写出来 4 在实验时 将实验要求的基本题 程序改错和编程题 根据预习报告中编写的代码 在 VC 环境中编写出来 5 在 VC 中将编写的程序编译 调试 能正确运行结果 6 将正确程序上传 FTP 服务器 7 争取完成选作题 实验内容实验内容 1 程序改错 1 下面程序产生所有的水仙花内数 并将其保存在 C data txt 文件中 源代码 如下 程序中存在错误 请将其改正写在旁边 include void main file fp 定义文件指针 int i a b c fp open C data txt w 打开文件 for i 100 i 1000 i 查找水仙花 a i 100 b i 100 10 c i 10 if a a a b b b c c c i fprintf 8d i printf 运行完毕 数据全部保存 2 编程题 1 编写一程序产生 1000 内的所有素数 并将其保存在 d data txt 文件中 要求 1 定义一函数判断一个数是否是素数 2 在 main 函数中调用 1 中定义的函数 将素数保存在文件中 2 已知一个职工的信息为 职工号 工资 姓名 从键盘输入 n 个职工的信息 并 将其保存在 D info 文件中 要求 1 使用链表实现 2 n 可以从键盘输入 3 定义 create 函数实现链表的创建 4 定义 writeInfo 函数实现链表的保存 3 选作题 1 建立一个程序 用于产生 200 组算式 每组算式包括一个两位数的加法 减法 要求被减数要大于减数 乘法和两位数除以一位数的除法算式 每一组为一行 将 所有的算式保存到文本文件 d a txt 中 2 已有两个文本文件 今要求编程序从这两个文件中读出各行字符 逐个比较这两 个文件中相应的行和列上的字符 如果遇到互不相同的字符 输出它是第几行第几列 的字符 预习报告预习报告 1 流程图代码 2 流程图代码 实验报告实验报告 思考题思考题 1 文本文件和二进制文件在读取时要注意什么问题 2 如何在文件中指定位置的数据 实验十实验十 综合程序设计综合程序设计 实验目的实验目的 1 能综合使用本课程所学习的 C 语言知识进行较复杂程序的设计 2 掌握 C 语言程序的调试方法 实验性质实验性质 综合性 实验要求实验要求 1 认真阅读本次实验的目的 了解本次实验要求掌握的内容 2 将编程题的代码在预习报告中写出来 3 在实验时 将实验要求的基本题 程序改错和编程题 根据预习报告中编写的代码 在 VC 环境中编写出来 4 在 VC 中将编写的程序编译 调试 能正确运行结果 5 将正确程序上传 FTP 服务器 6 争取完成选作题 实验内容实验内容 1 编程题 1 有 10 个歌手和 5 个裁判 设计一程序 可以输入 10 个歌手的姓名 5 个裁判可 以对 10 个歌手进行打分 计算各个歌手的最终得分 算法为去掉最低分和最高分再求 平均值 并按得分的高低排序显示 要求 1 采用结构体实现 2 采用结构化程序设计思想编程 2 选作题 1 编写一程序 从键盘输入学生的姓名 学号以及三门功课的成绩 计算每个学生 的平均成绩 以及每门功课的平均成绩 在屏幕上显示平均成绩最高的学生的姓名 并将学生的所有信息保存在 D info txt 文件中 预习报告预习报告 1 流程图代码 实验报告实验报告 实验十一实验十一 综合程序设计综合程序设计 实验目的实验目的 1 熟悉考试环境 2 综合练习编程 实验性质实验性质 综合性 实验内容实验内容 从考试系统中抽取 附录附录 1 1 C C 语言程序的上机步骤语言程序的上机步骤 按照 C 语言语法规则而编写的 C 程序称为源程序 源程序由字母 数字及其它符号等 构成 在计算机内部用相应的 ASCII 码表示 并保存在扩展名为 C 的文件中 源程 序是无法直接被计算机运行的 因为计算机的 CPU 只能执行二进制的机器指令 这就需要 把 ASCII 码的源程序先翻译成机器指令 然后计算机的 CPU 才能运行翻译好的程序 源程 序翻译过程由两个步骤实现 编译与连接 首先对源程序进行编译处理 即把每一条语句 用若干条机器指令来实现 以生成由机器指令组成的目标程序 但目标程序还不能马上交 计算机直接运行 因为在源程序中 输入 输出以及常用函数运算并不是用户自己编写的 而直接调用系统函数库中的库函数 因此 必须把 库函数 的处理过程连接到经编译生 成的目标程序中 生成可执行程序 并经机器指令的地址重定位 便可由计算机运行 最 终得到结果 C 语言程序的调试 运行步骤可以用图 A 1 表示 图 A 1 C 语言程序的调试 运行步骤 图 A 1 中 虚线表示当某一步骤出现错误时的修改路线 运行时 无论是出现编译错 误 连接错误 还是运行结果不对 源程序中有语法错误或逻辑错误 都需要修改源程 序 并对它重新编译 连接和运行 直至将程序调试正确为止 除了较简单的情况 一般 的程序很难一次就能做到完全正确 在上机过程中 根据出错现象找出错误并改正称为程 序调试 我们要在学习程序设计过程中 逐步培养调试程序的能力 它不可能靠几句话讲 清楚 要靠自己在上机中不断摸索总结 它可以说是一种经验积累 程序中的错误大致可分为三类 程序编译时检查出来的语法错误 连接时出现的错误 程序执行过程中的错误 编译错误通常是编程者违反了 C 语言的语法规则 如保留字输入错误 大括号不匹配 语句少分号等等 连接错误一般由未定义或未指明要连接的函数 或者函数调用不匹配等 因素引起 对系统函数的调用必须要通过 include 说明 对于编译连接错误 C 语言系统会提供出错信息 包括出错位置 行号 出错提示 信息 编程者可以根据这些信息 找出相应错误所在 有时系统提示的一大串错误信息 并不表示真的有这么多错误 往往是因为前面的一两个错误带来的 所以当你纠正了几个 错误后 不妨再编译连接一次 然后根据最新的出错信息继续纠正 有些程序通过了编译连接 并能够在计算机上运行 但得到的结果不正确 这类在程 序执行过程中的错误往往最难改正 错误的原因一部分是程序书写错误带来的 例如应该 使用变量 x 的地方写成了变量 y 虽然没有语法错误 但意思完全错了 另一部分可能是 程序的算法不正确 解题思路不对 还有一些程序有时计算结果正确 有时不正确 这往 往是编程时 对各种情况考虑不周所致 解决运行错误的首要步骤就是错误定位 即找到 出错的位置 才能予以纠正 通常我们先设法确定错误的大致位置 然后通过 C 语言提供 的调试工具找出真正的错误 为了确定错误的大致位置 可以先把程序分成几大块 并在每一块的结束位置 手工 计算一个或几个阶段性结果 然后用调试方式运行程序 到每一块结束时 检查程序运行 的实结果与手工计算是否一致 通过这些阶段性结果来确定各块是否正确 对于出错的程 序块 可逐条仔细检查各语句 找出错误所在 如果出错块程序较长 难以一下子找出错 误 可以进一步把该块细分层更小的块 按照上述步骤进一步检查 在确定了大致出错位 置后 如果无法直接看出错误 可以通过单步运行相关位置的几条语句 逐条检查 一定 能找出错误的语句 当程序出现计算结果有时正确有时不正确的情况时 其原因一般是算法对各种数据处 理情况考虑不全面 解决办法最好多选几组典型的输入数据进行测试 除了普通的数据外 还应包含一些边界数据和不正确的数据 比如确定正常的输入数据范围后 分别以最小值 最大值 比最小值小的值和比最大值大的值 多方面运行检查自己的程序 附录附录 2 2 程序调试的方法程序调试的方法 对程序设计者来说 不仅要会编写程序 还要上机调试通过 初学者的程序往往不是 一次就能顺利通过 即使一个有经验的程序员也常会出现某些疏忽 上机的目的不仅是验 证程序的正确性 还要掌握程序调试的技术 提高动手能力 程序的调试具有很强的技术 性和经验性 其效率高低在很大的程度上依赖于程序设计者的经验 有经验的人很快就能 发现错误 而有的人在计算机显示出错误信息并告诉他哪一行有错之后还找不出错误所在 所以初学者调通一个程序往往比编写程序花的时间还多 调试程序的经验固然可以借鉴他 人的 但更重要的是靠实践来积累 调试程序是程序设计课程的一个重要环节 上机之前 要做好程序调试的准备工作 程序调试的准备工作包括熟悉程序的运行环境和各个程序设 计阶段为程序调试所做的准备 上机前要先熟悉程序运行的环境上机前要先熟悉程序运行的环境 一个 C 语言源程序总是在一定的硬件和软件环境支持下进行编辑 编译 连接和运行 的 而这其中的每一步都直接影响程序调试的效率 所以初学者必须了解所使用的计算机 系统的基本操作方法 学会使用该系统 了解在该系统上如何编辑 编译 连接和运行一 个 C 语言程序 上机时需要输入和修改程序 不同的操作系统提供的编辑程序是不同的 如果对编辑程序的基本功能和操作不熟悉 就很难使用好这个工具 那么在输入和修改程 序中就会遇到很多困难 往往越该越乱 甚至因为不存盘的误操作而使修改 调试的工作 前功尽弃 更有甚者 由于初学者对操作系统或编辑程序的操作命令不熟悉而误删了一个 正在调试或已经调试好的程序 就不得不重新输入 调试 浪费了许多时间 所以在上机 调试之前 必须认真了解程序运行的环境 了解常用的一些操作命令 这样上机调试程序 时效率就会大大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论