2022年数制转换问题借鉴 .pdf
《2022年数制转换问题借鉴 .pdf》由会员分享,可在线阅读,更多相关《2022年数制转换问题借鉴 .pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构课程设计题 目 名 称: 数 制 转 换 问 题课 程 名 称:数 据 结 构学 生 姓 名:学号:学 院 名 称:指 导 教 师:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 19 页 - - - - - - - - - 目录一需求分析 二概要设计 三详细设计四调试测试五总结名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 19 页 - -
2、 - - - - - - - 一需求分析应用环境设定:生活中我们需要将M 进制的数转换为我们所需要的进制,从键盘任意输入一个M 进制的数,对其进行转换成其他三种进制的数,然后再从电脑中显示出来,最终得到我们的结果。用户界面:命令行界面,根据自己的要求, 对界面的提示进行操作,正确输入我们需要的数据。输入方式:首先输入将转换的进制数,回车确认;然后输入确定的数据,回车确认;接着选择要转换为的进制数,回车确认。输出方式: 界面直接输出, 启动程序后, 按照界面提示, 输入数据,直接回车确认,显示屏即输出我们的数据结果。数据储存方式:全部在内存存放,不使用硬盘上的文件或其他数据源,程序执行过程中和结
3、束后不保存数据。程序功能: 1.根据界面提示输入M 进制数据。2.对任意 M 进制数据实行非M 进制的转换。二概要设计在此说明数据结构设计和关键的算法设计思想1. 用数组实现该问题D2M()函数和 M2D()函数是实现该问题的主要函数。D2M()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数取首先对需要转换的进制M取余,然后再对其取整, 接着通过递归调用D2M()函数依次将得到的整数部分依次先取余后取整,并将所得的余名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,
4、共 19 页 - - - - - - - - - 数依次存入一个数组中, 然后逆向取出数组中的元素, 即得到转换后的结果。而 M2D()函数则是实现其他进制M转换为十进制,并将其转换为非 M进制的数。 M进制转十进制则是从该M进制数的最后一位开始算,依次列为第、位并分别乘以M的、次方,将得到的次方相加便得到对应的十进制数,再调用D2M()函数将其转换为非 M进制的数。i,j,y,n,s,m,r,reminder,x是定义的全局变量,初始值都为;D2M(int g,int h)是实现十进制数转换为M进制数的函数;M2D(int e) 是实现 M(仅指二进制数和八进制数) 进制数转换为十进制数的函
5、数,并在其中调用D2M(int g,int h)实现向非 M进制数的转换;H2D(int f) 是实现十六进制数转换为十进制数的函数,并在其中调用D2M(int g,int h)实现向非十六进制数的转换;void main()是主函数,功能是给出测试的数据,并在特定条件下调用 D2M()函数和 M2D()函数。使用简单一维数组int aN,int bN, int cN。2. 用栈实现该问题同样是利用 D2M()和 M2D()两个函数实现。两个函数的思想同名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
6、 - - - 第 4 页,共 19 页 - - - - - - - - - 利用数组实现时相同。 只是栈具有后进先出的性质, 故其用 Pop()取数较数组的逆向取数方便些。SqStack 定义栈,说明 base 为栈底指针, top 为栈顶指针,stacksize为栈容量;int InitStack(SqStack &S)到 int DestroyStack(SqStack &S)六大模块分别表示构造一个空栈、用表示栈元素、插入元素、删除元素、判断栈是否为空以及摧毁栈;SqStack S 是指定义栈 S;D2M(int a,int b)的功能是将十进制数转换成M进制的函数;M2D()的功能是
7、M进制转换为十进制的函数;void main() 是主函数。其功能是输入需要测试的数据以及需要转换的进制,并在特定情形下调用D2M()函数和 M2D()函数,而且实现 M进制数向任意非 M进制数的转换。数据类型定义如下:typedef struct int *base; 栈底int *top; 栈顶int stacksize;栈容量SqStack; int InitStack(SqStack &S)构造一个个空栈int GetTop(SqStack S, int &e) 若栈不为空,则用 e 返回 S 的栈顶元素,并返回 0,否则返回 1 名师资料总结 - - -精品资料欢迎下载 - - -
8、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 19 页 - - - - - - - - - int Push(SqStack &S , int e) 插入元素 e 为新的栈顶元素int Pop(SqStack &S, int &e) 若栈不空,则删除S的栈顶元素,用e返回其值,并返回0,否则返回 1。1. 程序流程图若 N!=10 若 N=10 开始数组输入需转换的数的进制 N 栈输入需转换的位数输入需转换的数输入将转换的进制数输出结果名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
9、 - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 19 页 - - - - - - - - - 2. 程序源代码A用数组实现(文件名shuzu.cpp )#include #include #define N 1000 int i,j,y,n,s; int m,r,reminder; int x; /全局变量默认初始化为0,不必再赋 0 了D2M(int g,int h) /十进制数转换为其他进制数 int cN; i=0; reminder=g%h; g=g/h; if(reminder9) ci=reminder+55; i+; else 名师资料总结 -
10、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 19 页 - - - - - - - - - ci=reminder; i+; if(g0) D2M(g,h); for(j=i-1;j=0;j-) if(cj=65) printf(%c,cj); else printf(%d,cj); return 0; M2D(int e) /二进制和八进制数转换为十进制数,并这转换为其他进制数 int aN; printf( 请输入%d 进制位数 :,m); scanf(%d,&n); printf
11、( 请输入 %d 进制的每位并使每位用空格隔开:,m); for(i=0;i=0;i-) y+=(int)pow(e,j)*ai; /强制类型转换, 以免造成数据丢失j+; printf( 需要转换的进制 M:); scanf(%d,&s); printf( 请输出转换成 %d 进制的结果 :,s); D2M(y,s); return 0; H2D(int f) /十六进制数转换为十进制数,并转换为其他进制数 int bN; printf( 请输入 %d 进制位数 :,m); scanf(%d,&n); printf( 请输入 %d 进制的每位并使每位用空格隔开:,m); for(i=0;i=
12、0;i-) y+=(int)pow(f,j)*bi; /强制类型转换, 以免造成数据丢失j+; printf( 需要转换的进制 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); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数制转换问题借鉴 2022 数制 转换 问题 借鉴
限制150内