第四次机考(2019) C. f1二

主要考结构体的运用,难度不大。
思路:新建数组,读取人的信息——排序——输出

#include <stdio.h>
typedef struct _person{
	char name[26];
	char group[26];
	int score;
} person;
//typedef和struct一起写时,紧跟在struct后面的名字其实不重要,但是要有,最后直接把新名字加上就行

person getInformation();//读取每个人信息的函数,返回一个person类型的结构体
int main()
{	
	int i,j,tmp,n;scanf("%d",&n);getchar();
	person game[21];//创建一个person类型的数组game,存放一场比赛中每个人的信息

	for(i=0;i<n;i++)
		game[i]=getInformation();

	int order[n];
	for(i=0;i<n;i++) order[i]=i;//得到order[]=0,1,2...

	for(i=1;i<n;i++)
		for(j=0;j<n-i;j++)
			if(game[order[j]].score<game[order[j+1]].score)//冒泡排序,得到记录了顺序的数组order[]
			{
				tmp=order[j];
				order[j]=order[j+1];
				order[j+1]=tmp;
			}

	for(i=0;i<n;i++)//按照order[]记录的顺序来打印
		printf("%s %s %d\n",game[order[i]].name,game[order[i]].group,game[order[i]].score);
	return 0;
}

person getInformation()
{
	person tmp;
	scanf("%s%s%d",tmp.name,tmp.group,&tmp.score);
	getchar();//吞掉读取整数后产生的回车
	return tmp;
}

题目描述

世界一级方程式锦标赛(FIA Formula 1 World Championship),简称F1,是由国际汽车运动联合会(FIA)举办的最高等级的年度系列场地赛车比赛,是当今世界最高水平的赛车比赛,与奥运会、世界杯足球赛并称为“世界三大体育盛事”。
目前f1车手积分的计算方法为:
1、前十名记分。2、某站比赛第一名到第10名取得的积分依次为25、18、15、12、10、8、6、4、2、1。现请你写一段程序来输出某站比赛过后,各某车手的排名。
输入:
第一行为一个整数n(0<n<21),后边n行每一行为一名车手的的成绩,格式为:开始为两个用空格分隔的字符串(每个字符串均只包含大小写字母,且长度不超过25),第一字符串代表该车手的名字,第二个字符串代表该车手所在车队的名字,后边为一个整数,代表该车手的当前的积分。

输出:
为n行,每行一名车手的信息,格式与输入时相同。输出顺序为按积分由高到低。测试用例保证:1、输入合法;2、没有积分相同的车手;3、所有整数可以用int存储。

输入样例

10
CarlosSainz Renault 53
DanielRicciardo RedBullRacing 170
KevinMagnussen Haas 56
KimiRaikkonen Ferrari 251
LewisHamilton Mercedes 408
MaxVerstappen RedBullRacing 249
NicoHulkenberg Renault 69
SebastianVettel Ferrari 320
SergioPerez ForceIndia 62
ValtteriBottas Mercedes 247
输出样例

LewisHamilton Mercedes 408
SebastianVettel Ferrari 320
KimiRaikkonen Ferrari 251
MaxVerstappen RedBullRacing 249
ValtteriBottas Mercedes 247
DanielRicciardo RedBullRacing 170
NicoHulkenberg Renault 69
SergioPerez ForceIndia 62
KevinMagnussen Haas 56
CarlosSainz Renault 53

猜你喜欢

转载自blog.csdn.net/weixin_43873801/article/details/86550129