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\n",a[k-1].num,a[k-1].score); 34 return 0; 35 }