C语言实习实例经典版.pdf

上传人:zh****71 文档编号:126719009 上传时间:2020-03-27 格式:PDF 页数:18 大小:221.14KB
返回 下载 相关 举报
C语言实习实例经典版.pdf_第1页
第1页 / 共18页
C语言实习实例经典版.pdf_第2页
第2页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言实习实例经典版.pdf》由会员分享,可在线阅读,更多相关《C语言实习实例经典版.pdf(18页珍藏版)》请在金锄头文库上搜索。

1、目 录 实习步骤 2 实习报告规范 4 实习报告样例1 最大公因数 5 实习报告样例2 进制转换 11 DEV C 调试方法简介 18 Visual C 6 0 调试方法简介 24 实验用书推荐 28 预备实验 1 字符串处理 30 预备实验 2 文件读取 31 预备实验 3 随机数生成 32 预备实验 4 递归函数 33 预备实验 5 字符串数组的查找 34 实验 1 约瑟夫环问题 35 实验 2 一元多项式的运算 36 实验 3 逆波兰表达式求值 37 实验 4 杨辉三角显示 39 实验 5 四则运算表达式求值 40 实验 6 BST 41 实验 7 优先队列与堆 42 实验 8 哈夫曼编

2、 译码器 44 实验 9 图的遍历问题 45 实验 10 教学计划编制问题 47 实验 11 最短路径问题 48 实验 12 最小生成树问题 50 实验 13 快速排序 51 实验 14 基数排序 53 实验 15 散列表 54 实验 16 自组织线性表 56 实习步骤 一 问题分析和任务定义 在进行设计之前 首先应该充分地分析和理解问题 明确问题要求做什么 限制条件 是什么 注意 本步骤强调的是做什么 而不是怎么做 主要完成三个方面的工作 1 分析并确定问题要处理的对象 数据 是什么 例如 输入数据的类型 值的 范围以及输入的形式 2 分析并确定要实现的功能是什么 也就是说要对输入的数据进行

3、什么样的处理 注意 对问题中描述的需要实现的功能 应避开算法 具体的实现方法 和所 涉及的数据类型 仅需对所需完成的任务做出明确的定义 3 分析并确定处理后的结果如何显示 这一步还应该为调试程序准备好测试数据 包括合法的输入数据和非法形式的输入数 据 以及相应的输出结果 二 数据类型和系统设计 当需求分析结束 明确问题要求后 开始为编写程序设计合适的数据结构和算法 本 步骤分概要设计和详细设计两步实现 概要设计指的是 对问题描述中涉及的操作对象定义相应的抽象数据类型 并设计合 适的算法 以及定义程序各个功能模块和模块之间的关系 在这个过程中 要根据问题的 功能需求综合考虑 设计时空复杂度最优的

4、抽象数据结构和算法 注意 实现提示和给出 的部分代码中以及给出了建议 抽象数据类型的实现尽可能做到数据封装 基本操作的规 格说明尽可能明确具体 算法思想和过程明确有效 程序结构清晰 合理 简单和易于调 试 作为概要设计的结果 应写出每个抽象数据类型的定义 包括数据结构的描述和每个 基本操作的规格说明 主要模块的算法思想 并画出模块之间的调用关系图 详细设计则定义相应的物理存储结构 抽象数据类型的物理实现 并写出各基本操作 的伪码算法 以及主要模块算法的具体步骤 详细设计的结果是对数据结构和基本操作的 规格说明做出进一步的求精 写出数据存储结构的类型定义 算法书写规范 采用文字性 的步骤描述或者

5、算法流程图的形式都行 在求精的过程中 应尽量避免陷入语言细节 不 必过早描述辅助数据结构和局部变量 三 编码实现和静态检查 在实验过程中 题目中会给出程序的部分源代码 根据实习第二步的设计结果以及源 代码的提示 编码实现程序的其余部分 编码是把详细设计的结果进一步求精为程序设计语言程序 对于编程很熟练的读者 如果基于详细设计的伪码算法就能直接在键盘上输入程序的话 则可以不必用笔在纸上写 出编码 而将这一步的工作放在上机准备之后进行 即在上机调试之前直接用键盘输入 写出编码的程序后 在上机 编译和调试 之前 认真的静态检查是必不可少的 多 数初学者在编好程序后处于以下两种状态之一 一种是对自己的

