Openjudge-计算概论(A)-谁考了第k名
描述:
在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第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 scanf("%d%d",&n,&k); 12 for(i=0;i<n;i++) 13 { 14 scanf("%d%lf",&a[i].num,&a[i].score); 15 } 16 17 for(i=1;i<n;i++) 18 { 19 flag=1; 20 for(j=0;j<n-i;j++) 21 { 22 if(a[j].score<a[j+1].score) 23 { 24 flag=0; 25 t=a[j]; 26 a[j]=a[j+1]; 27 a[j+1]=t; 28 } 29 } 30 if(flag) break; 31 } 32 printf("%d %g\n",a[k-1].num,a[k-1].score); 33 return 0; 34 }
我不怕千万人阻挡,只怕自己投降…