数制转换数据结构课程设计报告

合集下载

数据结构课程设计实验报告完整版

数据结构课程设计实验报告完整版

数据结构课程设计实验报告完整版【正文】一、实验目的本实验主要目的是通过实践,掌握数据结构的基本概念、常见数据结构的实现方式以及在实际应用中的应用场景和效果。

二、实验背景数据结构是计算机科学与技术领域中的一个重要概念,是研究数据的组织方式、存储方式、访问方式以及操作等方面的方法论。

在计算机科学领域,数据结构是实现算法和解决问题的基础,因此对数据结构的理解和应用具有重要意义。

三、实验内容本次数据结构课程设计实验主要分为以下几个部分:1. 实验环境的准备:包括选择合适的开发平台、安装必要的软件和工具。

2. 实验数据的收集和处理:通过合适的方式收集实验所需的数据,并对数据进行处理和整理。

3. 数据结构的选择和实现:根据实验需求,选择合适的数据结构,并进行相应的数据结构实现。

4. 数据结构的测试和优化:对所实现的数据结构进行测试,包括性能测试和功能测试,并根据测试结果对数据结构进行优化和改进。

5. 实验报告的撰写:根据实验过程和结果,撰写完整的实验报告,包括实验目的、实验背景、实验内容、实验结果和结论等。

四、实验过程1. 实验环境的准备本实验选择了Visual Studio作为开发平台,安装了相应版本的Visual Studio,并根据官方指引进行了相应的配置和设置。

2. 实验数据的收集和处理本实验选取了一份包含学生信息的数据集,包括学生姓名、学号、性别、年龄等信息。

通过编写Python脚本,成功提取了所需信息,并对数据进行了清洗和整理。

3. 数据结构的选择和实现根据实验需求,我们选择了链表作为数据结构的实现方式。

链表是一种常见的动态数据结构,能够高效地插入和删除元素,适用于频繁插入和删除的场景。

在实现链表时,我们定义了一个节点结构,包含数据域和指针域。

通过指针的方式将节点连接起来,形成一个链式结构。

同时,我们还实现了相关的操作函数,包括插入、删除、查找等操作。

4. 数据结构的测试和优化在完成链表的实现后,我们对其进行了性能测试和功能测试。

c语言数制转换课程设计

c语言数制转换课程设计

c语言数制转换课程设计一、课程目标知识目标:1. 理解数制的概念,掌握二进制、十进制、八进制和十六进制的基本转换方法;2. 学会使用C语言进行不同数制间的转换,并理解其编程原理;3. 掌握C语言中的位运算符及其应用。

技能目标:1. 能够运用数制转换知识,解决实际问题,如编写程序进行十进制到二进制的转换;2. 培养逻辑思维能力和编程技能,通过编写数制转换程序,提升代码编写和调试能力;3. 学会分析问题,将实际问题转化为数制转换问题,并运用C语言进行求解。

情感态度价值观目标:1. 培养学生的编程兴趣,激发他们对计算机科学的热爱;2. 培养学生合作学习、互相帮助的精神,提高团队协作能力;3. 培养学生勇于尝试、积极探究的学习态度,增强克服困难的信心。

分析课程性质、学生特点和教学要求,本课程目标注重理论与实践相结合,旨在让学生在掌握数制转换知识的基础上,通过实际编程操作,提高解决问题的能力。

课程目标具体、可衡量,便于教师进行教学设计和评估,同时引导学生明确学习方向,提高学习效果。

二、教学内容1. 数制基本概念:二进制、十进制、八进制、十六进制的定义及特点;2. 数制转换原理:不同数制之间的转换方法,如十进制转二进制、二进制转十进制等;3. C语言数制转换编程:使用C语言实现数制转换算法,包括位运算符的使用;4. 教材章节关联:《C语言程序设计》第四章第三节,涉及位运算和数制转换;5. 教学大纲:a. 第一课时:数制基本概念及转换原理;b. 第二课时:C语言数制转换编程基础,位运算符讲解;c. 第三课时:实例分析,编写数制转换程序;d. 第四课时:课堂练习,分组讨论,程序调试与优化;e. 第五课时:总结数制转换方法,拓展相关知识,提高编程能力。

教学内容科学系统,注重理论与实践相结合,按照教学大纲安排进度,确保学生能够逐步掌握数制转换知识和编程技能。

同时,教学内容与教材紧密关联,便于学生查找资料,巩固所学知识。

数据结构课程设计报告书

数据结构课程设计报告书

