资源简介

设计内容:参加运动会有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


评论

共有 条评论