openJudge计算概论-谁考了第k名

/*=====================================
谁考了第k名
总时间限制: 1000ms 内存限制: 65536kB
描述
在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。

输入
第一行有两个整数,学生的人数n(1≤n≤100),和求第k名学生的k(1≤k≤n)。
其后有n行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。
输出
输出第k名学生的学号和成绩,中间用空格分隔。(注:请用%g输出成绩)
样例输入
5 3
90788001 67.8
90788002 90.3
90788003 61
90788004 68.4
90788005 73.9
样例输出
90788004 68.4
======================================*/
 1 #include<stdio.h>
 2 struct stu
 3 {
 4     int num;
 5     double score;
 6 };
 7 int main()
 8 {
 9     int n,k,i,j,flag;
10     struct stu a[105],t;
11     
12     scanf("%d%d",&n,&k);
13     for(i=0;i<n;i++)
14     {
15         scanf("%d%lf",&a[i].num,&a[i].score);
16     }
17     
18     for(i=1;i<n;i++)
19     {
20         flag=1;
21         for(j=0;j<n-i;j++)
22         {
23             if(a[j].score<a[j+1].score)
24             {
25                 flag=0;
26                 t=a[j];
27                 a[j]=a[j+1];
28                 a[j+1]=t;
29             }
30         }
31         if(flag) break; //if(flag==1) break;
32     }
33     printf("%d %g
",a[k-1].num,a[k-1].score);
34     return 0;
35 }
原文地址:https://www.cnblogs.com/huashanqingzhu/p/3463976.html