1引言本设计使用C语言编写程序,以栈为主体实现功能,所以首先我们要认识一下栈。

栈是限定仅在表尾进行插入或删除操作的线性表,其存取数据时按照后进先出的原则进行。

而此次课程设计就是利用栈的这一特性并结合栈的输入、输出、判空等基本操作,来实现栈的三种实际应用:数制转换,行编辑和括号匹配。

2问题分析2.1 设计内容的分析本次课程设计的目标是使用C语言编写一个程序,当使用者进入程序时,首先出现一个菜单项,使用者可以选择所要实现的功能,从而进入相应的程序模块:数制转换:进入此模块后,程序提示输入任意一个十进制数和所要转换的进制,程序运行后得到相应进制的数据。

行编辑:进入模块后,程序提示输入原始数据,运行时当遇到#时退格一个,当遇到@时,清空所在行中之前的所有数据;当遇到\n时,完成前一行的输入处理,进行下一行的输入;当遇到¥时,全文输入编辑结束。

括号匹配:进入模块后,程序提示输入所要检验的括号以#为结束符,当括号匹配不正确时,程序输出相应的:左右括号匹配次序不正确,左括号多于右括号,右括号多于左括号。

当左右括号匹配无误时,输出左右括号匹配正确。

2.2 程序中用到的数据结构本程序主要是运用栈的相关知识,所以为了实现上述的三种功能,需要定义栈的结构用于储存数据:typedef char ElemType;//定义用户变量,代替char,便于以后修改typedef struct{ElemType *base;//在栈构造之前和销毁之后,base的值为NULLElemType *top;//栈顶指针int stacksize;//当前已分配的存储空间,以元素为单位}SqStack;实现第一个模块功能时,需要使用while语句进行栈的输入输出。

实现第二个模块功能时,需要使用while语句和swicth语句的嵌套来进行文本编辑实现第三个模块功能时,需要使用if、else语句的多重嵌套来判断匹配3总体设计3.1 总体设计思路本程序主要首先在主函数通过调用switch 语句来选择需要实现的功能,从而进入相应的函数模块。

数制转换的课程设计报告

数制转换的课程设计报告

数制转换的课程设计报告一、教学目标本课程旨在让学生掌握数制转换的基本原理和方法,包括二进制、八进制、十进制和十六进制的相互转换。

学生应能够运用这些知识解决实际问题,提高他们在信息技术领域的应用能力。

通过本课程的学习,学生将能够:1.知识目标:理解数制转换的基本概念,掌握不同数制之间的转换规则和方法。

2.技能目标:能够运用所学的数制转换方法,进行不同进制之间的数值转换,并解决实际问题。

3.情感态度价值观目标:培养学生的逻辑思维能力,提高他们对信息技术领域的兴趣,培养他们积极探索和合作学习的精神。

二、教学内容本课程的教学内容主要包括数制转换的基本原理和方法。

具体包括:1.二进制与十进制的转换:理解二进制和十进制之间的关系,掌握二进制数转换为十进制数和十进制数转换为二进制数的方法。

2.二进制与八进制的转换:理解二进制和八进制之间的关系,掌握二进制数转换为八进制数和八进制数转换为二进制数的方法。

3.二进制与十六进制的转换:理解二进制和十六进制之间的关系,掌握二进制数转换为十六进制数和十六进制数转换为二进制数的方法。

4.八进制与十进制的转换:理解八进制和十进制之间的关系,掌握八进制数转换为十进制数和十进制数转换为八进制数的方法。

5.八进制与十六进制的转换:理解八进制和十六进制之间的关系,掌握八进制数转换为十六进制数和十六进制数转换为八进制数的方法。

6.十六进制与十进制的转换:理解十六进制和十进制之间的关系,掌握十六进制数转换为十进制数和十进制数转换为十六进制数的方法。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法。

具体包括:1.讲授法:通过教师的讲解,让学生掌握数制转换的基本原理和方法。

2.讨论法:通过小组讨论,让学生深入理解数制转换的原理,并能够解决实际问题。

3.案例分析法:通过分析实际案例,让学生了解数制转换在信息技术领域的应用。

4.实验法:通过实际操作,让学生亲手进行数制转换的实验,加深对数制转换的理解。

数制转换c语言课程设计

数制转换c语言课程设计

