读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:
每个测试输入包含 1 个测试用例,格式为
第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
... ... ...
第 n+1 行:第 n 个学生的姓名 学号 成绩
其中姓名
和学号
均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:
对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。
输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出样例:
Mike CS991301
Joe Math990112
#include <stdio.h>
#include <stdlib.h>
typedef struct CJ //定义结构体
{
char name[11];
char xh[11];
int fs;
}CJ;
void sr(int ,CJ []);
void px(int ,CJ []);
int main(void)
{
int n;
scanf("%d",&n);
CJ xscj[n];
sr(n,xscj); //输入
px(n,xscj); //排序
printf("%s %s\n",xscj[0].name,xscj[0].xh);
printf("%s %s",xscj[n-1].name,xscj[n-1].xh);
return 0;
}
void sr(int n,CJ sz[])
{
int i;
for(i=0;i<n;i++)
{
scanf("%s %s %d",sz[i].name,sz[i].xh,&sz[i].fs);
}
}
void px(int n,CJ sz[])
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(sz[j].fs<sz[j+1].fs)
{
CJ ls = sz[j+1];
sz[j+1] = sz[j];
sz[j] = ls;
}
}
}
}