课程设计。
课程设计名称: 数据结构课程设计
专业班级 : 计科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 初始化时每个方格都是关闭的,一个...