数制转换c语言课程设计一、课程目标知识目标:1. 学生能理解数制的基本概念,掌握二进制、十进制、十六进制之间的转换方法;2. 学生能运用C语言编写程序实现数制转换,理解程序设计中的逻辑运算和位运算;3. 学生了解计算机中数值存储的方式,理解数制转换在计算机科学中的应用。

技能目标:1. 学生能够运用所学知识,独立编写和调试简单的数制转换C语言程序;2. 学生通过实际操作,提高编程解决问题的能力,培养逻辑思维和算法设计能力;3. 学生能够运用数制转换技能,解决实际问题,为后续学习计算机科学与技术打下基础。

情感态度价值观目标:1. 学生通过数制转换的学习,培养对计算机科学的兴趣和求知欲,激发学习积极性;2. 学生在小组合作学习过程中,培养团队协作精神和沟通能力;3. 学生在解决实际问题的过程中,树立正确的价值观,认识到科技对生活的影响,增强社会责任感。

课程性质:本课程为信息技术学科选修课程,以实践操作为主,结合理论讲解,培养学生的编程能力和逻辑思维。

学生特点:学生处于高中年级,具备一定的计算机操作基础,对编程有一定了解,好奇心强,喜欢动手实践。

教学要求:教师需关注学生的个体差异,提供个性化的指导,注重理论与实践相结合,提高学生的编程技能和解决问题的能力。

通过教学评估,确保学生达到课程目标,为后续学习打下坚实基础。

二、教学内容1. 数制基本概念:二进制、十进制、十六进制特点及表示方法;2. 数制转换原理:不同数制间的转换规则,重点讲解二进制与十进制的转换;3. C语言数制转换编程:位运算符的使用,逻辑运算符的应用,编写转换程序;4. 计算机中数值存储:了解计算机内部数值的存储方式,理解补码概念;5. 实践操作:分组讨论,编写和调试数制转换程序,进行案例分析;6. 知识拓展:数制转换在计算机中的应用,如IP地址转换、字符编码转换等。

教学内容安排:第一课时:数制基本概念及转换原理学习;第二课时:C语言数制转换编程方法讲解;第三课时:计算机中数值存储方式学习,实践操作指导;第四课时:分组讨论,编写和调试数制转换程序,进行案例分析;第五课时:知识拓展,了解数制转换在实际应用中的作用。

数据结构课程设计报告

数据结构课程设计报告

数据结构课程设计报告标题:数据结构课程设计报告摘要:本报告旨在详细描述数据结构课程设计的过程和结果。

通过对数据结构的学习和实践,我们掌握了基本的数据结构知识,并运用所学知识完成了一个实际的项目。

本报告将介绍项目的背景、需求分析、设计思路、实现过程和测试结果,并对项目的优缺点进行评估和总结。

1. 引言在现代计算机科学领域,数据结构是一门基础而重要的课程。

它研究数据的组织、存储和管理方式,对于提高程序效率和解决实际问题具有重要意义。

本课程设计旨在通过实践,加深对数据结构的理解并掌握其应用。

2. 背景在本次课程设计中,我们选择了一个实际的问题作为研究对象,即一个学生信息管理系统。

该系统需要能够对学生的基本信息进行存储、查询和修改,并提供相应的功能操作。

3. 需求分析在需求分析阶段,我们对学生信息管理系统的功能和性能需求进行了详细的调研和分析。

通过与用户的交流和讨论,我们确定了以下需求:- 学生信息的录入和存储:包括学生姓名、学号、性别、年龄等基本信息;- 学生信息的查询和展示:支持按照学号、姓名等条件进行查询,并能够将查询结果以表格形式展示;- 学生信息的修改和删除:允许用户对已录入的学生信息进行修改和删除操作;- 数据的持久化存储:保证学生信息的长期保存,并能够在系统重启后恢复数据。

4. 设计思路基于需求分析的结果,我们设计了以下数据结构和算法:- 学生信息的存储:采用链表数据结构,每个节点表示一个学生的信息,包括学号、姓名、性别、年龄等字段;- 查询功能的实现:通过遍历链表,按照用户指定的条件进行匹配,返回满足条件的学生信息;- 修改和删除功能的实现:通过遍历链表,找到目标学生节点,进行相应的修改或删除操作;- 数据持久化存储:将学生信息保存在文件中,实现数据的长期保存和恢复。

5. 实现过程在实现阶段,我们使用C++编程语言,利用所学的数据结构知识逐步完成了学生信息管理系统的开发。

