3562 - 模拟5

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

某次运动会上一共有n(n最大为50)名参赛运动员,

要求手动输入该n名运动员的编号与成绩,并按照从高分到低分的顺序输出这些运动员的编号与成绩。当分数相等时,序号从小大排列)

 

<b>提示:</b>可以使用两个数组并使用排序方法&nbsp;<b><span></span></b> 

题目输入

输入有多组样例。

输入一个整数n,接下来输入n行,每行两个整数编号和成绩a,b。

题目输出

输出排序后的编号和成绩。

输入/输出样例

输入格式

3
1 2
2 3
3 4
5 
1 87
2 75
3 90
4 88
5 70

输出格式

3 4
2 3
1 2
3 90
4 88
1 87
2 75
5 70

C语言解答

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
int main()
{
   // freopen("in","r",stdin);
   // freopen("out","w",stdout);


   int a[50][2];
int n;
int i,j,k;
    while(scanf("%d",&n)!=EOF)
    {



for (i=0;i<n;i++)
scanf("%d%d",&a[i][1],&a[i][2]);

for (i=0;i<n-1;i++)
for (j=0;j<n-1-i;j++)
   if (a[j][2]<a[j+1][2])
{    k=a[j][1];
   a[j][1]=a[j+1][1];
   a[j+1][1]=k;
    k=a[j][2];
  a[j][2]=a[j+1][2];
   a[j+1][2]=k;
}
for (i=0;i<n;i++)
  printf("%d %d\n",a[i][1],a[i][2]);


    }
  return 0;
}

C++解答

#include<stdio.h>
int main()
{
  int a[50][3],n,i,j,t;
  while(scanf("%d",&n)!=EOF)
  {
    for(i=1;i<=n;i++)
		scanf("%d%d",&a[i][1],&a[i][2]);
	for(i=1;i<=n-1;i++)
		for(j=1;j<=n-i;j++)
		  if(a[j][2]<a[j+1][2])
		  {
		    t=a[j][1];
			a[j][1]=a[j+1][1];
			a[j+1][1]=t;

			t=a[j][2];
			a[j][2]=a[j+1][2];
			a[j+1][2]=t;
		  }
		  for(i=1;i<=n;i++)
		printf("%d %d\n",a[i][1],a[i][2]);


  }

  

}