数据结构数制转换课设报告.

上传人:最**** 文档编号:117068158 上传时间:2019-11-18 格式:DOC 页数:15 大小:307KB
返回 下载 相关 举报
数据结构数制转换课设报告._第1页
第1页 / 共15页
数据结构数制转换课设报告._第2页
第2页 / 共15页
数据结构数制转换课设报告._第3页
第3页 / 共15页
数据结构数制转换课设报告._第4页
第4页 / 共15页
数据结构数制转换课设报告._第5页
第5页 / 共15页
点击查看更多>>
资源描述

《数据结构数制转换课设报告.》由会员分享,可在线阅读,更多相关《数据结构数制转换课设报告.(15页珍藏版)》请在金锄头文库上搜索。

1、数据结构课程设计报告设计题目:数制转换 学 院 经济与管理学院 专 业 信息管理与信息系统 班 级 学 号 姓 名 2012秋季学期一、问题描述3二、基本要求3三、算法思想3四、数据结构4五、模块划分4六、源程序4七、测试数据9八、运行及测试情况10一、问题描述 任意给定一个M进制的数x,转换为其它任意进制的数据。二、基本要求 1) 对给定一个M进制的数据x,求出此数x的10进制值; 2) 实现对x向任意的一个非M进制的数的转换。=三、算法思想(1)void convertion(int n)和void convert (int n)函数是实现该问题的主要函数。void convertion(

2、int n)函数是实现对给定一个M进制的数据x,求出此数x的10进制值,并将其转换为非m进制的数。二进制和十八进制转十进制是从该M进制的最后一位开始算,依次列为第0、2、3.n位并分别乘以M的0、1、2n次方,将得到的次方相加便得到对应的十进制数,在调用void convert (int n)函数时在void convert (int n)函数中调用void BA(int n)和void ER(int n)和void SHILIU(int n) 三个函数实现十进制向其他进制的转换,在这三个函数中,将其转换为非M进制的数,十六进制转十进制则是用数组实现上述转换。void convert (int

3、 n)函数,它是将输入的十进制数x取首先分别对需要转换的M进制取余,然后再对其取整,接着通过while循环一次将得到的整数部分依次先取余后取整。然后逆向取出即得到转换后的结果。在void convert (int n)函数中调用void BA(int n)和void ER(int n)和void SHILIU(int n) 三个函数实现十进制向其他进制的转换。(2)用栈实现该问题:void Push (stacknode *head,int x)和int Pop (stacknode *head)两个函数用栈的后进先出的性质,故用Pop()逆向取数方便四、数据结构带头结点的链表结点结构定义如下

4、typedef struct stacknode int data;struct stacknode *next;stacknode;stacknode *head;五、模块划分void Push (stacknode *head,int x)功能是: 入栈操作int Pop (stacknode *head) 功能是: 出栈操作void BA(int n) 功能是:栈的应用:十八进制转换void SHILIU(int n) 功能是:栈的应用:十十六进制转换void ER(int n) 功能是:栈的应用:十二进制转换void convert (int n) 功能是:将十进制转换为其他进制voi

5、d convertion(int n) 功能是:将m进制转换为非m进制: void main() 主函数 功能是: 六、源程序#include#include#include math.h#define N 100typedef struct stacknode /*定义栈结点的存储结构*/int data;struct stacknode *next;stacknode;stacknode *head;void Push (stacknode *head,int x) /*进栈操作*/stacknode *p;p=(stacknode*)malloc(sizeof(stacknode); p

6、-data=x;p-next=head-next; /*新结点链入栈顶*/head-next=p; /*新结点成为新的栈顶*/int Pop (stacknode *head) /*出栈操作*/int x;stacknode *p=head-next;if (p=NULL) printf (tt栈为空。n); elsex=p-data;head-next=p-next;free(p);return x;void BA(int n) /*栈的应用:十八进制转换*/int x; stacknode *p;if (head=NULL) printf(tt堆栈下溢!n);return;head-nex

7、t=NULL; /*置栈空*/while(n!=0) Push(head,n%8); /*余数入栈*/n=n/8; /*取新的商*/printf (ntt转换后的八进制数值为: );while (head-next!=NULL) /*出栈处理*/x=Pop(head);printf (%d,x); void SHILIU(int n) /*栈的应用:十十六进制转换*/int x; stacknode *p;if (head=NULL) printf(tt堆栈下溢!n);return;head-next=NULL; /*置栈空*/while(n!=0) Push(head,n%16); /*余数

8、入栈*/n=n/16; /*取新的商*/printf (ntt转换后的十六进制数值为:);while (head-next!=NULL) /*出栈处理*/x=Pop(head); if(xnext=NULL; /*置栈空*/while(n!=0) Push(head,n%2); /*余数入栈*/n=n/2; /*取新的商*/printf (ntt转换后的二进制数值为: );while (head-next!=NULL) /*出栈处理*/x=Pop(head);printf (%d,x); void convert (int n) /*将十进制转换为其他进制*/ ER( n); BA( n);

9、SHILIU(n);void convertion(int n) /*将m进制转换为十进制,并转换为非m进制*/ int a,i,k=-1,y=0,m, bN; printf(n 请输入是m进制: ); scanf(%d,&m); if(m=2|m=10|m=8) printf(n 请输入一个正确的m进制数: ); scanf(%d,&a); printf(n 请输出所得的十进制结果:); while(a!=0) i=a%10; k+; y+=i*(int)pow(m,k); a=a/10; printf(%dn,y); convert(y); else if(m=16) int n; printf( 请输入%d进制位数:,m);scanf(%d,&n); printf(n 请输入一个正确的m进制数:n ); for(i=0;in;i+) printf( 请输入第%d个数字或字母:,i+1);scanf(%x,&bi); for(i=0;inext=NULL;while (i!=0)printf (nnnn);printf (ntt 数值转换系统n);printf (n

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

当前位置:首页 > 高等教育 > 大学课件

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