6、 精心作品 的正确性确 信不疑 另一种是认为纠查错误是编译器的工作 这两种态度是极为有害的 事实上 非 训练有素的程序设计者编写的程序长度超过50 行时 极少不含有除语法错误以外的错误 上机动态调试决不能代替静态检查 否则调试效率是极低的 静态检查主要有两种方法 一是用一组测试数据手工执行程序 通常应先分模块检查 二是通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑 在这个过程中再加入 一些注解和断言 如果程序中逻辑概念清楚 后者将比前者有效 四 上机准备和上机调试 上机准备包括一下几个方面 1 熟悉机器的操作系统和语言集成环境的用户手册 尤其是最常用的命令操作 以便顺利进行上机的基本活

7、动 2 上机调试程序时要带一本高级语言教材或手册 3 掌握调试工具 考虑调试方案 设计测试数据并手工得出正确结果 磨刀不 误砍柴工 计算机各专业的学生应该能够熟练运用高级语言的程序调试器 DEBUG 调试程序 上机调试程序时要带一本高级语言教材或手册 调试最好分模块进行 自底向上 即先调试底层函数 必要时可以另写一个调用驱动程序 这种表面上的工作实际上可 以大大降低调试所面临的复杂性 提高调试工作效率 在调试过程中可以不断借助DEBUG 的各种功能 提高调试效率 调试中遇到的 各种异常现象往往是预料不到的 此时不应 冥思苦想 而应动手确定疑点 通过修 改程序来证实它或绕过它 调试正确后 认真整

8、理源程序及其注释 印出带有完整注 释的且格式良好的源程序清单和结果 五 总结和整理实习报告 按照实习报告的格式完成整个实习报告 同时总结和思考 回味设计的过程 体会调 试的过程 总结编程中的收获 记录实习过程的体会 交流程序设计各个步骤的心得 学 而不思则罔 思而不学则殆 在程序设计中 只有做到勤思考 善总结 才能不断进步 实习报告规范 实习报告的开头应给出题目 班级 姓名 学号和完成日期 并包括以下七个内容 1 需求分析 以无歧义的陈述说明程序设计的任务 强调的是程序要做什么 明确规定 1 输入的形式和输入值的范围 2 输出的形式 3 程序所能达到的功能 4 测试数据 包括正确的输入及其输出

9、结果和含有错误的输入及其输出结果 2 概要设计 说明本程序中用到的所有抽象数据类型的定义 算法的基本思想 主程序的流程以及各程 序模块之间的层次 调用 关系 3 详细设计 1 实现概要设计中定义的所有数据类型 物理数据结构 对每个操作只需要写出伪 码算法 2 算法的具体步骤 3 算法的时空分析和改进设想 4 画出函数的调用关系图 5 输入和输出的格式 4 调试分析 调试过程中遇到的问题 以及如何解决的 5 测试结果 根据实验提供的测试数据 列出你所编写的程序的测试结果 6 用户使用说明 可选 说明如何使用编写的程序 详细列出每一步的操作步骤 7 实验心得 可选 对实验设计与实现过程的回顾和分析

10、 以及经验和体会 8 附录 可选 带注释的源程序 如果是提交源程序电子版 只需列出程序文件名的清单 实习报告样例 1 最大公因数 题目部分 背景 因数分解 求最大公因数和公倍数等问题都是数学中古老而又重要德问题 这些问题 在代数学 密码学 计算复杂性理论和量子计算机等领域中有重要意义 问题描述 两个整数的最大公因数是同时整除二者的最大整数 试设计一个计算两个整数的最大 公因数的程序 基本要求 1 用户输入两个正整数 其取值范围为 0 216 2 要求采用欧几里德算法 计算最大公因数 测试数据 输入 7591035 输出 69 实现提示 1 注意题目给出的正整数的取值范围 定义变量时 选择合适的

