资源简介
设计内容:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1~m,女子m+1~m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。(m<=20,n<=20)
功能要求:
1) 可以输入各个项目的前三名或前五名的成绩;
2) 能统计各学校总分;
3) 可以按学校编号、学校总分、男女团体总分排序输出;
4) 可以按学校编号查询学校某个项目的情况;
5) 可以按项目编号查询取得前三或前五名的学校。
代码片段和文件信息
#include
#include
#include
#define LT(ab) ((a)<(b))
#define LIST_INIT_SIZE 100//线性表存储空间的初始分配量
#define LISTINCREMENT 10//线性表存储空间的分配增量
typedef int InfoType; // 定义其它数据项的类型
typedef int KeyType; // 定义关键字类型为整型
struct RedType // 记录类型
{
KeyType key; // 关键字项
InfoType otherinfo; // 其它数据项,具体类型在主程中定义
};
typedef struct
{
int schnum;//学校的编号
int mscore[20];//学校在各个男生项目的积分
int wscore[20];//学校在各个女生项目的积分
}school;//学校记录类型
typedef int ElemType;
struct SqList
{
ElemType *elem;// 存储空间基址
int length; // 当前长度
int listsize; // 当前分配的存储容量(以sizeof(ElemType)为单位)
};
struct List
{
RedType r[20];
int length;
};
int InitList(SqList &L) // 算法2.3
{ // 操作结果:构造一个空的顺序线性表
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)
exit(-1); // 存储分配失败
L.length=0; // 空表长度为0
L.listsize=LIST_INIT_SIZE; // 初始存储容量
return 1;
}
int ListInsert(SqList &Lint iElemType e) // 算法2.4
{ // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1
// 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1
ElemType *newbase*q*p;
if(i<1||i>L.length+1) // i值不合法
return 0;
if(L.length>=L.listsize) // 当前存储空间已满增加分配
{
if(!(newbase=(ElemType *)realloc(L.elem(L.listsize+LISTINCREMENT)*sizeof(ElemType))))
exit(-1); // 存储分配失败
L.elem=newbase; // 新基址
L.listsize+=LISTINCREMENT; // 增加存储容量
}
q=L.elem+i-1; // q为插入位置
for(p=L.elem+L.length-1;p>=q;--p) // 插入位置及之后的元素右移
*(p+1)=*p;
*q=e; // 插入e
++L.length; // 表长增1
return 1;
}
void InsertSort(List &L)
{ // 对顺序表L作直接插入排序。算法10.1
int ij;
for(i=2;i<=L.length;++i)
if LT(L.r[i].keyL.r[i-1].key) // “<“需将L.r[i]插入有序子表
{
L.r[0]=L.r[i]; // 复制为哨兵
for(j=i-1;LT(L.r[0].keyL.r[j].key);--j)
L.r[j+1]=L.r[j]; // 记录后移
L.r[j+1]=L.r[0]; // 插入到正确位置
}
}
void print(List L)
{
int i;
for(i=1;i<=L.length;i++)
printf(“(%d%d%d)\n“L.length-i+1L.r[i].otherinfoL.r[i].key);
printf(“\n“);
}
void main() //规定男生项目前三名分别积分5、3、2,女生项目前五名分别积分7、5、3、2、1
//规定没有名次则积分为0 ,不考虑并列的情况
//请正确输入各学校对应项目的积分
{
int nmwij;
school a[20];
int summscore[20]sumwscore[20]sumscore[20];//定义存储各个学校男团、女团、总分
RedType d[20];//定义排序所需的数组为RedType型
SqList LLmLw;//定义存放各个学校总分、男团、女团积分的顺序线性表
List Lr;//定义积分排序所需的顺序线性表
InitList(L);//初始化各线性表
InitList(Lm);
InitList(Lw);
cout<<“请输入参加运动会的学校数目(5~20):“< cin>>n;
while(n<5||n>20)
{
cout<<“输入学校数目有误,请重新输入!“< cout<<“请输入参加运动会的学校数目(5~20):“< cin>>n;
}
cout<<“请分别输入男生、女生的项目数目(1~20):“< cin>>m>>w;
cout<<“规定男生项目前三名分别积分5、3、2“< cout<<“女生项目前五名分别积分7、5、3、2、1“< cout<<“没有名次则积分为0且本程序不涉及并列排名的情况!“< cout<<“请正确输入各学校对应项目的积分!\n“< for(i=1;i<=n;i++)
{
a[i-1].schnum=i;//赋给学校对应的编号
printf(“请输入学校 %d 男生各个项目的成绩:\n“i);
for(j=1;j<=m;j++)//分别输入对应学校的各个男生项目的积分情况
cin>>a[i-1].mscore[j-1];
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
.CA.... 8779 2009-01-06 12:45 运动会分数统计.cpp
文件 31232 2010-01-07 22:50 测试数据.doc
----------- --------- ---------- ----- ----
40011 2
相关资源
- 数据结构与算法源代码 北大 张铭
- 数据结构课程设计报告 迷宫游戏
- KMP字符串模式匹配详解及程序
- 数据结构图的邻接矩阵邻接表存储表
- 数据结构课程设计-通讯录(双链表全
- 数据结构课程设计 文章编辑
- 六种内部排序算法比较:直接插入排
- 职工工资管理系统(数据结构课程设
- 数据结构教程上机实验指导李春葆源
- 数据结构《交通咨询系统》完整代码
- 数据结构课程设计哈夫曼编译码器
- 数据结构文件实现宿舍管理软件设计
- 数据结构课程设计--订票系统
- 数据结构散列表电话号码查询系统课
- 由俩中遍历序列恢复二叉树
- 数据结构综合课设二叉排序树.docx
- 广州大学 数据结构实验报告 实验二
- 商品货架管理程序
- 数据结构试验3-二叉树实验报告含源码
- 程序员代码面试指南:IT名企算法与数
- 池塘夜降彩色雨源码
- 数据结构概念名词解释
- 数据结构汽车牌照管理系统
- 大学数据结构期末考试试题(有答案
- 股票撮合系统
- 链表实验三
- 单链表的操作
- 数据结构 课程设计 排序算法的比较
- 学好算法与数据结构,程序猿的内功
- 广大实验报告
评论
共有 条评论