1176:谁考了第k名

1176:谁考了第k名

题目描述

【题目描述】
在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。

【输入】
第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k≤n)。
其后有n行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。
【输出】
输出第k名学生的学号和成绩,中间用空格分隔。(注:请用%g输出成绩)
【输入样例】
5 3
90788001 67.8
90788002 90.3
90788003 61.0
90788004 68.4
90788005 73.9

【输出样例】
90788004 68.4

思路

需要根据学生成绩对学生学号和成绩进行降序排序,可以用结构体解决,也可以用两个数组表示(本博客方法),在使用冒泡排序对成绩数组交换的同时交换学号数组,最后输出第K个数组即可。

源代码

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
 string a[101];
 int n, k,i,j;
 double b[101];
 cin >> n >> k;
 for (i = 0; i < n; i++)
 {
  cin >> a[i] >> b[i];
 }
 for (i = 0; i < n; i++)
 {
  for (j = 0; j < n - i - 1; j++)
  {
   if (b[j] <b[j + 1]) 
   { 
    double temp = b[j];                    
       b[j] = b[j + 1];                    
      b[j + 1] = temp; 
      string c = a[j];
      a[j] = a[j + 1];
      a[j + 1] = c;
   }
  }
 }
 cout << a[k - 1] << " " << b[k - 1]<<endl;
 return 0;
}
发布了8 篇原创文章 · 获赞 0 · 访问量 148
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览