11、数据类型 2 欧几里德算法计算最大公因数 编写成一个独立的函数 并注意该算法对两个数据 的大小关系有要求 在设计函数的输入参数以及函数处理代码时要注意处理 选作内容 1 设计一个求取n 个正整数的最大公因数的函数 2 如果用户输入的正整数的取值范围为 0 232 0 264 请设计求取两个大的正整 数的最大公因数的函数 源程序及填空部分 include stdio h typedef long elemtype 欧几里德算法计算最大公因数函数 elemtype gcd elemtype M elemtype N 填空 main elemtype a b g 输入 printf n本程序可以求取

12、两个正整数的最大公因数 n printf n请输入第一个正整数 注意输入的数要小于2100000000 scanf ld printf n请输入第二个正整数 注意输入的数要小于2100000000 scanf ld g gcd a b 输出 printf n两者的最大公因数是 ld g 实验报告部分 课程实习报告 题目 最大公因数 学生姓名 学生学号 专业班级 指导老师 完成日 期 一 需求分析 1 本程序要求采用欧几里德算法 计算并输出用户输入的两个正整数的最大公因数 2 两个正整数由用户通过键盘输入 其取值范围为 0 216 不对非法输入做处理 即 假设输入都是合法的 3 在 Dos 界面

13、输出最大公因数 4 测试数据 输入 7591035 输出 69 二 概要设计 抽象数据类型 为实现上述程序的功能 应以整数 存储用户的输入 以及计算出的结果 算法的基本思想 根据题目要求 采用欧几里德算法计算两个正整数的最大公因数 该算法的基本思想 是辗转相除法 设两数为 a b b a 求它们最大公约数 a b 的步骤如下 1 a b 令 r 为所得余数 0 r b 若 r 0 算法结束 b 即为答案 2 互换 置a b b r 并返回第一步 程序的流程 程序由三个模块组成 1 输入模块 完成两个正整数的输入 存入变量a 和 b 中 2 计算模块 设计一个最大公因数函数 elemtype g

14、cd elemtype M elemtype N 两个整数作为函数参数 计算结果通过函数名返回 3 输出模块 屏幕上显示计算的最大公因数 三 详细设计 物理数据类型 题目要求输入的正整数的取值范围在 0 216 之间 为了能够存储 采用C 语言中 的长整型定义变量 typedef long elemtype 算法的具体步骤 欧几里德算法计算两个正整数的最大公因数的算法流程图如下 算法的时空分析 算法的运行时间依赖与确定余数序列有多长 可以证明 在两次迭代后 余数最多是 原始值的一半 则迭代次数是2log N O log N 输入和输出的格式 输入 本程序可以求取两个正整数的最大公因数 提示 请

15、输入第一个正整数 注意输入的数要小于2100000000 提示 等待输入 请输入第二个正整数 注意输入的数要小于2100000000 提示 等待输入 输出 提示 两者的最大公因数是 输出结果的位置 四 调试分析 略 五 测试结果 输入50 15输出5 输入1989 1590 输出3 六 用户使用说明 可选 1 本程序的运行环境为DOS 操作系统 执行文件为gcd exe 2 运行程序时 提示输入两个整数 本程序可以求取两个正整数的最大公因数 请输入第一个正整数 注意输入的数要小于2100000000 请输入第二个正整数 注意输入的数要小于2100000000 输出 两者的最大公因数是 七 实验

16、心得 可选 略 七 附录 可选 Gcd c 主程序 实习报告样例 2 进制转换 题目部分 背景 机制转换是计算机实现计算的基本问题 问题描述 十进制数 N 和其他 d 进制数的转换是计算机实现计算的基本问题 请编制一个满足下 列要求的进制转换程序 基本要求 1 用户输入一个非负的十进制整数 其取值范围为 0 216 2 打印输出与其等值的八进制数 测试数据 输入 1000 输出 1750 实现提示 1 利用求模取余法 N N div d d N mod d 公式实现 2 由于上述计算过程是从低位到高位顺序产生八进制数的各个数位 而打印输出正好 相反 利用堆栈的后进先出的特性正好实现 选作内容 1 设计一个能处理小数的进制转换程序 2 设计一个能处理负数的进制转换程序 源程序及填空部分 include include 包含动态内存分配函数的头文件 typedef int ElemType typedef struct NodeType ElemTypedata struct NodeType next Node typedef struct Node top int len LinkSt

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号