具体步骤如下:- 定义学生信息的数据结构:创建一个包含学号、姓名、性别、年龄等字段的结构体;- 实现学生信息的录入和存储功能:通过链表数据结构,将学生信息存储在内存中;- 实现学生信息的查询和展示功能:按照用户指定的条件遍历链表,返回满足条件的学生信息;- 实现学生信息的修改和删除功能:通过遍历链表,找到目标学生节点,进行相应的修改或删除操作;- 实现数据的持久化存储功能:将学生信息保存在文件中,实现数据的长期保存和恢复;- 进行系统测试和调试:通过输入不同的测试数据,验证系统的功能和性能。

《数据结构》课程设计报告

《数据结构》课程设计报告

《数据结构》课程设计报告一、课程目标《数据结构》课程旨在帮助学生掌握计算机科学中数据结构的基本概念、原理及实现方法,培养其运用数据结构解决实际问题的能力。

本课程目标如下:1. 知识目标:(1)理解数据结构的基本概念,包括线性表、栈、队列、串、数组、树、图等;(2)掌握各类数据结构的存储表示和实现方法;(3)了解常见算法的时间复杂度和空间复杂度分析;(4)掌握排序和查找算法的基本原理和实现。

2. 技能目标:(1)能够运用所学数据结构解决实际问题,如实现字符串匹配、图的遍历等;(2)具备分析算法性能的能力,能够根据实际问题选择合适的算法和数据结构;(3)具备一定的编程能力,能够用编程语言实现各类数据结构和算法。

3. 情感态度价值观目标:(1)培养学生对计算机科学的兴趣,激发其探索精神;(2)培养学生团队合作意识,提高沟通与协作能力;(3)培养学生面对问题勇于挑战、善于分析、解决问题的能力;(4)引导学生认识到数据结构在计算机科学中的重要地位,激发其学习后续课程的兴趣。

本课程针对高年级学生,课程性质为专业核心课。

结合学生特点,课程目标注重理论与实践相结合,强调培养学生的实际操作能力和解决问题的能力。

在教学过程中,教师需关注学生的个体差异,因材施教,确保课程目标的达成。

通过本课程的学习,学生将具备扎实的数据结构基础,为后续相关课程学习和职业发展奠定基础。

二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 数据结构基本概念:线性表、栈、队列、串、数组、树、图等;教学大纲:第1章 数据结构概述,第2章 线性表,第3章 栈和队列,第4章 串。

2. 数据结构的存储表示和实现方法:教学大纲:第5章 数组和广义表,第6章 树和二叉树,第7章 图。

3. 常见算法的时间复杂度和空间复杂度分析:教学大纲:第8章 算法分析基础。

4. 排序和查找算法:教学大纲:第9章 排序,第10章 查找。

教学内容安排和进度如下:1. 第1-4章,共计12课时,了解基本概念,学会使用线性表、栈、队列等解决简单问题;2. 第5-7章,共计18课时,学习数据结构的存储表示和实现方法,掌握树、图等复杂结构;3. 第8章,共计6课时,学习算法分析基础,能对常见算法进行时间复杂度和空间复杂度分析;4. 第9-10章,共计12课时,学习排序和查找算法,掌握各类算法的实现和应用。

数据结构课程设计 数制转换

数据结构课程设计 数制转换
#include<stdlib.h>
#define N 1000
//以下为DtoM(int g,int h)是实现十进制数转换为M进制数的函数,
DtoM(int g,int h)
{
int c[N];
int i=0;int j;
int reminder;
reminder=g%h;
g=g/h;
if(reminder>9)
2.1、系统分析
2.1.1、用数组实现该问题:
DtoM()函数和MtoD()函数是实现该问题的主要函数。DtoM()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,接着通过递归调用DtoM()函数依次将得到的整数部分依次先取余后取整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。而MtoD()函数则是实现其他进制M转换为十进制,并将其转换为非M进制的数。M进制转十进制则是从该M进制数的最后一位开始算,依次列为第0、1、2…n位并分别乘以M的0、1、2…n次方,将得到的次方相加便得到对应的十进制数,再调用DtoM()函数将其转换为非M进制的数。2.1.2用栈实现该问题:
同样是利用DtoM()和MtoD()两个函数实现。两个函数的思想同利用数组实现时相同。只是栈具有后进先出的性质,故其用Pop()取数较数组的逆向取数方便些。
2.2、模块划分
2.2.1、用数组实现该问题:
⑴i,j,y,n,s,m,r,reminder,x是定义的全局变量,初始值都为0;
⑵DtoM(int g,int h)是实现十进制数转换为M进制数的函数;
scanf("%d",&n);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》课程设计报告书题目:数制转换系别:计算机科学与应用系学号:学生姓名:指导教师:完成日期:2013—6—1数制转换1.需求分析任意给定一个M进制的数x ,实现如下要求1)求出此数x的10进制值(用MD表示)2)实现对x向任意的一个非M进制的数的转换。

