




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计课程设计所选题目:1运动会分数统计*,2一元多项式计算*,3订票系统4猴子选大王5最小生成树问题*6 建立一个二叉排序树一、 进入MAINMENU运行后可得如下界面,根据提示选择所要运行的题目编号,便可直接运行。 menu* 1、运动会记分 * 2、一元多项 * 3、猴子选大王 * 4、最小生成树 * 5、订票系统 * 6、二叉树排序 * Please choose:_需求分析:可直接通过运行主程序进入各菜单并运行。主程序如下:#include dpxt.c#include ydh.c#include dxs.c#include hz.c#include zx.c#include ec.cmain()void ydh(); 运动会记分 void dxs(); 一元多项式 void hz(); 猴子选大王 void zx(); 最小生成树 void dpxt(); 订票系统 void ec(); 二叉树排序int x,y,m;for(x=15;x=62;x+)gotoxy(x,5);printf(*);gotoxy(x,19);printf(*);for(y=6;y=18;y+)gotoxy(15,y);printf(*);gotoxy(62,y);printf(*);gotoxy(33,3);printf(menu);gotoxy(18,7);printf(1.运动会记分);gotoxy(18,9);printf(2.一元多项式);gotoxy(18,11);printf(3.猴子选大王);gotoxy(18,13);printf(4.最小生成树);gotoxy(18,15);printf(5.订票系统);gotoxy(18,17);printf(6.二叉树排序);gotoxy(34,20);printf(please choose);loop: scanf(%d,&m);switch(m)case 0: break;case 1: ydh();break;case 2: dxs(); break;case 3: hz(); break;case 4: zx(); break;case 5: dpxt(); break;case 6: ec();break;default:gotoxy(25,22);printf(error,please rechoose);goto loop;二、 运动会分数统计任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20)功能要求:1).可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。存储结构:在本程序中,对不同的对象采取不同的存储结构,对参赛学校采取链式存储结构,而对于参赛运动员采取一个结构就可以了。算法分析:(1)分别先对参赛学校变量、各学校所取得的每项成绩的项目号、名次、成绩、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分进行定义。(2)统计各学校总分;按学校编号排序输出;按学校总分排序输出;按男女团体总分排序输出;按学校编号查询学校某个项目的情况;按项目编号查询取得前三或前五名的学校;源程序:# include# define MAX 50# define NULL 0typedef struct node1 int school; /*学校编号*/ int record; /*项目成绩*/ struct node1 *next; /*链域*/ Schools;typedef struct int item; /*项目编号*/ Schools *firstschool; /*链域指向链表中第一个结点*/ ITEM;typedef struct int z; /* 项目总数 */ ITEM aMAX;ALLitems;typedef struct node2 int item; /*该学校获奖的项目*/int record; /*项目成绩*/ struct node2 *next; /*链域*/ Items;typedef struct int school; /*学校编号*/int score; /*学校总分*/ int boys; /*男团体总分*/ int girls; /*女团体总分*/ Items *firstitem; /*链域指向链表中第一个获奖项目的结点*/ SCHNode;typedef struct int n; /* 学校总数 */ SCHNode bMAX;ALLNode;ALLitems *g1;ALLNode *g2;void funct1(ALLitems *g1,ALLNode *g2) /* 输入各个项目成绩 */ Schools *p1; Items *p2; int i,j,k,m,w,h,x; printf(n* 输入各个项目成绩 *n); printf(输入男子项目总数m:); scanf(%d,&m); if(m20) printf(输入有误,m是20以内的整数,请重新输入:); scanf(%d,&m); printf(输入女子项目总数w:); scanf(%d,&w); if(w20) printf(输入有误,w是20以内的整数,请重新输入:); scanf(%d,&w); printf(输入参加运动会的学校总数n:); scanf(%d,&g2-n); if(g2-nn20) printf(输入有误,n是20以内的整数,请重新输入:); scanf(%d,&g2-n); g1-z=m+w; printf(则项目编号为男子1-%d,女子%d-%d,m,m+1,g1-z); printf(nn*记录运动会成绩*n(输入0标志结束); for(k=1;kz;k+) /* 对两个邻接表置初态 */ g1-ak.item=k; g1-ak.firstschool=NULL; for(k=1;kn;k+) g2-bk.school=k; g2-bk.firstitem=NULL; g2-bk.score=g2-bk.boys=g2-bk.girls=NULL; g2-b0.score=g2-b0.boys=g2-b0.girls=NULL; while(i!=0) printf(n项目:); scanf(%d,&i); if(i!=0) printf(1.前三名 2.前五名n); printf(请选择:); scanf(%d,&j); if(j!=1&j!=2) printf(输入有误,请重新选择:); scanf(%d,&j); if(j=1) /* 该项目只有前三名时执行此语句 */ h=3; do printf(第%d名:学校,h); scanf(%d,&x); p1=(Schools *)malloc(sizeof(Schools); p1-school=x; p2=(Items *)malloc(sizeof(Items); p2-item=i; if(h=3) p2-record=p1-record=2; if(h=2) p2-record=p1-record=3; if(h=1) p2-record=p1-record=5; p1-next=g1-ai.firstschool; g1-ai.firstschool=p1; p2-next=g2-bx.firstitem; g2-bx.firstitem=p2; g2-bx.score=g2-bx.score+p2-record; /* 累计总分 */ if(ibx.boys=g2-bx.boys+p2-record;/* 累计男团体总分 */ else g2-bx.girls=g2-bx.girls+p2-record; /* 累计女团体总分 */ h-; while(x!=0&h!=0); if(j=2) /* 该项目有前五名时执行此语句 */ h=5; do printf(第%d名:学校,h); scanf(%d,&x); p1=(Schools *)malloc(sizeof(Schools); p1-school=x; p2=(Items *)malloc(sizeof(Items); p2-item=i; if(h=5) p2-record=p1-record=1; if(h=4) p2-record=p1-record=2; if(h=3) p2-record=p1-record=3; if(h=2) p2-record=p1-record=5; if(h=1) p2-record=p1-record=7; p1-next=g1-ai.firstschool; g1-ai.firstschool=p1; p2-next=g2-bx.firstitem; g2-bx.firstitem=p2; g2-bx.score=g2-bx.score+p2-record; /* 累计总分 */ if(ibx.boys=g2-bx.boys+p2-record;/* 累计男团体总分 */ else g2-bx.girls=g2-bx.girls+p2-record;/* 累计女团体总分 */ h-; while(x!=0&h!=0); void save() /* 存储数据文件 */ FILE *fp1,*fp2; if(fp1=fopen(sports1,wb)=NULL) printf(cannot open file.n); return; if(fwrite(g1,sizeof(ALLitems),1,fp1)!=1) printf(file write error.n); fclose(fp1); if(fp2=fopen(sports2,wb)=NULL) printf(cannot open file.n); return; if(fwrite(g2,sizeof(ALLNode),1,fp2)!=1) printf(file write error.n); fclose(fp2);void funct2(ALLNode *g2) /* 输出各学校总分 */ int k; printf(nntt* 输出各学校总分 *n); printf(学校编号t总分n); for(k=1;kn;k+) printf( %dtt %dn,k,g2-bk.score);printf(n); void funct3(ALLNode *g2) /* 按学校编号排序输出 */ int k; Items *p2; printf(nntt* 按学校编号排序输出 *n); printf(学校编号ttt获奖情况n); for(k=1;kn;k+) printf( %dt,k); p2=g2-bk.firstitem; while(p2!=NULL) printf(项目%d:得%d分 ,p2-item,p2-record); p2=p2-next; printf(n); printf(n);void funct4(ALLNode *g2) /* 按学校总分排序输出 */ int i,j,k; printf(nntt* 按学校总分排序输出 *n); printf(学校编号t总分n); for(i=2;in;i+) g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.scorebj.score&j0) g2-bj+1.score=g2-bj.score; g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf( %d tt%dn,g2-bk.school,g2-bk.score);void funct5(ALLNode *g2) /* 按男团体总分排序输出 */ int i,j,k; printf(n* 按男团体总分排序输出 *n); printf(学校编号t男团体总分n); for(i=2;in;i+) g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.boysbj.boys&j0) g2-bj+1.score=g2-bj.score; g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf( %dtt %dn,g2-bk.school,g2-bk.boys);void funct6(ALLNode *g2) /* 按女团体总分排序输出 */ int i,j,k; printf(n* 按女团体总分排序输出 *n); printf(学校编号t女团体总分n); for(i=2;in;i+) g2-b0.score=g2-bi.score; g2-b0.boys=g2-bi.boys; g2-b0.girls=g2-bi.girls; g2-b0.school=g2-bi.school; j=i-1; while(g2-b0.girlsbj.girls&j0) g2-bj+1.score=g2-bj.score; g2-bj+1.boys=g2-bj.boys; g2-bj+1.girls=g2-bj.girls; g2-bj+1.school=g2-bj.school; j-; g2-bj+1.score=g2-b0.score; g2-bj+1.boys=g2-b0.boys; g2-bj+1.girls=g2-b0.girls; g2-bj+1.school=g2-b0.school; for(k=1;kn;k+) printf( %dtt %dn,g2-bk.school,g2-bk.girls);void funct7(ALLNode *g2) /* 按学校编号查询学校某个项目情况 */ int i,j,k; Items *p2; printf(n * 按学校编号查询学校某个项目情况 *n); printf(输入要查询的学校编号:); scanf(%d,&i); printf(输入要查询的项目编号:); scanf(%d,&j); p2=g2-bi.firstitem; while(p2!=NULL) if(p2-item= =j) printf(学校编号:%dt项目%d:得%d分n,i,p2-item,p2-record); p2=p2-next; printf(n);void funct8(ALLitems *g1) /* 按项目编号查询取得名次的学校 */ int i,k; Schools *p1; printf(n* 按项目编号查询取得名次的学校 *n); printf(输入要查询的项目编号:); scanf(%d,&i); printf(项目编号ttt取得名次的学校n); printf( %dt,i); p1=g1-ai.firstschool; while(p1!=NULL) printf( 学校%d:得%d分 ,p1-school,p1-record); p1=p1-next; printf(nn); main() int t; ALLitems *g1; ALLNode *g2; while(1) printf(运动会分数统计n); printf(n* * * * * * * * * * * * * * * * * * * * * *n); printf(n1.输入各个项目成绩并存储文件n); printf(n2.统计各学校总分n); printf(n3.按学校编号排序输出n); printf(n4.按学校总分排序输出n); printf(n5.按男团体总分排序输出n); printf(n6.按女团体总分排序输出n); printf(n7.按学校编号查询学校某个项目情况n); printf(n8.按项目编号查询取得名次的学校n); printf(n0.退出n); printf(n* * * * * * * * * * * * * * * * * * * * * *n); printf(n请选择(0-8):); loop:scanf(%d,&t); switch(t) case 1:funct1(g1,g2);save();break; case 2:funct2(g2);break; case 3:funct3(g2);break; case 4:funct4(g2);break; case 5:funct5(g2);break; case 6:funct6(g2);break; case 7:funct7(g2);break; case 8:funct8(g1);break; case 0:exit(0); default: printf(输入有误,请重新选择:); goto loop; 程序结果如下:运动会分数统计 * * * * * * * * * * * * * * * * * * * * * * 1.输入各个项目成绩并存储文件 2.统计各学校总分 3.按学校编号排序输出 4.按学校总分排序输出 5.按男团体总分排序输出 6.按女团体总分排序输出 7.按学校编号查询学校某个项目情况 8.按项目编号查询取得名次的学校 0.退出 * * * * * * * * * * * * * * * * * * * * * * 请选择(0-8):1 * 输入各个项目成绩 *输入男子项目总数m:25输入有误,m是20以内的整数,请重新输入:3输入女子项目总数w:51输入有误,w是20以内的整数,请重新输入:3输入参加运动会的学校总数n:25输入有误,n是20以内的整数,请重新输入:4 则项目编号为男子1-3,女子4-6*记录运动会成绩*(输入0标志结束)项目:11.前三名 2.前五名请选择:3输入有误,请重新选择:1第3名:学校1第2名:学校4第1名:学校3项目:21.前三名 2.前五名请选择:2第5名:学校3第4名:学校1第3名:学校4第2名:学校2第1名:学校1项目:31.前三名 2.前五名请选择:1第3名:学校1第2名:学校3第1名:学校2项目:41.前三名 2.前五名请选择:2第5名:学校2第4名:学校3第3名:学校4第2名:学校1第1名:学校4项目:51.前三名 2.前五名请选择:2第5名:学校1第4名:学校2第3名:学校1第2名:学校2第1名:学校3项目:61.前三名 2.前五名请选择:1第3名:学校1第2名:学校3第1名:学校4项目:0 运动会分数统计 * * * * * * * * * * * * * * * * * * * * * * 1.输入各个项目成绩并存储文件 2.统计各学校总分 3.按学校编号排序输出 4.按学校总分排序输出 5.按男团体总分排序输出 6.按女团体总分排序输出 7.按学校编号查询学校某个项目情况 8.按项目编号查询取得名次的学校 0.退出 * * * * * * * * * * * * * * * * * * * * * * 请选择(0-8):2 * 输出各学校总分 *学校编号 总分 1 24 2 18 3 21 4 21 运动会分数统计 * * * * * * * * * * * * * * * * * * * * * * 1.输入各个项目成绩并存储文件 2.统计各学校总分 3.按学校编号排序输出 4.按学校总分排序输出 5.按男团体总分排序输出 6.按女团体总分排序输出 7.按学校编号查询学校某个项目情况 8.按项目编号查询取得名次的学校 0.退出 * * * * * * * * * * * * * * * * * * * * * * 请选择(0-8):3 * 按学校编号排序输出 *学校编号 获奖情况 1 项目1:得2分 项目2:得5分 项目2:得2分 项目3:得2分 项目4:得5分 项目5:得3分 项目5:得1分 项目6:得2分 2 项目2:得5分 项目3:得5分 项目4:得1分项目5:得5分 项目5:得2分 3 项目1:得5分 项目2:得1分 项目3:得3分 项目4:得2分 项目5:得7分 项目6:得3分4 项目1:得3分 项目2:得3分 项目3:得7分 项目4:得3分 项目5:得5分 运动会分数统计 * * * * * * * * * * * * * * * * * * * * * * 1.输入各个项目成绩并存储文件 2.统计各学校总分 3.按学校编号排序输出 4.按学校总分排序输出 5.按男团体总分排序输出 6.按女团体总分排序输出 7.按学校编号查询学校某个项目情况 8.按项目编号查询取得名次的学校 0.退出 * * * * * * * * * * * * * * * * * * * * * * 请选择(0-8):4 * 按学校总分排序输出 *学校编号 总分 2 18 3 21 4 21 1 24 运动会分数统计 * * * * * * * * * * * * * * * * * * * * * * 1.输入各个项目成绩并存储文件 2.统计各学校总分 3.按学校编号排序输出 4.按学校总分排序输出 5.按男团体总分排序输出 6.按女团体总分排序输出 7.按学校编号查询学校某个项目情况 8.按项目编号查询取得名次的学校 0.退出 * * * * * * * * * * * * * * * * * * * * * * 请选择(0-8):5 * 按男团体总分排序输出 *学校编号 男团体总分 4 6 3 9 2 10 1 13 运动会分数统计 * * * * * * * * * * * * * * * * * * * * * * 1.输入各个项目成绩并存储文件 2.统计各学校总分 3.按学校编号排序输出 4.按学校总分排序输出 5.按男团体总分排序输出 6.按女团体总分排序输出 7.按学校编号查询学校某个项目情况 8.按项目编号查询取得名次的学校 0.退出 * * * * * * * * * * * * * * * * * * * * * * 请选择(0-8):6 * 按女团体总分排序输出 *学校编号 女团体总分 2 8 1 11 3 12 4 15 运动会分数统计 * * * * * * * * * * * * * * * * * * * * * * 1.输入各个项目成绩并存储文件 2.统计各学校总分 3.按学校编号排序输出 4.按学校总分排序输出 5.按男团体总分排序输出 6.按女团体总分排序输出 7.按学校编号查询学校某个项目情况 8.按项目编号查询取得名次的学校 0.退出 * * * * * * * * * * * * * * * * * * * * * * 请选择(0-8):7 * 按学校编号查询学校某个项目情况 *输入要查询的学校编号:1输入要查询的项目编号:2学校编号:1 项目2:得7分学校编号:1 项目2:得2分 运动会分数统计 * * * * * * * * * * * * * * * * * * * * * * 1.输入各个项目成绩并存储文件 2.统计各学校总分 3.按学校编号排序输出 4.按学校总分排序输出 5.按男团体总分排序输出 6.按女团体总分排序输出 7.按学校编号查询学校某个项目情况 8.按项目编号查询取得名次的学校 0.退出 * * * * * * * * * * * * * * * * * * * * * * 请选择(0-8):8 * 按项目编号查询取得名次的学校 *输入要查询的项目编号:4项目编号 取得名次的学校4 学校4:得7分 学校1:得5分 学校4:得3分 学校3:得2分 学校2:得1分 运动会分数统计 * * * * * * * * * * * * * * * * * * * * * * 1.输入各个项目成绩并存储文件 2.统计各学校总分 3.按学校编号排序输出 4.按学校总分排序输出 5.按男团体总分排序输出 6.按女团体总分排序输出 7.按学校编号查询学校某个项目情况 8.按项目编号查询取得名次的学校 0.退出 * * * * * * * * * * * * * * * * * * * * * * 请选择(0-8):0三、一元多项式计算需求分析:能够按指数降序排列建立单链表,并输出。 能够完成两个多项式的相加、相减,并将结果输出。概要设计:对于一元多项式,为了适应一元多项式相邻项的指数可能相差很大,或经常增减非零项,固采用链表将比较适宜。链表中的每个结点由三个域组成:系数域 指数域 指针域定义如下:typedef struct node int coef,exp; struct node * link;polyNode;实现算法的简要描述:建立两个一元多项式按照指数降序排列多项式两个多项式相加,相减,并指数按降序输出结果设p、q分别指向A、B两个多项式的当前搜索结点。运算规则主要是:加法: (1)如果p-exp=q-exp:则将系数相加减,若和数不为零,则修改p结点中的系数域,归还q 结点;若和数为零,则归还p和q结点。(2)如果p-expq-exp:则把q结点插在p结点之前,q指针在原链表上后移。(3)如果p-expexp:则p指针后移减法:1、如果p-exp=q-exp,则将系数相减,若和数不为0,则修改p结点中的系数域,归还q结点;若和数为0时,则归还p和q结点;2、如果p-expexp,则把q结点插在p结点之前,q指针在原链表上后移。3、如果p-expq-exp,则p指针后移。最后打印出原多项式和相加、相减后的多项式。详细设计:#include typedef struct node7int coef,exp; struct node7 *link;PolyNode; /*定义结点类型*/PolyNode *create( ) PolyNode *h,*p,*q,*r; int exp; h=(PolyNode *)malloc(sizeof(PolyNode); /*建立头结点*/ p=(PolyNode *)malloc(sizeof(PolyNode); /*建立第一个结点*/ printf(分别输入系数和指数: ); /*输入多项式的系数和指数*/ s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年节能宣传周知识竞赛题库及答案
- 初级注册安全工程师实务试题及答案
- 热电厂技术监督体系
- 小学语文教研解读
- 污水处理厂常用化学药品
- 品牌会员沙龙活动策划与执行
- 渔业养殖与加工技术交流会创新创业项目商业计划书
- 动物疾病诊断与防治服务创新创业项目商业计划书
- 美食直播烹饪创新创业项目商业计划书
- 医院诊疗组设置方案(3篇)
- 风险承担合同模板
- iso220002024食品安全管理体系标准
- 2024小学数学义务教育新课程标准(2022版)必考题库附含答案
- GB 3836.15-2024爆炸性环境第15部分:电气装置设计、选型、安装规范
- 新版计量认证质量手册
- 智慧监狱智能化整体解决方案
- 有机农业种植合同
- DZ/T 0462.1-2023 矿产资源“三率”指标要求 第1部分:煤(正式版)
- 临沧市市级单位遴选(选调)工作人员笔试真题2021
- 2024广州市工业和信息化委员会直属事业单位招聘4人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 大学英语精读3in-my-day
评论
0/150
提交评论