数据结构课程设计

发布 2022-10-05 01:25:28 阅读 1923

课程设计。

课程设计名称: 数据结构课程设计

专业班级 : 计科08级02班

学生姓名 : 44

学号 : 200848140229

指导教师 : 周德祥

课程设计时间: 2010.6.21-6.25

计算机科学与技术专业课程设计任务书。

1、 需求分析。

输入任一m进制的数字,可计算出十进制的数值,并实现向非m进制的转换。用数组和栈两种方法实现上述功能。

2、 概要设计。

先进入用户欢迎界面,可以选择用数组实现,用栈实现,还是退出系统。若选择用数组实现,将会进入数组实现的界面;若选择用栈实现,将会进入栈实现是界面;入选择退出系统则将会出现退出的界面!

进入实现界面后,首先让用户输入要进行转换的进制m,然后再输入要进行转换的数的整数个数和整数部分,整数的个数用int类型的变量存储,整数部分用数组或栈来存储;然后再输入该数的小数个数及小数部分,小数的个数用int类型的变量存储,小数的部分用数组或栈实现存储!在存储整数和小数部分时,输入的为字符类型,用ascii值转换为整形变量后进行存储!

当输入一个m进制时候,会默认首先实现把该进制转换为十进制,一般情况下,利用按权展开法实现向十进制的转换。然后让用户选择向非十进制的其他进制转换,实现这一步时,先把该数转换为十进制,然后再向其他进制转换,例如:当想要实现把二进制转换为十六进制时,先把二进制转换为十进制,然后再把十进制转换为十六进制。

当用栈实现该功能时用到几个有关栈的函数,构造栈initstack(sqstack *s)、删除栈顶元素并返回其值pop(sqstack *s,int *e)、压栈函数push(sqstack *s,int e)、判断栈空函数stackempty(sqstack s),当用户输入数据时,调用push函数,当想要得到栈的数据时,调用pop函数,并且用到判断栈空函数来控制循环,在实现进制转换的功能时方法与用数组实现时的相似。

3、 开发工具和编程语言。

4.1 开发工具:microsoft visual c++ 6.0

4.2编程语言:visual c

4、 详细设计。

首先出现的是用户欢迎界面,其中有系统的名称,制作人的个人信息,还有将要进行的操作的选择,让用户选择的是实现进制转换的方式,是用数组实现还是用栈实现,还是退出系统。具体流程如下:

5、 源**。

#include<>

#include<>

#include<>

#include<>

#define n 20//数组个数。

#define ok 1

#define error 0

#define overflow -2

#define stack_init_size 100 //存储空间初始分配量。

#define stackincrement 10 //存储空间分配增量。

typedef struct

*((s).top)++e;

return ok;

int pop(sqstack *s,int *e)//删除栈顶元素,并用e返回栈顶元素。

if((*s).top==(s).base)

return error;

*e=*-s).top;

return ok;

int stackempty(sqstack s判断栈是否为空,若栈为空,则返回1,否则返回0

if(return 1;

elsereturn 0;

long int pow1(int m,int n)//计算整数部分各位权值。

int j;

long int p=1;

if(n==0) p=1;else

return p;

long double pow2(int m,int n)//计算小数部分各位权值。

int j;

long double p=1.0,q=1.0/m;

for(j=1;j<=n;j++)

return p;

/用数组实现数制转换。

void array()

long int sum1=0,sum3,r1;

int i;

//int i,sum1=0,sum3,r1;//sum1为转换为十进制时整数部分的和,r1为权值。

long double sum2=0,sum4,sum,r2;//sum2为小数部分的和,sum为最终的十进制的结果,r2为权值。

int m1,m2;//m1为给定的数的进制数,m2为将要转换的非m1的进制数。

int n1,n2,n3,n4;//n1,n2为原整数和小数位数,n3,n4为改变后的整数和小数位数。

int k1[n],k2[n],k3[n],k4[n];/k1,k2保存将输入的字符转换为数字后的数据,k3,k4保存转换为其它进制的结果。

char k0[n];/k数组存输入的数据。

printf("请输入用来数制转换的数的进制数 m:")

scanf("%d",&m1);

printf("请输入该数的整数位数 :

scanf("%d",&n1);

getchar();

printf("请输入整数部分(从高位到低位依次输入): n");

printf("\t\t***输入提示:输入的数据需用一个空格隔开");

for(i=0;i

printf("请输入该数的小数位数 :

scanf("%d",&n2);

getchar();

printf("请输入小数部分(从高位到低位依次输入): n");

for(i=0;i

//将该数转换为十进制。

for(i=0;i

printf("整数部分转换为十进制: %ld",sum1);

for(i=0;i

printf("小数部分转换为十进制: %lf",sum2);

sum=sum1+sum2;

printf("该数转换为十进制数为:%lf",sum);

//将该数转换为其它进制。

printf("请输入将要转换的进制数(非m):"

scanf("%d",&m2);

getchar();

sum3=sum1;

sum4=sum2;

i=0;while(sum3!=0)

n3=i;//整数位数。

i=0;while(sum4!=0.0)

k4[i]=(int)(sum4*m2);

sum4=sum4*m2-k4[i];

数据结构课程设计

课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...

数据结构课程设计

数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...

数据结构课程设计

班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...