3)至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。

2.概要设计程序流程可以用以下流程图来刻画:A用数组实现B用栈实现3.详细设计A.用数组实现该问题D2M()函数和M2D()函数是实现该问题的主要函数。

D2M()函数是实现十进制转换为其他进制的函数,它是将输入的十进制数x首先对需要转换的进制M取余,然后在对其取整,接着通过递归调用D2M()函数一次将得到的整数部分一次先取余后取整,并将所得的余数依次存入下一数组,然后逆向去除数组中的元素,即得到转换后的结果。

而M2D()函数是实现其他进制M转换为十进制,并将其转换为非M进制。

M进制转十进制则是从该M 进制数的最后一位开始运算,依次列为第0、1、2、……..N位并分别乘以M的0、1、2、…..N 次方,将得到的次方相加便得到对应的十进制数,再调用D2M()函数将其转换为非M进制的数。

B.用栈实现栈具有后进先出的性质,具体实现方法和数组的方法有很大联系,不再过多解释。

4.调试分析(1)构造栈的方法通过查阅书籍知道了。

(2)数组的递归调用查阅相关书籍了解了。

(3)为了让界面表达更清晰,多次调试完善了界面。

5.测试结果下面是我的测试函数及运行结果:A.数组测试结果B栈实现测试结果6.总结通过《数据结构》课程设计,我了解到数据结构是计算机科学中一门综合性的专业基础课。

这次的课程设计使我对数组及栈有了初步的认识,虽然课程设计的不完善,但是在设计过程中我受益匪浅,通过查资料、网上搜索例子,让我学到了很多以前不知道的东西,提高我的分析和解决问题的能力,进一部掌握了应用系统设计的方法和不步骤,,也让我意识到自己所掌握的实在是太少了,只靠课本知识是不够的,应该多多上机调试,这样才能提高自己。

