数据结构:运动会分数统计

本文探讨如何利用数据结构来高效地统计运动会的各项比赛分数。通过实例分析,阐述了如何使用数组、队列和栈等基本数据结构,实现快速排序、查找最高分和计算总分等功能,为类似问题提供解决方案。
摘要由CSDN通过智能技术生成
#include<stdio.h>
#include<math.h>
#include <conio.h>
#include <process.h>
#define n 2//学校数目  
#define m 1//男子项目数目 
#define w 1//女子项目数目
#define null 0

typedef struct
{ 
	int itemnum; //项目编号
    int top;    //取名次的数目
    int range[5]; //名次
    int mark[5];  //分数
}itemnode;   //定义项目结点的类型

typedef struct
{
	int schoolnum;   //学校编号
    int score;    //学校总分
    int mscore;   //男团体总分
    int wscore;   //女团体总分
    itemnode c[m+w];   //项目数组
}headnode;//定义头结点类型

headnode h[n];//定义一个头结点数组

void inputinformation()  //输入信息,建立系统
{
	int i,j,k,s;
    for(i=0;i<n;i++)
    { 
		h[i].score=0;
        h[i].mscore=0;
        h[i].wscore=0;
	}                                            //初始化头结点
    for(i=0;i<n;i++)
    { 
		printf("*****学校编号:");
        scanf("%d",&h[i].schoolnum);               //输入头结点信息
        for(j=0;j<m+w;j++)
		{  
			printf("*****项目编号:");
            scanf("%d",&h[i].c[j].itemnum);
		    printf("*****取前3名or前5名:");
            scanf("%d",&h[i].c[j].top);
            printf("*****获得几个名次:");
            scanf("%d",&k);                      //输入项目信息
            for(s=0;s<5;s++)
            h[i].c[j].range[s]=0, h[i].c[j].mark[s]=0;  //初始化排名和分数
            for(s=0;s<k;s++)
			{       
				printf("*****名次:");
                scanf("%d",&h[i].c[j].range[s]);     //输入所获名次信息
                if(h[i].c[j].top==3)
                switch(h[i].c[j].range[s])
                {
                case 0: h[i].c[j].mark[s]=0; break;
                case 1: h[i].c[j].mark[s]=5; break;
                case 2: h[i].c[j].mark[s]=3; break;
                case 3: h[i].c[j].mark[s]=2; break;
                }
                else
                switch(h[i].c[j].range[s])
				{
                 case 0: h[i].c[j].mark[s]=0; break;
                 case 1: h[i].c[j].mark[s]=7; break;
                 case 2: h[i].c[j].mark[s]=5; break;
                 case 3: h[i].c[j].mark[s]=3; break;
                 case 4: h[i].c[j].mark[s]=2; break;
  
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值