代码练习02

该代码实现了一个世界杯小组赛积分排名的算法,根据队伍的胜负场数、进球数和负球数计算积分和净球数,并通过冒泡排序按照积分和净球数进行排名。输入包括队伍名称、胜负场数、进球数和负球数,输出排名、队伍名称、积分和净球数。
摘要由CSDN通过智能技术生成

题目:

世界杯小组赛(胜得3分,平得1分,负不得分),计算每个队的积分并按排名先后输出,
若积分相同,则按净球数(保证积分相等时输入的净球数不相等)。
输入M个队,出线队N个,输出出线的队伍的排名、名称、积分、净球数。
输入说明
名称 胜 平 负 进球数 负球数
输入样本
4 2
德国 1 1 0 9 3
俄罗斯 1 0 0 2 1
威尔士 1 1 1 10 2
芬兰 0 1 0 3 3
输出样本
1 威尔士 4 8
2 德国 4 6

思路:

建立一个小组队伍结构体(包含国家名,胜负场数,进球数,负球数,积分,净球数),采用冒泡排序根据小组队伍的积分和净球数(积分相同,按净球数排名)排名。

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 100
struct WorldCup
{
	char country[10];
	int win[10];	//胜负场数,进球数,负球数
	int grade;		//积分
	int goal;		//净球数
};
int main()
{
	int m,n;
	struct WorldCup w[M],temp;
	scanf("%d %d",&m,&n);	//输入队伍数,出线队数
	for(int i=0;i<m;i++)
	{
		scanf("%s",w[i].country); 
		for(int j=0;j<5;j++)
			scanf("%d",&w[i].win[j]);		//胜负场数,进球数,负球数
		w[i].grade=3*w[i].win[0]+w[i].win[1];	//积分
		w[i].goal=w[i].win[3]-w[i].win[4];		//净球数
	}
	for(int i=0; i<m-1;i++)	//冒泡排序,积分从大到小
	{
		for(int j=m-1;j>i;j--)
		{
			if(w[j].grade>w[j-1].grade||w[j].grade==w[j-1].grade && w[j].goal>w[j-1].goal)
			{
				temp=w[j];
				w[j]=w[j-1];
				w[j-1]=temp;
			}
		}
		
	}
	for(int k=0;k<n;k++)
	{
		printf("%d %-3s %d %d\n",k+1,w[k].country,w[k].grade,w[k].goal);
	}
	
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值