软件算法设计说明书.doc_第1页
软件算法设计说明书.doc_第2页
软件算法设计说明书.doc_第3页
软件算法设计说明书.doc_第4页
软件算法设计说明书.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

科 信 学 院 课程设计说明书课程设计说明书 2012 2013 学年第二学期 课程名称 软件综合算法设计 题 目 数制转换问题 专业班级 学生姓名 学 号 指导教师 设计周数 2 周 设计成绩 2013 年 7 月 2 日 1 目目 录录 一 实验目的一 实验目的 2 2 二 实验要求及目标二 实验要求及目标 2 2 三 算法思想三 算法思想 3 3 用数组实现该问题 3 用栈实现该问题 3 四 模块划分四 模块划分 3 3 用数组实现该问题 3 用栈实现该问题 4 五 数据结构五 数据结构 4 4 用数组实现该问题 4 用栈实现该问题 4 六 程序源代码及结果六 程序源代码及结果 5 5 一 数组 5 1 源代码 5 2 运行结果 8 二 栈 10 1 源代码 10 2 运行结果 15 七 心得体会七 心得体会 1717 参考文献参考文献 1919 2 软软 件件 综综 合合 算算 法法 设设 计计 报报 告告 实验名称 数值转换问题实验名称 数值转换问题 指导老师 杨 荣 爱 组员 1 黄静南 学号 110212203 组员 2 赵兴凡 学号 110212216 完成时间 2013 年 7 月 2 日 一 实验目的一 实验目的 了解并掌握软件算法设计的方法与步骤 具备初步的独立分析问题 解决问题的 能力 初步掌握软件开发过程的问题分析 系统设计 程序编码和测试等基本方法和 技能 积累项目设计及程序调试 测试的经验 提高综合运用所学的理论知识和方法 锻炼独立分析和解决问题的能力 训练用系统的观点和软件开发一般规范进行软件的 开发 培养软件工作者所具备的科学工作方法和作风 二 实验要求及目标二 实验要求及目标 要求 任意给定一个 M 进制的数 x 请实现如下要求 1 求出此数 x 的 10 进制值 用 MD 表示 2 实现对 x 向任意的一个非 M 进制的数的转换 3 至少用两种或两种以上的方法实现上述要求 用栈解决 用数组解决 其它 方法解决 目标 完成实验要求 实现源代码的运行 进而实现要求中的基本功能 3 三 算法思想三 算法思想 用数组实现该问题 用数组实现该问题 DTOM 函数和 MTOD 函数是实现该问题的主要函数 DTOM 函数是实现十进 制转换 为其它进制的函数 它是将输入的十进制数 取首先对需要转换的进制 M 取余 然后再对其取整 接着通过递归调用 DTOM 函数依次将得到的整数部分依次先取余后 取整 并将所得的余数依次存入一个数组中 然后逆向取出数组中的元素 即得到转 换后的结果 而 MTOD 函数则是实现其他进制 M 转换为十进制 并将其转换为非 M 进 制的数 M 进制转十进制则是从该 M 进制数的最后一位开始算 依次列为第 位并分别乘以 M 的 次方 将得到的次方相加便得到对 应的十进制数 再调用 DTOM 函数将其转换为非 M 进制的数 用栈实现该问题 用栈实现该问题 同样是利用 DTOM 和 MTOD 两个函数实现 两个函数的思想同利用数组实现时相 同 只是栈具有后进先出的性质 故其用 Pop 取数较数组的逆向取数方便些 四 模块划分四 模块划分 用数组实现该问题 用数组实现该问题 i j y n s m r reminder x 是定义的全局变量 初始值都为 DTOM int g int h 是实现十进制数转换为 M 进制数的函数 MTOD 是实现 M 仅指二进制数和八进制数 进制数转换为十进制数的函数 并 在其中调用 DTOM int g int h 实现向非 M 进制数的转换 HTOD int f 是实现十六进制数转换为十进制数的函数 并在其中调用 4 DTOM int g int h 实现向非十六进制数的转换 void main 是主函数 功能是给出测试的数据 并在特定条件下调用 DTOM 函数和 MTOD 函数 用栈实现该问题 用栈实现该问题 SqStack 定义栈 说明 base 为栈底指针 top 为栈顶指针 stacksize 为栈容 量 int InitStack SqStack int top int stacksize SqStack 六 程序源代码及结果六 程序源代码及结果 一 数组 一 数组 1 1 源代码 源代码 include include define N 1000 int i j y n s int m r reminder int x 全局变量默认初始化为 0 不必再赋 0 了 DTOM int g int h 十进制数转换为其他进制数 int c N i 0 reminder g h g g h if reminder 9 c i reminder 55 i else c i reminder i if g 0 DTOM g h for j i 1 j 0 j 6 if c j 65 printf c c j else printf d c j return 0 MTOD int e 二进制和八进制数转换为十进制数 并这转换为其他进制数 int a N printf 请输入 d 进制位数 m scanf d printf 请输入 d 进制的每位并使每位用空格隔开 m for i 0 i 0 i y int pow e j a i 强制类型转换 以免造成数据丢失 j printf 请输出所得的 10 进制的结果 printf d y printf n 需要转换的进制 M scanf d printf 请输出转换成 d 进制的结果 s DTOM y s return 0 HTOD int f 十六进制数转换为十进制数 并转换为其他进制数 int b N printf 请输入 d 进制位数 m scanf d 7 printf 请输入 d 进制的每位并使每位用空格隔开 m for i 0 i 0 i y int pow f j b i 强制类型转换 以免造成数据丢失 j printf 请输出所得的 10 进制的结果 printf d y printf n 需要转换的进制 M scanf d printf 请输出转换成 d 进制的结果 s DTOM y s return 0 void main printf 请给定一个需转换的进制 M 2or8or10or16 scanf d if m 2 m 8 二进制和八进制转换成十进制 MTOD m else if m 16 十六进制转换成十进制 HTOD m else if m 10 十进制转换成其它进制 printf 请输入一个 d 进制数 m scanf d printf 请输入需要转换成的进制 M 2or8or16 scanf d printf 请输出转换成 d 进制的结果 r 8 DTOM x r printf n 2 2 运行结果 运行结果 图 1 1 9 图 1 2 图 1 3 10 图 1 4 二 栈 二 栈 1 1 源代码 源代码 include include include include define STACK INIT SIZE 100 存储空间初始分配量 define STACKINCREMENT 10 存储空间分配增量 int e m x s t x 为要转换的十进制数 e 为临时用的的 int 型变量 int r y i n 11 typedef struct int base 栈底 int top 栈顶 int stacksize 栈容量 SqStack int InitStack SqStack if S base exit 0 存储空间失败 S top S base S stacksize STACK INIT SIZE return 0 int GetTop SqStack S int e S top 1 return 0 int Push SqStack if S base return 1 存储分配失败 S top S base S stacksize S stacksize STACKINCREMENT S top e return 0 int Pop SqStack e S top return 0 int StackEmpty SqStack S 若栈空 则返回 1 否则返回 0 if S top S base return 1 return 0 int DestroyStack SqStack S top NULL 防止程序后面不小心使用了它 S base S top return 0 SqStack S 定义栈 S DTOM int a int b 十进制转换成其他进制的函数 D2M while a r a b if r 9 r r 55 Push S r 压入栈 a b 转换成 M 进制 printf 该数转换成 d 进制的结果 b while StackEmpty S Pop S e 弹出栈 13 if e 65 printf c e else printf d e return 0 MTOD 其他进制转换为十进制的函数 M2D char c 1000 printf 请输入需要转换的数的位数 scanf d printf 请输入需要转换的数的每位并用空格隔开 for i 0 i n i scanf x Push S c i i 0 while StackEmpty S Pop S e y int pow m i e i printf 转换成 10 进制的结果是 printf d y return 0 void main InitStack S 构造一个空栈 printf 请输入需要转换的进制 M 2or8or10or16 scanf d if m 10 十进制转换成其他进制 14 printf 请给定一个需要转换的 10 进制数 scanf d printf 请输入需要转换成的进制数 scanf d DTOM x t if m 2 m 8 m 16 其他进制转换成十进制 且其他任意进 制的相互转换 MTOD printf n 给定要转换成的进制 M scanf d DTOM y s printf n DestroyStack S 销毁栈 S 栈 S 不再存在 2 2 运行结果运行结果 15 图 2 1 图 2 2 16 图 2 3 图 2 4 17 七 心得体会七 心得体会 组员一 黄静南 通过这次软件算法设计 我对研究算法设计的重要性有了更 加深刻的认知 算法的选择对解决实际问题的效率有很大的影响 实验使我对设计思 想有了更加深刻的理解 对以后的实验解决方案有了更多的选择 开阔了我的设计思 路 软件算法设计是培养学生综合运用所学知识 发现 提出 分析和解决实际问题 锻炼实践能力的重要环节 是对学生实际工作能力的具体训练和考察过程 在实验设计过程中 我还发现了很多学习中的盲点 上理论课时认为已经理解的 在程序中运行起来又是另一回事 所以实践与理论结合是学习中非常重要的 尤其是 在软件设计方面 随着科学技术发展的日新月异 当今计算机应用在生活中可以说得 是无处不在 而计算机应用与编程相互依存 在学好基础的情况下增加实践是最好的 选择 经过这一次两周完整的成功的编程练习 对我产生的莫大的激励 也让我对编程 有了更大的兴趣 这次的软件算法设计对我们的锻炼很大 让我们学到了老师没法交 给我们的 也让我们明白程序设计的大体步骤 让我们对我们的专业又有更进一步的 了解 我不仅体会到自己解决问题的乐趣 也体验到了同学合作的美好 两周时间说 长不长 说短也不短 我们不停地翻阅资料和讨论 有过迷茫有过喜悦 不过最后我 们终于成功了 满足感油然而生 如果有人问我物质和精神哪个更让人满足 那答案 一定是精神 那种感觉只有自己体会了才能懂 总之 这次设计程序让我受益良多 我很珍惜像这种难得的机会 组员二 赵兴凡 通过这次实验设计使我懂得了理论与实际相结合是很重要的 只有理论知识是远远不够的 只有把所学的理论知识与实践相结合起来 从理论中得 出结论 才能真正为社会服务 从而提高自己的实际动手能力和独立思考的能力 在 设计的过程中遇到问题 这毕竟独立做的 难免会遇到过各种各样的问题 同时在设 计的过程中发现了自己的不足之处 对以前所学过的知识理解得不够深刻 掌握得不 够牢固 独立自主固然重要 但是分工合作也必不可少 通过这次与同学的合作 了解到 18 自身的不足 与同伴做到了互补 我们选的题目看着简单 但是做起来很难 虽然刚 学完数据结构 期间还是遇到了很多问题 程序不是一气呵成的 需要一点一点的修改补充 直到可以成功运行出需要的功 能 这次课程设计给了我以后编程莫大的激励 因为我认为所谓算法通过老师的传授每个 人都只会一点点 而课外的东西需要自己去学习 仅靠自己学的那些基础知识是无法 编程的 需要融会贯通并且熟练运用 这段时间虽然很不好受

温馨提示

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

评论

0/150

提交评论