刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

谁考了第k名
在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。
时间限制:1000
内存限制:65536
输入
第一行有两个整数,分别是学生的人数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

使用微信搜索喵呜刷题,轻松应对考试!

答案:

include <iostream>

using namespace std;

int id[110];

double s[110];

int main(){

int n,k,it;

double t;

cin>>n>>k;

for(int i=0;i<n;i++) cin>>id[i]>>s[i];

for(int i=0;i<n;i++){

int k=i;

for(int j=i;j<n;j++) if(s[j]<s[k]) k=j;

if(k!=i){

t=s[i];

s[i]=s[k];

s[k]=t;

it=id[i];

id[i]=id[k];

id[k]=it;

}

}

cout<<id[n-k]<<" "<<s[n-k];

return 0;

}

解析:

【喵呜刷题小喵解析】:首先,需要读入学生的数量n和需要找的第k名学生的k值。然后,读入每个学生的学号和成绩,分别存储在数组id和score中。接下来,使用冒泡排序算法对学生的成绩进行排序。在排序过程中,如果当前学生的成绩比下一个学生的成绩大,则交换他们的成绩和学号。最后,输出第k名学生的学号和成绩。由于数组下标是从0开始的,所以第k名学生的学号和成绩实际上是存储在数组的第n-k个位置。需要注意的是,题目中要求使用%g输出成绩,但在给出的答案中并没有使用。在实际编程时,应该使用%g格式说明符来输出成绩,以确保输出的成绩格式正确。例如,可以将最后的输出语句改为`cout << id[n - k] << " " << setprecision(2) << fixed << score[n - k];`,其中`setprecision(2)`和`fixed`用于设置输出的小数位数为2位。
创作类型:
原创

本文链接:谁考了第k名 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share