题目描述
在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第 k
名学生的学号和成绩。
输入格式
其后有 n
行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。
输出格式
输出第 k
名学生的学号和成绩,中间用空格分隔。(注:请用 %g
输出成绩)
输入样例
5 3
90788001 67.8
90788002 90.3
90788003 61
90788004 68.4
90788005 73.9
输出样例
90788004 68.4
代码:
#include<stdio.h>
struct noya //定义一个结构体来存放学生的学号和成绩
{
int xh;
float cj;
}; //这里的分号注意不要忘了
int main(){
int n,k,i,j;
scanf("%d%d",&n,&k);
struct noya a[n]; //定个结构体变量 下文就可以开始输入学号和成绩了
struct noya t;
for(i=0;i<n;i++)
{
scanf("%d%f",&a[i].xh,&a[i].cj);
}
for(i=0;i<n-1;i++) //用选择法给成绩排序(外层循环控制排序次数)
{
for(j=i+1;j<n;j++) //内层循环控制对比
{
if(a[i].cj<a[j].cj) //因为成绩都是从高分到低分排名次即从大到小 所以此处是<
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
printf("%d %g",a[k-1].xh,a[k-1].cj); //数组下标k-1 对应的就是第k名了
return 0;
}