1557 - 成绩排序2

从键盘输入4 个学生的数据(包括姓名、年龄和成绩),按成绩从高到底排序,并输出其中成绩次高者的所有数据。

题目输入

 输入4行,每一行表示一个学生的数据,分别表示 姓名、年龄和成绩。

题目输出

 输出4行,表示排序后的结果,格式参见样例。

输入/输出样例

题目输入

aa 10 90
bb 20 100
cc 18 98
dd 19 93

题目输出

bb 20 100
cc 18 98
dd 19 93
aa 10 90

C语言解答

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	char c[5][20]={'0'};
	int a[5][2];
	char temp[20];
	int temp1;
	for(int i=0;i<4;i++)
	{
		scanf("%s",&c[i]);
		scanf("%d%d",&a[i][0],&a[i][1]);
	}
	for(int i=0;i<3;i++)
		for(int j=1;j<4-i;j++)
			if(a[j-1][1]<a[j][1])
			{
				strcpy(temp,c[j-1]);
				strcpy(c[j-1],c[j]);
				strcpy(c[j],temp);
				temp1=a[j-1][0];
				a[j-1][0]=a[j][0];
				a[j][0]=temp1;
				temp1=a[j-1][1];
				a[j-1][1]=a[j][1];
				a[j][1]=temp1;
			}
	for(int i=0;i<4;i++)
	{
		printf("%s ",c[i]);
		printf("%d %d\n",a[i][0],a[i][1]);
	}
	//system("pause");
	return 0;
}

C++解答

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct student
{
    string name;
    int age;
    int score;
};
int main()
{
    student st[4];
    student s;
    student t;
    int i=0;
    for(i=0; i<4; i++)
    {
        cin>>st[i].name>>st[i].age>>st[i].score;
    }
    for(i=0; i<4; i++)
        for(int j=i+1; j<4; j++)
            if(st[i].score<st[j].score)
            {
                t=st[i];
                st[i]=st[j];
                st[j]=t;
            }
    for(i=0; i<4; i++)
        cout<<st[i].name<<" "<<st[i].age<<" "<<st[i].score<<endl;
    return 0;
}

时间限制 1 秒
内存限制 32 MB
讨论 统计
上一题 下一题