3665 - 学生成绩的排序

通过次数

0

提交次数

0

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

输入n个学生的信息,依次包括姓名、C++成绩、数学成绩。
先按C++成绩的升序排列
如果C++成绩相同,再按数学成绩降序排列

 

题目输入

第一行有一个整数n,表示以下有n个学生信息将会输入。保证n不大于100。

题目输出

输出有n行,为排序后的学生信息

输入/输出样例

输入格式

3
Li 99 88
Wang 66 22
Liu  66 93

输出格式

Liu:66 93
Wang:66 22
Li:99 88

C语言解答

#include<stdio.h>
#include<string.h>
int main()
{
	int i,j,n,t,x[2][105];
	char x1[105][20];
	while(scanf("%d",&n)==1&&n!=0)
	{
		memset(x,0,sizeof(x));
		memset(x1,0,sizeof(x1));
		for(i=1;i<=n;i++)
			scanf("%s%d%d",x1[i],&x[0][i],&x[1][i]);
		for(i=1;i<n;i++)\
			for(j=i+1;j<=n;j++)
			{
				if(x[0][i]>x[0][j])
				{
					t=x[0][i];x[0][i]=x[0][j];x[0][j]=t;
					t=x[1][i];x[1][i]=x[1][j];x[1][j]=t;
					strcpy(x1[0],x1[i]);
					strcpy(x1[i],x1[j]);
					strcpy(x1[j],x1[0]);
				}
				else
				if(x[0][i]==x[0][j]&&x[1][i]<x[1][j])
				{
					t=x[0][i];x[0][i]=x[0][j];x[0][j]=t;
					t=x[1][i];x[1][i]=x[1][j];x[1][j]=t;
					strcpy(x1[0],x1[i]);
					strcpy(x1[i],x1[j]);
					strcpy(x1[j],x1[0]);
				}
			}
		for(i=1;i<=n;i++)
			printf("%s:%d %d\n",x1[i],x[0][i],x[1][i]);
	}
	return 0;
}

C++解答

#include<iostream>
#include <algorithm>
using namespace std;
#define N 100
struct student
{
	string name;
	int cpp;
	int math;
}stu[N];
bool cmp(struct student x,struct student y)
{
	if(x.cpp!=y.cpp) 
		return x.cpp<y.cpp;
	return x.math>y.math;
}
int main()
{
	int n,i;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>stu[i].name>>stu[i].cpp>>stu[i].math;
	}
	sort(stu,stu+n,cmp);
	for(i=0;i<n;i++)
	{
		cout<<stu[i].name<<":"<<stu[i].cpp<<' '<<stu[i].math<<endl;
	}
	return 0;                    
}

Java解答

import java.util.*;

 class k implements Comparable<k>{
   public  String s;
   public Integer a;
  public   Integer b;
    k(String s1,int a1,int b1)
    {
        s=s1;a=a1;b=b1;
    }
    public int compareTo(k o) {          //实现接口
          int x=a.compareTo(o.a);
          if(x>0)
              return 1;
          else if(x<0)
              return -1;
          else
          return -b.compareTo(o.b);
      }   
    public void tostring()
    {
        System.out.println(s+":"+a+" "+b);
    }
}
public  class Main {
   public static void  main(String[] args)
   {
       java.util.Scanner in=new java.util.Scanner(System.in);
       while(in.hasNext())
       {
           int n=in.nextInt();
           k[] w=new k[n];
           for(int i=0;i<n;i++)
           {
               String s=in.next();
               int a=in.nextInt();
               int b=in.nextInt();
               w[i]=new k(s,a,b);
           }
           Arrays.sort(w);
           for(int i=0;i<n;i++)
           {
               w[i].tostring();
           }
       }
   }
}