课程设计报告-实现十进制数n和二进制数之间的转换-学生成绩管理-拓扑排序

上传人:第*** 文档编号:34256947 上传时间:2018-02-22 格式:DOC 页数:27 大小:673.62KB
返回 下载 相关 举报
课程设计报告-实现十进制数n和二进制数之间的转换-学生成绩管理-拓扑排序_第1页
第1页 / 共27页
课程设计报告-实现十进制数n和二进制数之间的转换-学生成绩管理-拓扑排序_第2页
第2页 / 共27页
课程设计报告-实现十进制数n和二进制数之间的转换-学生成绩管理-拓扑排序_第3页
第3页 / 共27页
课程设计报告-实现十进制数n和二进制数之间的转换-学生成绩管理-拓扑排序_第4页
第4页 / 共27页
课程设计报告-实现十进制数n和二进制数之间的转换-学生成绩管理-拓扑排序_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《课程设计报告-实现十进制数n和二进制数之间的转换-学生成绩管理-拓扑排序》由会员分享,可在线阅读,更多相关《课程设计报告-实现十进制数n和二进制数之间的转换-学生成绩管理-拓扑排序(27页珍藏版)》请在金锄头文库上搜索。

1、第 1 页上海应用技术学院课程设计报告课程名称 数据结构课程设计 设计题目 数据结构课程设计 院系 计算机科学与信息工程学院 专业游戏软件制作与开发 班级 姓名 学号 指导教师 日期 2016-1-14 一. 目的与要求1. 巩固和加深对常见数据结构的理解和掌握2. 掌握基于数据结构进行算法设计的基本方法3. 掌握用高级语言实现算法的基本技能4. 掌握书写程序设计说明文档的能力5. 提高运用数据结构知识及高级语言解决非数值实际问题的能力二. 课程设计内容说明1. 项目一(1) 对设计任务内容的概述实现十进制数 N 和二进制数之间的转换。(2) 需求分析或功能描述输入相应的各式正确的数值(可以是

2、混合小数的形式) ,程序按照设定的算法执行后,给出相对应的进制数数值,对于输入数据的合法性可以不做检查。采用栈。(3) 概要设计或程序流程图内容:利用栈实现十进制和其他任意进制数的任意转换输出问题 进制转换原理:N = (N div d) *d + N mod d(其中:div 为整除运算,mod 为求余运算) 步骤: 1 定义栈数据类型,采用链式存储结构实现 2 链栈基本操作函数原型声明 3 初始化栈 4 输入栈 5 输出栈 6 判空栈 7 自定义实现进制转换函数 8 数据调试 9 程序结束 开始第 2 页(4) 详细设计或源代码说明#define STACK_INIT_SIZE 100 /

3、存储空间初始分配量 #define STACKINCREMENT 10 /存储空间分配增量 #define ERROR 0 #define OVERFLOW -2 #include #include#include #include #include #includemath.h typedef int SElemType; typedef struct SElemType *base;/ 在栈构造之前和销毁之后,base 的值为 NULL SElemType *top;/ 栈顶指针 int StackSize; /当前已分配的存储空间 ,以元素为单位 SqStack1; void InitS

4、tack(SqStack1 *s) /初始化栈 s-base =(SElemType*)malloc (STACK_INIT_SIZE * sizeof(SElemType); if(!s-base) exit(OVERFLOW); s-top=s-base; s-StackSize= STACK_INIT_SIZE; void Push(SqStack1 *s,SElemType e) / 输入栈 if (s-top-s-base=s-StackSize) s-base=(SElemType *) realloc (s-base,(s-创建栈数制转换函数输出结果第 3 页StackSize+

5、STACKINCREMENT)*sizeof(SElemType); /栈满,追加存储空间 if(!s-base) exit(OVERFLOW); /若内存中没有 s-StackSize+STACKINCREMENT 个连续空间则分配失败 s-top=s-base+s-StackSize; s-StackSize+=STACKINCREMENT; *s-top+ =e; int Pop(SqStack1 *s,SElemType *e) /输出栈 if (s-top=s-base) return ERROR;s-top=s-top-1; *e = *s-top; int StackEmpty(

6、SqStack1 s) /判空栈 if (s.top =s.base) return 1; else return 0; void Conversion(int N,int m) SElemType e; SqStack1 s; InitStack( while(N) Push( printf(转换后的%d 进制数为:,m); while(StackEmpty(s)!=1) Pop( else printf(%d,e); printf(n); void squnion() int n,m; printf(请输入一个十进制数: ); scanf(%d, printf(需要转成的进制 m:); s

7、canf(%d, Conversion(n,m); void linkunion() int a,i,k=-1,y=0; printf(n 请输入一个正确的二进制数:); scanf(%d, printf(n%d 十进制为 :,a); while(a!=0) i=a%10; k+; y+=i*pow(2,k); a=a/10; printf(%dn,y); 第 4 页void list1()int i,flag=1,k;while(flag)printf(*n); printf(t1:十进制转换为任意进制n);printf(t2:二进制转换为十进制n);printf(t0:返回n);print

8、f(t 请选择:n);printf(*n); while (true)scanf(%d,if (i=0 & i #include #include struct Student char name10; char subject10; int num; int grade; Student *next; ; void StuMain(); /学生成绩管理系统的主函数,由 main 函数调用 void StuInput(Student *); /学生成绩管理系统的输入函数,由主函数调用 void StuSelect(Student *); /学生成绩管理系统的查找函数,由主函数调用 void S

9、tuAlter(Student *); /学生成绩管理系统的修改函数,由主函数调用 void StuInsert(Student *); /学生成绩管理系统的插入函数,由主函数调用 void StuDelect(Student *); /学生成绩管理系统的删除函数,由主函数调用 void StuSave(Student *); /学生成绩管理系统的存储函数,由主函数调用 void StuOutput(Student *p); /输出函数 int StuImport(Student *head,Student *p); /输入函数 void StuOutput(Student *p) /打印函数

10、,将链表的该节点信息输出 printf(学生姓名:); printf(%s ,p-name); printf(学生号:); printf(%d ,p-num); printf(科目: ); printf(%s ,p-subject); 第 9 页printf(学生成绩:); printf(%d n,p-grade); int StuImport(Student *head,Student *p) Student *Opinion=(Student *)malloc(sizeof(Student); /用来判断输入节点中学生号是否有重复 Opinion=head-next; printf(学生姓

11、名:n); scanf(%s,p-name); printf(学生号:n); scanf(%d, printf(科目:n); scanf(%s,p-subject); if(Opinion!=NULL) if(Opinion-num=p-num&!strcmp(Opinion-subject,p-subject) printf(该学生这门科目已有成绩,请重新输入n); return 1; Opinion=Opinion-next; printf(学生成绩:n); scanf(%d, return 0; void list2() StuMain(); void StuMain() char de

12、cide=y; /定义 while 变量,函数是否继续进行 int num=1; /定义 switch 变量,函数跳转到哪个子函数 Student *head; /定义链表的头指针 head=(Student *)malloc(sizeof(Student); /给头指针开辟空间 head-next=NULL; /初始化头指针 while(decide!=n) printf( *n); printf( * 1 输入 2 查找 3 修改 4 插入 *n); printf( * 5 删除 6 存储 7 退出 *n); printf( *n); scanf(%d, switch(num) case 1: StuInput(head); break; case 2: StuSelect(head); break; case 3: StuAlter(head); break; case 4: StuInsert(head);

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

当前位置:首页 > 办公文档 > 解决方案

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