Description
在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名学生的学号和成绩。
Input
第一行有两个整数,分别是学生的人数n(1≤n≤100),和求第k名学生的k(1≤k≤n)。 其后有n行数据,每行包括一个学号(整数)和一个成绩(浮点数),中间用一个空格分隔。
Output
输出第k名学生的学号和成绩,中间用空格分隔。(注:请用%g输出成绩)
Accepted Code
#include <bits/stdc++.h> using namespace std; struct $ { char ser[20]; double s; }; $ stu[105]; bool comp($ a, $ b) { return a.s > b.s; } int main() { int n, k; cin >> n >> k; for (int i = 0;i < n;++i) { scanf("%s %lf", stu[i].ser, &stu[i].s); } sort(stu, stu + n, comp); printf("%s %g\n", stu[k - 1].ser, stu[k - 1].s); return 0; }
解后反思
%g用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0。即%g是根据结果自动选择科学记数法还是一般的小数记数法