ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:216.89KB ,
资源ID:6655287      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6655287.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计报告.docx

1、数据结构课程设计报告课程设计成绩总评成绩指导老师签名 数据结构课程设计报告学院(系): 班 级: 学生姓名: 学号: 指导教师: 时间:从 2013 年12 月30 日到2013年1 月4 日一、课程设计概述:本次数据结构课程设计共完成两道题:一元稀疏矩阵多项式计算器、成绩分析问题。使用语言:C 编译环境:Visual 6.0 c+。二、课程设计题目一实验内容一元稀疏多项式计算器问题描述设计一个一元稀疏多项式简单计算器。基本要求一元稀疏多项式简单计算器的基本功能是:(1)输入并建立多项式;(2)输出多项式,输出形式为整数序列:n,c1,e1, c2,e2, cn,en,其中n是多项式的项数,c

2、i,ei,分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相加,建立多项式a+b;(4)多项式a和b相减,建立多项式a-b;(5)计算多项式在x处的值。(6)计算器的仿真界面。(选做)测试数据(1) (2x+5x8-3.1x11)+(7-5x8+11x9) = (-3.1x11+11x9+2x+7)(2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2-x2+7.8x15)=(-7.8x15-1.2x9-x+12x-3)(3) (1+x+x2+x3+x4+x5)+(-x3-x4)=(x5+x2+x+1)(4) (x+x3)+(-x-x3)=0(5) (x+x

3、2+x3)+0=( x3+ x2+ x)实现提示用带表头结点的单链表存储多项式,多项式的项数存放在头结点中。 概要设计 void swap(dnode *p,dnode *q) /交换p,q指针所指的指数和系数 void sort(dnode *h) /用冒泡法对链表每一项进行排序 dnode *con(dnode *a,dnode *b) /稀疏多项式的计算 void disp(dnode *h) /输出结果存储结构typedef struct node /结构体类型 float c; int e; /c、e分别为多项式的系数和指数 struct node *next;dnode;流程图冒泡

4、排序流程图输入10个数组给a0到a9j由0变到8共进行9次循环进行9-j次比较真aiai+1假ai与ai+1互换保持不变输出a0到a9程序主体流程详细设计#include #include #include #define NULL 0typedef struct node float c; int e; /c、e分别为多项式的系数和指数 struct node *next;dnode;dnode *creat() /用链表存放多项式 dnode *h,*p; int e,i,n; /n为多项式的项数 float c; h=(dnode*)malloc(sizeof(dnode); /分配头结

