《运动会分数统计系统数据结构课程设计复习课程.pdf》由会员分享,可在线阅读,更多相关《运动会分数统计系统数据结构课程设计复习课程.pdf(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 运动会分数统计系统 数据结构课程设计 精品文档 收集于网络,如有侵权请联系管理员删除 石家庄经济学院 华信学院 课程设计报告 学 院:专 业:班 级:学 号:姓 名:运动会分数统计系统的设计与实现 精品文档 收集于网络,如有侵权请联系管理员删除 一问题描述 大学作为一个提供学生全面发展的高等教育机构,不仅要培养学生的学习能力,而且更要注重学生的德智体美全面发展。在大学中有很多丰富多彩的比赛和活动,例如运动会,演讲比赛,歌唱比赛,书法比赛等,在比赛和竞争中,我们的这些素质和能力更容易得到培养提升。但是比赛最后的分数统计和查询往往是举办者头疼的事情,分数的统计和查询需要快速准确,因此我们设计了这
2、个运动会分数统计系统,以方便分数的统计查询。参加运动会的 n个学校编号为 1n。比赛分成 m个男子项目和 w 个女子项目,项目编号分别为 1m和 m+1m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为 7,5,3,2,1;还有些项目只取前三名,得分顺序为 5,3,2。写一个统计程序产生各种成绩单和得分报表。二需求分析 系统功能描述:(1)可以输入各个项目的前三名或前五名的成绩;(2)能统计各学校总分;(3)可以按学校编号或名称、学校总分、男女团体总分排序输出;(4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。三概要设计 3.1 链表结构的 A
3、DT 的定义 ADT List 数据对象:D=ai|aiElemSet,i=1,2,n,n0 数据关系:R1=|ai-1,aiD,i=2,n 精品文档 收集于网络,如有侵权请联系管理员删除 基本操作:InitList(&L)操作结果:构造一个空的线性表 L。GetElem(L,i,&e)初始条件:线性表 L 已存在,1iListLength(L)操作结果:用 e 返回 L 中第 i 个数据元素的值。LocateElem(L,e,compare()初始条件:线性表 L 已存在,compare()是数据元素判定函数。操作结果:返回 L 中第 1 个与 e 满足关系 compare()的数据元素的位
4、序。若这样的数据元素不存在,则返回值为 0。PriorElem(L,cur_e,&pre_e)初始条件:线性表 L 已存在。操作结果:若 cur_e 是 L 的数据元素,且不是第一个,则用 pre_e 返回它的前驱,否则操作失败,pre_e 无定义。NextElem(L,cur_e,&next_e)初始条件:线性表 L 已存在。操作结果:若 cur_e 是 L 的数据元素,且不是最后一个,则用 next_e 返回它的后继,否则操作失败,next_e 无定义。ListInsert(&L,I,e)精品文档 收集于网络,如有侵权请联系管理员删除 初始条件:线性表 L 已存在,1iListLength
5、(L)+1 操作结果:在 L 中第 i 个位置之前插入新的元素 e,L 是表长度加 1 ListTraverse(L,visit()初始条件:线性表 L 已存在。操作结果:依次对 L 的每个数据元素调用函数 visit()。一旦 visit()失败,则操作失败。ADT List 3.2 系统功能模块设计 精品文档 收集于网络,如有侵权请联系管理员删除 3.3 主要函数调用关系图 图 3-1运动会分数统计系统功能模块图 运动会分数统计系统 输入各学校名输入男子运动输入女子运动输入男子项目输入女子项目查询某校各个查询某校各个循环语句ListTraverse(ListTraverse(L,visit
6、()精品文档 收集于网络,如有侵权请联系管理员删除 3.4 主界面设计 图 3-2系统函数调用关系图 精品文档 收集于网络,如有侵权请联系管理员删除 为了实现运动会分数统计系统,需要设计一个含有多菜单项的主控菜单子程序,以链接系统中各个子项目的调用,为了方便用户使用本系统,本系统主控菜单的运行界面如图 3-3 所示。四详细设计 实现运动会分数统计系统的开发,采用链表结构类型存储运动会学校名称、男子女子运动项目以及男子女子项目成绩的信息。4.1 数据类型定义/每一个学校的信息 typedef struct Lnode/结点 char data20;/学校名称 int da,d1,d2;/学校编号
7、、学校总分、男女团体分 图 3-3主菜单运行界面 精品文档 收集于网络,如有侵权请联系管理员删除 struct Lnode*next;/指向下一学校 Lnode,*LinkList;int sz20;/每一个项目的信息 存取 typedef struct Lnode1 char data20,data120,data220,data320,data420,data520;/该项目前五名学校的名称 int da1,da2,da3,da4,da5;/该项目前五名学校的编号 struct Lnode1*next;/指向下一项目 Lnode1,*LinkList1;4.2 系统子程序详细设计 输入各学
8、校名称的算法:/按从头到尾的顺序依次建立线性链表L1共有n个节点 void schoolname(LinkList&L1,int n)int i;LinkList p,q;/输入头结点信息,即输入第一个学校的名字 L1=(LinkList)malloc(sizeof(Lnode);/malloc 是动态开辟内存,函数返回为 void 型指针(指向开辟的内存空间);(LinkList)定义的指针的类型;(sizeof(Lnode)malloc 开辟的内存空间的大小 printf(请输入这%d 个学校的名字:n,n);p=(LinkList)malloc(sizeof(Lnode);/指向一个有意
9、义的地方 L1-next=p;/把 p 的值赋给 next next 指向实际的空间 p 时指针 scanf(%s,&p-data);/修改空间的值,&取 p 的数据域的地址/从第二个节点开始依次输入到第n 个节点信息 精品文档 收集于网络,如有侵权请联系管理员删除 for(i=2;idata);q-next=p;输入男子运动项目名字的算法:/按从头到尾的顺序依次建立线性链表 L2 共有 n2 个节点 void mansports(LinkList1&L2,int n2)/输入第一个节点的信息,即第一个男子项目的名字 int i;LinkList1 r,s;开始 输入 n 个学i=0 in 将
10、第 i 个结点加入链表 L 结束 N Y 精品文档 收集于网络,如有侵权请联系管理员删除 L2=(LinkList1)malloc(sizeof(Lnode1);printf(请输入这%d 个项目的名字:n,n2);r=(LinkList1)malloc(sizeof(Lnode1);/把新开辟的空间 data1-5 初始化 for(int t=0;tdata1t=0;for(t=0;tdata2t=0;for(t=0;tdata3t=0;for(t=0;tdata4t=0;for(t=0;tdata5t=0;L2-next=r;scanf(%s,&r-data);/从第二个节点开始输入到第
11、n2个节点的信息 for(i=2;i=n2;i+)s=r;/s 指向 r指向的地方 r=(LinkList1)malloc(sizeof(Lnode1);for(int t=0;tdata1t=0;for(t=0;tdata2t=0;for(t=0;tdata3t=0;for(t=0;tdata4t=0;for(t=0;tdata5t=0;scanf(%s,&r-data);s-next=r;开始 输入 n 个男精品文档 收集于网络,如有侵权请联系管理员删除 输入女子运动项目名字的算法:/按从头到尾的顺序依次建立线性链表 L3 共有 n1 个节点 void womansports(LinkLi
12、st1&L3,int n1)/输入第一个节点的信息,即第一个女子项目的名字 精品文档 收集于网络,如有侵权请联系管理员删除 int i;LinkList1 r,s;L3=(LinkList1)malloc(sizeof(Lnode1);printf(请输入这%d 个项目的名字:n,n1);r=(LinkList1)malloc(sizeof(Lnode1);L3-next=r;scanf(%s,&r-data);/从第二个节点开始依次输入到第 n1个节点信息 for(i=2;idata);s-next=r;参加比赛的学校的总分排名的算法:void schoolrankings(LinkList
13、&L1,int n)开始 输入 n 个女i=0 in 将第 i 个结点加入链表 L 结束 N Y 精品文档 收集于网络,如有侵权请联系管理员删除 LinkList p;学校的数据类型 上边 int z,i,j,y;printf(参加这次比赛的学校的总分排名:n);p=L1-next;/下一个地方的指针给 p p 是学校的数据类型 p 是一个节点,L1 下一个节点给 p/先把每个学校的总分依次遍历,存放在数组 sz 中。一个一个取,一个一个找先让 p 指向一个链表 for(i=0;ida;/节点的信息指向一个数组,data学校总数的数据域,把所有的学校的总分 p=p-next;/再对数组 sz
14、用冒泡排序法进行从小到大排序 for(i=1;i=n-1;i+)for(j=1;jszj)y=szj-1;szj-1=szj;szj=y;z=1;/初始化/把线性链表 L1按项目总分从大到小的顺序排列,并打印名次 for(i=n-1;i=0;i-)精品文档 收集于网络,如有侵权请联系管理员删除 p=L1-next;/L1表示一个节点,取出里面一个数据,那个数据的名字是 next,next 也是一个节点,p 也是一个节点,if(i0)/意义是判断下一个是不是/如果值相等则链表指针直接指向下一个,不用交换位置 while(szi=szi-1)相邻的两个数组素不素相等 i-;/从大到小,从最后一个比
15、较 /在链表 L1中找到与 szi 相等的节点的位置,并打印出名次信息 for(j=1;jda)/数组里面的值从最后一个开始取 printf(第%d 名%s:%d 分n,z,p-data,p-da);z+;p=p-next;开始 i=0 i+将每个学校的总分赋给数组 szn 对数组 szn进行冒泡排序 精品文档 收集于网络,如有侵权请联系管理员删除 参加这次比赛的学校的男子项目的成绩排名的算法:/男子项目排名算法代码与上述学校总分的排名算法完全一致,其中男子项目排序的过程为比较男子项目总分 void manrankings(LinkList&L1,int n)LinkList p;int z,
16、i,j,y;printf(参加这次比赛的学校的男子项目的成绩排名:n);p=L1-next;/先把每个学校的男子项目总分依次遍历,存放在数组 sz 中。for(i=0;id1;p=p-next;精品文档 收集于网络,如有侵权请联系管理员删除 /再对数组 sz 用冒泡排序法进行从小到大排序 for(i=1;i=n-1;i+)for(j=1;jszj)y=szj-1;szj-1=szj;szj=y;z=1;/把线性链表 L1按男子项目总分从大到小的顺序排列,并打印名次 for(i=n-1;i=0;i-)p=L1-next;if(i0)while(szi=szi-1)i-;/在链表 L1中找到与 s
17、zi 相等的节点的位置,并打印出名次信息 for(j=1;jd1)printf(第%d 名%s:%d 分n,z,p-data,p-d1);z+;p=p-next;开始 将男子项目的总精品文档 收集于网络,如有侵权请联系管理员删除 参加这次比赛的学校的女子项目的成绩排名的算法:/女子项目排名算法代码与上述学校总分的排名算法完全一致,其中女子项目排序的过程为比较女子项目总分 void womanrankings(LinkList&L1,int n)LinkList p;精品文档 收集于网络,如有侵权请联系管理员删除 int z,i,j,y;printf(参加这次比赛的学校的女子项目的成绩排名:n)
18、;p=L1-next;/先把每个学校的女子项目总分依次遍历,存放在数组 sz 中 for(i=0;id2;p=p-next;/再对数组 sz 用冒泡排序法进行从小到大排序 for(i=1;i=n-1;i+)for(j=1;jszj)y=szj-1;szj-1=szj;szj=y;z=1;/把线性链表 L1按女子项目总分从大到小的顺序排列,并打印名次 for(i=n-1;i=0;i-)p=L1-next;if(i0)/如果值相等则链表指针直接指向下一个,不用交换位置 while(szi=szi-1)i-;/在链表 L1中找到与 szi 相等的节点的位置,并打印出名次信息 for(j=1;jd2)
19、printf(第%d 名%s:%d 分n,z,p-data,p-d2);z+;p=p-next;开始 结束 i=0 i+in Y N 将女子项目的总分赋给数组 szn 对数组 szn进行冒泡排序 遍历链表 L找到与 szi相等的结精品文档 收集于网络,如有侵权请联系管理员删除 五编码实现及系统测试 精品文档 收集于网络,如有侵权请联系管理员删除 图 5-1输入基本信息 精品文档 收集于网络,如有侵权请联系管理员删除 图 5-2学校及项目排名 图 5-3查询某校各个项目的成绩 精品文档 收集于网络,如有侵权请联系管理员删除 图 5-4查询某个项目的比赛结果 图 5-5结束本程序 精品文档 收集于
20、网络,如有侵权请联系管理员删除 六结果分析 注:m为学校个数,n 为项目个数。七学习体会 通过这次数据结构课程设计,我收获了很多:一经过这几天的学习,进一步提升了 C 语言的应用能力,巩固了数据结构上课所学习的内容,数据结构知识的应用能力有了一定的提升,并且对 C语言和数据结构有了更深层次的认识。二这次课程设计我们选的课题是运动会分数统计,涉及到线性链表以及 C 语言的一些基本的知识。在以前的学习中,对知识只是掌握了大概的内容,基础知识掌握的不牢固,所以编写程序的过程非常的困难,通过这次课程设计,让我知道基础知识非常重要。在进行概要设计的时候要注意结合问题的需求分析,函数调用要和系统功能相结合
21、。在书写程序时,要认真细心,很多错误都是因为自己的粗心,调试程序就花费了非常多的时间。三通过这次课程设计,让我明白了独立思考的重要性。一个东西只有经过自己的思考,自己明白了才是真的明白了。在思考的过程中,对一个问题思考的越深入,可以挖掘的东西就越多。在解决问题时要结合多方面的因素,不能只单方面思考问题。八源程序清单#include 操作 时间复杂度 空间复杂度 1 O(n+m)O(1)2 O(n)O(1)3 O(m)O(1)表 6-1时间、空间复杂度 精品文档 收集于网络,如有侵权请联系管理员删除#include#include typedef struct Lnode 类型定义 char d
22、ata20;/学校名称 int da,d1,d2;/学校编号、学校总分、男女团体分 struct Lnode*next;/指向下一学校 Lnode,*LinkList;int sz20;/每一个项目的信息 typedef struct Lnode1 char data20,data120,data220,data320,data420,data520;/该项目前五名学校的名称 int da1,da2,da3,da4,da5;/该项目前五名学校的编号 struct Lnode1*next;/指向下一项目 Lnode1,*LinkList1;输入各学校名称的算法:/按从头到尾的顺序依次建立线性链表
23、L1共有n个节点 void schoolname(LinkList&L1,int n)int i;LinkList p,q;/输入头结点信息,即输入第一个学校的名字 L1=(LinkList)malloc(sizeof(Lnode);printf(请输入这%d 个学校的名字:n,n);p=(LinkList)malloc(sizeof(Lnode);L1-next=p;scanf(%s,&p-data);/从第二个节点开始依次输入到第n 个节点信息 精品文档 收集于网络,如有侵权请联系管理员删除 for(i=2;idata);q-next=p;输入男子运动项目名字的算法:/按从头到尾的顺序依次
24、建立线性链表 L2 共有 n2 个节点 void mansports(LinkList1&L2,int n2)/输入第一个节点的信息,即第一个男子项目的名字 int i;LinkList1 r,s;L2=(LinkList1)malloc(sizeof(Lnode1);printf(请输入这%d 个项目的名字:n,n2);r=(LinkList1)malloc(sizeof(Lnode1);for(int t=0;tdata1t=0;for(t=0;tdata2t=0;for(t=0;tdata3t=0;for(t=0;tdata4t=0;for(t=0;tdata5t=0;L2-next=r
25、;scanf(%s,&r-data);/从第二个节点开始输入到第 n2个节点的信息 for(i=2;i=n2;i+)s=r;r=(LinkList1)malloc(sizeof(Lnode1);for(int t=0;tdata1t=0;for(t=0;tdata2t=0;for(t=0;tdata3t=0;for(t=0;tdata4t=0;for(t=0;tdata5t=0;scanf(%s,&r-data);s-next=r;输入女子运动项目名字的算法:/按从头到尾的顺序依次建立线性链表 L3 共有 n1 个节点 void womansports(LinkList1&L3,int n1)
26、/输入第一个节点的信息,即第一个女子项目的名字 int i;LinkList1 r,s;L3=(LinkList1)malloc(sizeof(Lnode1);printf(请输入这%d 个项目的名字:n,n1);r=(LinkList1)malloc(sizeof(Lnode1);L3-next=r;scanf(%s,&r-data);/从第二个节点开始依次输入到第 n1个节点信息 for(i=2;idata);s-next=r;参加比赛的学校的总分排名的算法:void schoolrankings(LinkList&L1,int n)LinkList p;int z,i,j,y;print
27、f(参加这次比赛的学校的总分排名:n);p=L1-next;/先把每个学校的总分依次遍历,存放在数组 sz 中。for(i=0;ida;p=p-next;/再对数组 sz 用冒泡排序法进行从小到大排序 for(i=1;i=n-1;i+)for(j=1;jszj)y=szj-1;szj-1=szj;szj=y;z=1;/把线性链表 L1按项目总分从大到小的顺序排列,并打印名次 for(i=n-1;i=0;i-)p=L1-next;if(i0)精品文档 收集于网络,如有侵权请联系管理员删除 /如果值相等则链表指针直接指向下一个,不用交换位置 while(szi=szi-1)i-;/在链表 L1中找
28、到与 szi 相等的节点的位置,并打印出名次信息 for(j=1;jda)printf(第%d 名%s:%d 分n,z,p-data,p-da);z+;p=p-next;参加这次比赛的学校的男子项目的成绩排名的算法:/男子项目排名算法代码与上述学校总分的排名算法完全一致,其中男子项目排序的过程为比较男子项目总分 void manrankings(LinkList&L1,int n)LinkList p;int z,i,j,y;printf(参加这次比赛的学校的男子项目的成绩排名:n);p=L1-next;/先把每个学校的男子项目总分依次遍历,存放在数组 sz 中。for(i=0;id1;p=p
29、-next;/再对数组 sz 用冒泡排序法进行从小到大排序 精品文档 收集于网络,如有侵权请联系管理员删除 for(i=1;i=n-1;i+)for(j=1;jszj)y=szj-1;szj-1=szj;szj=y;z=1;/把线性链表 L1按男子项目总分从大到小的顺序排列,并打印名次 for(i=n-1;i=0;i-)p=L1-next;if(i0)while(szi=szi-1)i-;/在链表 L1中找到与 szi 相等的节点的位置,并打印出名次信息 for(j=1;jd1)printf(第%d 名%s:%d 分n,z,p-data,p-d1);z+;p=p-next;参加这次比赛的学校的
30、女子项目的成绩排名的算法:精品文档 收集于网络,如有侵权请联系管理员删除 /女子项目排名算法代码与上述学校总分的排名算法完全一致,其中女子项目排序的过程为比较女子项目总分 void womanrankings(LinkList&L1,int n)LinkList p;int z,i,j,y;printf(参加这次比赛的学校的女子项目的成绩排名:n);p=L1-next;/先把每个学校的女子项目总分依次遍历,存放在数组 sz 中 for(i=0;id2;p=p-next;/再对数组 sz 用冒泡排序法进行从小到大排序 for(i=1;i=n-1;i+)for(j=1;jszj)y=szj-1;s
31、zj-1=szj;szj=y;z=1;/把线性链表 L1按女子项目总分从大到小的顺序排列,并打印名次 for(i=n-1;i=0;i-)p=L1-next;if(i0)/如果值相等则链表指针直接指向下一个,不用交换位置 while(szi=szi-1)i-;精品文档 收集于网络,如有侵权请联系管理员删除 /在链表 L1中找到与 szi 相等的节点的位置,并打印出名次信息 for(j=1;jd2)printf(第%d 名%s:%d 分n,z,p-data,p-d2);z+;p=p-next;void main()int i,j,z,x,n,m,w;/声明学校链表 LinkList p,q,L1;
32、/p,q没有实际意义,L1 是有实际意义,是储存学校信息/声明项目链表 LinkList1 r,s,L2,L3;/同上 男子男子链表,女子想么链表 do printf(*n);printf(*1 输入基本信息 *n);printf(*2 查询某校各个项目的成绩 *n);printf(*3 查询某个项目的比赛结果 *n);printf(*4 结束本程序 *n);精品文档 收集于网络,如有侵权请联系管理员删除 printf(*n);printf(请选择您想进行的操作n);/输入 1,或 2 或 3 选择功能 scanf(%d,&z);/z=2 查询某校各个项目的成绩 if(z=2)r=L2-nex
33、t;printf(请输入您想查寻的学校的名字:n);/输入待查询学校的名称 s=(LinkList1)malloc(sizeof(Lnode1);/存储学校的名字 scanf(%s,&s-data);/输出查询结果/输出查询信息 for(i=1;idata1,s-data)=0)printf(贵校荣获男子项目%s 的第 1 名,他该项目的成绩是:%dn,r-data,r-da1);if(strcmp(r-data2,s-data)=0)printf(贵校荣获男子项目%s 的第 2 名,他该项目的成绩是:%dn,r-data,r-da2);if(strcmp(r-data3,s-data)=0)
34、printf(贵校荣获男子项目%s 的第 3 名,他该项目的成绩是:%dn,r-data,r-da3);精品文档 收集于网络,如有侵权请联系管理员删除 if(strcmp(r-data4,s-data)=0)printf(贵校荣获男子项目%s 的第 4 名,他该项目的成绩是:%dn,r-data,r-da4);if(strcmp(r-data5,s-data)=0)printf(贵校荣获男子项目%s 的第 5 名,他该项目的成绩是:%dn,r-data,r-da5);r=r-next;/男子项目的链表 r=L3-next;for(i=1;idata1,s-data)=0)printf(贵校荣获
35、女子项目%s 的第 1 名,她该项目的成绩是:%dn,r-data,r-da1);if(strcmp(r-data2,s-data)=0)printf(贵校荣获女子项目%s 的第 2 名,她该项目的成绩是:%dn,r-data,r-da2);if(strcmp(r-data3,s-data)=0)printf(贵校荣获女子项目%s 的第 3 名,她该项目的成绩是:%dn,r-data,r-da3);if(strcmp(r-data4,s-data)=0)printf(贵校荣获女子项目%s 的第 4 名,她该项目的成绩是:%dn,r-data,r-da4);if(strcmp(r-data5,s
36、-data)=0)printf(贵校荣获女子项目%s 的第 5 名,她该项目的成绩是:%dn,r-data,r-da5);r=r-next;精品文档 收集于网络,如有侵权请联系管理员删除 /查询学校结束 /z=3 查询某个项目的比赛结果 if(z=3)printf(请输入您想查寻的项目的名字:n);/输入待查询的项目名称 s=(LinkList1)malloc(sizeof(Lnode1);scanf(%s,&s-data);/存 data里 r=L2-next;for(i=1;idata,s-data)=0)if(strlen(r-data4)=0)printf(第 1名%s,第 2名%s,
37、第 3 名%sn,r-data1,r-data2,r-data3);if(strlen(r-data4)0)printf(第 1 名%s,第 2名%s,第 3 名%s,第 4 名%s,第 5 名%sn,r-data1,r-data2,r-data3,r-data4,r-data5);r=r-next;r=L3-next;/打印项目比赛结果 for(i=1;idata,s-data)=0)if(strlen(r-data4)=0)printf(第 1名%s,第 2 名%s,第 3名%sn,r-data1,r-data2,r-data3);/字长 没有输入第四名 strlen(r-data4)=0
38、 精品文档 收集于网络,如有侵权请联系管理员删除 if(strlen(r-data4)0)printf(第 1 名%s,第 2名%s,第 3 名%s,第 4 名%s,第 5 名%sn,r-data1,r-data2,r-data3,r-data4,r-data5);r=r-next;if(z=1)/输入部分 /输入学校的个数 n printf(请输入参加这次比赛的学校的个数:n);scanf(%d,&n);/构建链表 L1,依次输入 n 个学校的名称。schoolname(L1,n);q=L1-next;/把 L1链表中的总分 da全部初始化为 0 for(i=1;ida=0;/初始化 q-d
39、1=0;q-d2=0;q=q-next;/输入男子个项目总数 m printf(n 请输入这次比赛的男子项目的个数:n);scanf(%d,&m);/构建男子项目链表 L2 输入 m 个男子运动项目名字 mansports(L2,m);r=L2-next;/依次 m 个男子项目的结果 for(i=1;idata);/输入 1 或 2 选择成绩记录的方式 scanf(%d,&z);printf(请输入第 1 名所来自的学校的名字和他该项目的成绩:n);/输入第 1 名学校名称和项目成绩 scanf(%s%d,&r-data1,&r-da1);q=L1-next;for(j=1;jdata1,q-
40、data)=0)if(z=1)q-da=q-da+r-da1;q-d1=q-d1+r-da1;/把项目的成绩把对应的项目的成绩加到学校里 先把第一名的成绩加到对应的学校 加到男子项目总分 if(z=2)q-da=q-da+r-da1;q-d1=q-d1+r-da1;q=q-next;printf(请输入第 2 名所来自的学校的名字和他该项目的成绩:n);/输入第 2 名学校名称和项目成绩 scanf(%s%d,&r-data2,&r-da2);q=L1-next;for(j=1;jdata2,q-data)=0)精品文档 收集于网络,如有侵权请联系管理员删除 if(z=1)q-da=q-da+
41、r-da2;q-d1=q-d1+r-da2;if(z=2)q-da=q-da+r-da2;q-d1=q-d1+r-da2;q=q-next;printf(请输入第 3 名所来自的学校的名字和他该项目的成绩:n);/输入第 3名学校名称和项目成绩 scanf(%s%d,&r-data3,&r-da3);q=L1-next;for(j=1;jdata3,q-data)=0)if(z=1)q-da=q-da+r-da3;q-d1=q-d1+r-da3;if(z=2)q-da=q-da+r-da3;q-d1=q-d1+r-da3;q=q-next;/如果 z=2,则继续输入第四,第五名的学校名称和项目
42、成绩。if(z=2)printf(请输入第 4名所来自的学校的名字和他该项目的成绩n);/输入第 4 名的学校名称和项目成绩。scanf(%s%d,&r-data4,&r-da4);q=L1-next;for(j=1;jdata4,q-data)=0)q-da=q-da+r-da4;q-d1=q-d1+r-da4;精品文档 收集于网络,如有侵权请联系管理员删除 q=q-next;printf(请输入第 5名所来自的学校的名字和他该项目的成绩:n);/输入第 5 名的学校名称和项目成绩。scanf(%s%d,&r-data5,&r-da5);q=L1-next;for(j=1;jdata5,q-
43、data)=0)q-da=q-da+r-da4;q-d1=q-d1+r-da4;q=q-next;r=r-next;/输入男子项目完毕 printf(n 请输入这次比赛的女子项目的个数:n);/输入女子项目的的个数 w scanf(%d,&w);/构建链表 L3,输入 w 个项目名称 womansports(L3,w);r=L3-next;/依次对 w个女子项目进行结果记录 for(i=1;idata);/输入 1或 2 选择记录的个数 scanf(%d,&x);精品文档 收集于网络,如有侵权请联系管理员删除 printf(请输入第 1 名所来自的学校的名字和他该项目的成绩:n);/输入第 1
44、 名所来自的学校的名字和他该项目的成绩 scanf(%s%d,&r-data1,&r-da1);q=L1-next;for(j=1;jdata1,q-data)=0)if(x=1)q-da=q-da+r-da1;q-d2=q-d2+r-da1;if(x=2)q-da=q-da+r-da1;q-d2=q-d2+r-da1;q=q-next;printf(请输入第 2 名所来自的学校的名字和他该项目的成绩:n);/输入第 2名所来自的学校的名字和他该项目的成绩 scanf(%s%d,&r-data2,&r-da2);q=L1-next;for(j=1;jdata2,q-data)=0)if(x=1
45、)q-da=q-da+r-da2;q-d2=q-d2+r-da2;if(x=2)q-da=q-da+r-da2;q-d2=q-d2+r-da2;q=q-next;printf(请输入第 3 名所来自的学校的名字和他该项目的成绩:n);/输入第 3名所来自的学校的名字和他该项目的成绩 精品文档 收集于网络,如有侵权请联系管理员删除 scanf(%s%d,&r-data3,&r-da3);q=L1-next;for(j=1;jdata3,q-data)=0)if(x=1)q-da=q-da+r-da3;q-d2=q-d2+r-da3;if(x=2)q-da=q-da+r-da3;q-d2=q-d2
46、+r-da3;q=q-next;if(x=2)printf(请输入第 4 名所来自的学校的名字和他该项目的成绩:n);/输入第 4名所来自的学校的名字和他该项目的成绩 scanf(%s%d,&r-data4,&r-da4);q=L1-next;for(j=1;jdata4,q-data)=0)q-da=q-da+r-da4;q-d2=q-d2+r-da4;q=q-next;printf(请输入第 5 名所来自的学校的名字和他该项目的成绩:n);/输入第 5 名所来自的学校的名字和他该项目的成绩 scanf(%s%d,&r-data5,&r-da5);q=L1-next;for(j=1;jdat
47、a5,q-data)=0)q-da=q-da+r-da5;q-d2=q-d2+r-da5;q=q-next;精品文档 收集于网络,如有侵权请联系管理员删除 r=r-next;/输入女子项目完毕 p=L1-next;printf(参加这次比赛的学校的成绩为:n);/输出 n个学校的分数 for(i=1;idata,p-da,p-d1,p-d2);/学校的名字.p=p-next;/p 指向学校的链表 打印完之后指向下一个节点 /把团体总分按照从大到小进行排序并打印 schoolrankings(L1,n);/把男子总分按照从大到小进行排序并打印 manrankings(L1,n);/把女子总分按照从大到小进行排序并打印 womanrankings(L1,n);/输入部分结束 while(z!=4);/printf(n);