7.附源程序A.数组实现#include<stdio.h>#include<math.h>#define N 1000int i,j,y,n,s;int m,r,reminder;int x; //全局变量默认初始化为0,不必再赋0了D2M(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)D2M(g,h);for(j=i-1;j>=0;j--)if(c[j]>=65)printf("%c",c[j]);elseprintf("%d",c[j]);return 0;}M2D(int e) //二进制和八进制数转换为十进制数,并这转换为其他进制数{int a[N];printf("请输入%d进制位数:",m);scanf("%d",&n);printf("请输入%d进制的每位并使每位用空格隔开:",m);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=n-1;i>=0;i--){y+=(int)pow(e,j)*a[i]; //强制类型转换,以免造成数据丢失j++;}printf("请输出所得的10进制的结果: ");printf("%d",y);printf("\n需要转换的进制M:");scanf("%d",&s);printf("请输出转换成%d进制的结果:",s);D2M(y,s);return 0;}H2D(int f) //十六进制数转换为十进制数,并转换为其他进制数{int b[N];printf("请输入%d进制位数:",m);scanf("%d",&n);printf("请输入%d进制的每位并使每位用空格隔开:",m);for(i=0;i<n;i++)scanf("%x",&b[i]);for(i=n-1;i>=0;i--){y+=(int)pow(f,j)*b[i]; //强制类型转换,以免造成数据丢失j++;}printf("请输出所得的10进制的结果: ");printf("%d",y);printf("\n需要转换的进制M:");scanf("%d",&s);printf("请输出转换成%d进制的结果:",s);D2M(y,s);return 0;}void main(){printf("请给定一个需转换的进制M(2or8or10or16):"); scanf("%d",&m);if(m==2||m==8) //二进制和八进制转换成十进制M2D(m);else if(m==16) //十六进制转换成十进制H2D(m);else if(m==10) //十进制转换成其它进制{printf("请输入一个%d进制数:",m);scanf("%d",&x);printf("请输入需要转换成的进制M(2or8or16):");scanf("%d",&r);printf("请输出转换成%d进制的结果:",r);D2M(x,r);}printf("\n");}B.栈实现#include "stdio.h"#include "string.h"#include "math.h"#include "limits.h"#include "stdlib.h"#include "malloc.h"#define TRUE 1#define OK 1#define FALSE 0#define ERROR 0#define INFEASIBLE -1 typedef int Status;typedef int SElement;#define STACK_INIT_SIZE 10 #define STACKINCREMENT 2 typedef struct SqStack{SElement *base ; SElement *top ;int stacksize ;}SqStack;int InitStack (SqStack *S){(*S).base = (SElement *)malloc(STACK_INIT_SIZE * sizeof (SElement)) ;if (!(*S).base)exit (OVERFLOW);S->top=S->base;S->stacksize= STACK_INIT_SIZE;return OK;}int DestroyStack (SqStack *S){free (S->base);S->base = NULL;S->top = NULL;S->stacksize = 0;return OK;}int ClearStack(SqStack *S)S->top = S->base;return OK;}int StackEmpty(SqStack S)//判断sqstack 是否为空{if (S.top == S.base )return TRUE;elsereturn FALSE;}int StackLength (SqStack S)//返回s的元素个数,即栈的长度{return S.top-S.base ;}int GetTop(SqStack S,int *e)//若栈不为空,用e返回s的栈顶元素,返回ok{if (S.top > S.base ){*e=*(S.top-1);return OK;else return ERROR;}int Push(SqStack *S,int e)//插入元素e为新的栈顶元素{if (S->top - S->base >= S->stacksize){S->base = (SElement * )realloc ((*S).base,((*S).stacksize + STACKINCREMENT *sizeof (SElement)));if (!S->base )exit (OVERFLOW);S->top = S->base + S->stacksize;S->stacksize += STACKINCREMENT;}*(S->top) = e;S->top ++;return OK;}int Pop(SqStack *S,int *e){ /* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */if((*S).top==(*S).base)return ERROR;*e=*--(*S).top;return OK;}int StackTraverse (SqStack S ,int (*visit)(int ))// {while (S.top > S.base )visit (*S.base ++ );printf ("\n");return OK;}void conversion8(SqStack s){unsigned n;int e;InitStack (&s);//初始化栈printf ("n(>=0)=");scanf ("%u",&n);while (n)//当n不为0{Push (&s,n%8);n=n/8;}while (!StackEmpty(s))//当栈不为空{Pop (&s,&e);printf ("%d",e);}printf ("\n");}void conversion2(SqStack s){unsigned n;int e;InitStack (&s);//初始化栈printf ("n(>=0)=");scanf ("%u",&n);while (n)//当n不为0{Push (&s,n%2);n=n/2;}while (!StackEmpty(s))//当栈不为空Pop (&s,&e);printf ("%d",e);}printf ("\n");}void conversion16(SqStack s){unsigned n;char d;int e; InitStack (&s);//初始化栈printf ("n(>=0)=");scanf ("%u",&n);while (n)//当n不为0{Push (&s,n%2);n=n/2;}while (!StackEmpty(s))//当栈不为空{Pop (&s,&e);switch(e)case 0:e=0;printf("%d",e);break;case 1:e=1;printf("%d",e);break;case 2:e=2;printf("%d",e);break;case 3:e=3;printf("%d",e);break;case 4:e=4;printf("%d",e);break;case 5:e=5;printf("%d",e);break;case 6:e=6;printf("%d",e);break;case 7:e=7;printf("%d",e);break;case 8:e=8;printf("%d",e);break;case 9:e=9;printf("%d",e);break;case 10:d='a';printf("%c",d);break;case 11:d='b';printf("%c",d);break;case 12:d='c';printf("%c",d);break;case 13:d='d';printf("%c",d);break;case 14:d='e';printf("%c",d);break;case 15:d='f';printf("%c",d);break; }printf ("%d",e);}printf ("\n");}int choose(){int d;printf("请选择你要进行的进制的转换:\n");printf("如果是十进制转换为八进制请选择1\n"); printf("如果是十进制转换为二进制请选择2\n"); printf("如果是十进制转换为十六进制请选择3\n"); printf("如果您想全部转换请选择9\n");printf("如果想退出请选择0\n");printf("\n");scanf("%d",&d);return d;}void main(){int f=0;SqStack s;while(!f){switch(choose()){case 1:conversion8(s);break;case 2:conversion2(s);break;case 3:conversion16(s);break;case 9:conversion8(s);conversion2(s);conversion16(s);break;case 0: f=-1;default: f=1;}system("pause");system("cls");}}指导教师评语:程序成绩:报告成绩:综合成绩:指导教师姓名:批改日期:年月日。

相关文档
最新文档