5、点 h-next=NULL; do /当n小于1,则重新输入 scanf( %d,&n); while(n1); for(i=1;ic=c; p-e=e; p-next=h-next; h-next=p; /用头插法建立链表 return h;void swap(dnode *p,dnode *q) /交换p,q指针所指的指数和系数 float temp; int temp1; temp1=p-e;p-e=q-e;q-e=temp1; temp=p-c;p-c=q-c;q-c=temp;void sort(dnode *h) /用冒泡法对链表每一项进行排序 dnode *pi,*p1,*p,*

6、q; p=h-next; while(p-next!=NULL) p=p-next; pi=p; while(pi!=h-next) p1=h-next; for(p=h-next;p!=pi;p=p-next) q=p-next; if(p-eq-e) swap(p,q); p1=p; pi=p1; dnode *con(dnode *a,dnode *b) /稀疏多项式的计算 int select; float x; dnode *p1,*p2,*p,*t; /t为结果链表的表头 t=(dnode *)malloc(sizeof(dnode); t-next=NULL; printf(1.

7、a+btt2.a-bn); printf(请选择要进行的运算:); scanf(%d,&select); p1=a-next; p2=b-next; while(p1&p2) if(p1-e=p2-e) /指数相同 if(select=1) x=p1-c+p2-c; else x=p1-c-p2-c; if(x!=0) p=(dnode *)malloc(sizeof(dnode); p-e=p1-e; p-c=x; p-next=t-next; t-next=p; p1=p1-next; p2=p2-next; else if(p1-ep2-e) /p1的指数大于p2的指数 p=(dnode

8、 *)malloc(sizeof(dnode); p-e=p2-e; if(select=1) p-c=p2-c; else p-c=(-1)*p2-c; p-next=t-next; t-next=p; p2=p2-next; else /p2的指数大于p1的指数 p=(dnode *)malloc(sizeof(dnode); p-e=p1-e; p-c=p1-c; p-next=t-next; t-next=p; p1=p1-next; while(p1!=NULL) /p2为空,p1不为空时 p=(dnode *)malloc(sizeof(dnode); p=p1; p1=p1-ne

9、xt; p-next=t-next; t-next=p; while(p2!=NULL) /p1为空,p2不为空时 p=(dnode *)malloc(sizeof(dnode); p-e=p2-e; if(select=2) p-c=(-1)*p2-c; else p-c=p2-c; p2=p2-next; p-next=t-next; t-next=p; return t;void disp(dnode *h) /输出结果 dnode *p; p=h-next; if(p=NULL) printf(0n); exit(0); while(p!=NULL) printf( %3.1f,%d)

10、,p-c,p-e); p=p-next; printf(n);void main() dnode *a,*b,*c; printf(请输入多项式a的项数n: ); a=creat(); sort(a); printf(请输入多项式b的项数n: ); b=creat(); sort(b); printf(n*nn); c=con(a,b); disp(c); getch();调试分析 本程序的主要操作在于对链表的操作,结构体的应用以及排序的应用,只要细心多加调试,是比较容易实现所要求的功能的。 运行结果及分析多项式的输入多项式的运算程序无异常。题目二 实验内容成绩分析问题问题描述 录入、保存一个

11、班级学生多门课程的成绩,并对成绩进行分析。基本要求 1.通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat 2.对文件input.dat中的数据进行处理,要求具有如下功能: a.按各门课程成绩排序,并生成相应的文件输出 b.计算每人的平均成绩,按平均成绩排序,并生成文件 c.求出各门课程的平均成绩、最高分、最低分、不及格人数、 6069分人数、7079分人数、8089分人数、90分以上人数 d.根据姓名或学号查询某人的各门课成绩,重名也要能处理 3.界面美观测试数据测试数据如下表所示。 成绩表学号姓名数学英语计算机001王放787790002张强896788003李浩5666

12、78004黄鹂兵898685005李浩678876006陈利风455467007尚晓787670概要设计 snode* sort_ave(snode* head) /平均分选择排序 snode* sort_math(snode* head) /数学成绩选择排序 snode* sort_english(snode* head) /英语成绩选择排序 snode* sort_computer(snode* head) /计算机成绩选择排序 void output_save(snode *p) /保存为文件void research(snode *head) /查询各科的最高分、最低分以及平均分并求得

13、各科分别在在90+、8089、7079、6069和60-的人数void nameFind(snode *head,char name) /按姓名查找void exchange_to_list(snode* head) /信息查询主要功能表int CreateFile() /创建文件int SaveStudent(snode* head) /写入及保存文件snode* ReadStudentInfo() /读取文件信息void print_student(snode* head) /输出学生信息snode* IsStudentExist(snode *head,char num) /判断学生信息

14、是否存在snode* student_information_insert(snode * head) /学生信息输入 存储结构struct studentinfo /数据记录类型 char num10; /学号 char name10; /姓名 int Math; /数学成绩 int English; / 英语成绩 int Computer; /计算机成绩 float Ave; /平均成绩;typedef struct Node1 /链表 struct studentinfo student; struct Node1* next;snode;流程图功能表流程图层次结构及调用关系图详细设计#

15、include#include#include#includevoid print_student(head);struct studentinfo /数据类型 char num10; /学号 char name10; /姓名 int Math; /数学成绩 int English; / 英语成绩 int Computer; /计算机成绩 float Ave; /平均成绩;typedef struct Node1 struct studentinfo student; struct Node1* next;snode;snode* sort_ave(snode* head) /平均分选择排序

16、snode *p,*q,*tail,*s; tail=NULL; while(head-next!=tail) p=head; q=p-next; if(p-student.Avestudent.Ave) p-next=q-next; q-next=p; head=q; p=head; q=head-next; while(q-next!=tail) if(p-next-student.Avenext-student.Ave) s=q-next; p-next=q-next; q-next=q-next-next; p-next-next=q; q=s; p=p-next; q=q-next;

17、 tail=q; return (head); snode* sort_math(snode* head) /数学成绩选择排序 snode *p,*q,*tail,*s; tail=NULL; while(head-next!=tail) p=head; q=p-next; if(p-student.Mathstudent.Math) p-next=q-next; q-next=p; head=q; p=head; q=head-next; while(q-next!=tail) if(p-next-student.Mathnext-student.Math) s=q-next; p-next

18、=q-next; q-next=q-next-next; p-next-next=q; q=s; p=p-next; q=q-next; tail=q; return (head); snode* sort_english(snode* head) /英语成绩选择排序 snode *p,*q,*tail,*s; tail=NULL; while(head-next!=tail) p=head; q=p-next; if(p-student.Englishstudent.English) p-next=q-next; q-next=p; head=q; p=head; q=head-next;

19、while(q-next!=tail) if(p-next-student.Englishnext-student.English) s=q-next; p-next=q-next; q-next=q-next-next; p-next-next=q; q=s; p=p-next; q=q-next; tail=q; return (head); snode* sort_computer(snode* head) /计算机成绩选择排序 snode *p,*q,*tail,*s; tail=NULL; while(head-next!=tail) p=head; q=p-next; if(p-s

20、tudent.Computerstudent.Computer) p-next=q-next; q-next=p; head=q; p=head; q=head-next; while(q-next!=tail) if(p-next-student.Computernext-student.Computer) s=q-next; p-next=q-next; q-next=q-next-next; p-next-next=q; q=s; p=p-next; q=q-next; tail=q; return (head); void output_save(snode *p) /保存为文件 FI

21、LE*fp; char filename20; int n=0; memset(filename,0,20); printf(请输入你要将数据保存的文件名:); scanf(%s,filename); getchar(); if(fp=fopen(filename,wb)=NULL) printf(can not open the file!n); exit(0); while(p!=NULL) fprintf(fp,%s %14s %4d %8d %10d %10.1fn,p-student.num,p-student.name,p-student.Math,p-student.Englis

22、h,p-student.Computer,p-student.Ave); p=p-next; printf(保存成功); fclose(fp);void research(snode *head) /查询各科的最高分、最低分以及平均分并求得各科 snode * p1; /分别在在90+、8089、7079、6069和60-的人数 snode* p2 = head; int sum3=0; int min3=100,100,100; int max3=0; float ave3=0; int num35=0; int i,n=0,m=0; p1=NULL; p1=head; if(head=NU

23、LL)printf(the list is null!n); while(p2!=NULL) /找到本链表的末尾 p2 = p2-next; n+; while(1) printf( n); printf( | 1查数学课程 |n); printf( | 2查英语课程 |n); printf( | 3查计算机课程 |n); printf( | 0返回上级菜单 |n); printf( n); printf(请选择:); scanf(%d,&i); p1=head; if(i=1) while(i=1&mstudent.Math; if(p1-student.Mathmax0) max0=p1-

24、student.Math; if(p1-student.Mathstudent.Math; if(p1-student.Mathstudent.Math=60&p1-student.Mathstudent.Math=70&p1-student.Mathstudent.Math=80&p1-student.Mathstudent.Math=90) num04+; p1=p1-next; m+; m=0; ave0=(float)sum0/n; printf(数学课程的最高分为:); printf( %dn,max0); printf(数学课程的最低分为:); printf( %dn,min0); printf(数学课程的平均分为:); printf( %.1fn,ave0); printf(数学课程90分以上的人数为:); printf( %dn,num

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1