1 / 23
文档名称:

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

格式:doc   大小:352KB   页数:23页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

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

上传人:AIOPIO 2021/2/14 文件大小:352 KB

下载得到文件列表

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

相关文档

文档介绍

文档介绍:《数据结构》
课 程 设 计 报 告 书
题    目:数制转换
系 别:计算机科学与应用系
学   号:   
学生姓名:    
指导教师:        
完成日期:2013—6—1
数制转换
需求分析
  任意给定一个M进制的数x ,实现如下要求
1)求出此数x的10进制值(用MD表示)
2)实现对x向任意的一个非M进制的数的转换.
3)至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。
概要设计
程序流程可以用以下流程图来刻画:
A用数组实现           B用栈实现
开始
开始

创建栈
构造数组
数制转换函数
数制转换函数
输出结果
输出结果
详细设计
A.用数组实现该问题
D2M()函数和M2D()函数是实现该问题的主要函数。D2M()函数是实现十进制转换为其他进制的函数,它是将输入的十进制数x首先对需要转换的进制M取余,然后在对其取整,接着通过递归调用D2M()函数一次将得到的整数部分一次先取余后取整,并将所得的余数依次存入下一数组,然后逆向去除数组中的元素,即得到转换后的结果。而M2D()函数是实现其他进制M转换为十进制,并将其转换为非M进制。M进制转十进制则是从该M 进制数的最后一位开始运算,依次列为第0、1、2、……..N位并分别乘以M的0、1、2、….。N次方,将得到的次方相加便得到对应的十进制数,再调用D2M()函数将其转换为非M进制的数。
B.用栈实现
  栈具有后进先出的性质,具体实现方法和数组的方法有很大联系,不再过多解释.
调试分析
构造栈的方法通过查阅书籍知道了。
数组的递归调用查阅相关书籍了解了。
为了让界面表达更清晰,多次调试完善了界面。
测试结果
下面是我的测试函数及运行结果:
数组测试结果
   
B栈实现测试结果
总结
通过《数据结构》课程设计,,虽然课程设计的不完善,但是在设计过程中我受益匪浅,通过查资料、网上搜索例子,让我学到了很多以前不知道的东西,
提高我的分析和解决问题的能力,进一部掌握了应用系统设计的方法和不步骤,,也让我意识到自己所掌握的实在是太少了,只靠课本知识是不够的,应该多多上机调试,这样才能提高自己。
附源程序
数组实现
 #include<stdio。h>
#include<math.h>
 #define N 1000
int 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]);
else
  printf("%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);