输入格式:
第 1 行: 正整数 n
第 2 行: 第 1 个学生的姓名 学号 成绩
第 3 行: 第 2 个学生的姓名 学号 成绩
... ... ...
第 n+1 行: 第 n 个学生的姓名 学号 成绩
要求输出格式: 对每个测试用例输出 2 行, 第 1 行是成绩最高学生的姓名和学号, 第 2 行是成绩最低学生的姓名和学号, 字符串间有 1 空格.
注意的点:
cin>> 与 getline 函数一起使用时, 输入缓冲区中换行符的问题. 需要在 getline 之前使用 cin.ignore() 情况掉输入缓冲区, 防止 cin>> 残留的换行符对 getline 造成影响
注意格式控制
- #include <iostream>
- #include <map>
- #include <sstream>
- #include <string>
- #include <vector>
- int main() {
- int n;
- std::cin>> n;
- std::cin.ignore();
- std::map<int, std::vector<std::string>> item_map;
- int lowest = 100;
- int biggest = 0;
- for (int i = 0; i <n; i++) {
- std::string line;
- getline(std::cin, line);
- std::istringstream istr(line);
- std::string item;
- std::vector<std::string> v;
- while (istr>> item) {
- v.push_back(item);
- v.push_back(" ");
- }
- v.pop_back();
- auto score = atoi(v.back().c_str());
- v.pop_back();
- v.pop_back();
- item_map[score] = v;
- lowest = std::min(lowest, score);
- biggest = std::max(biggest, score);
- }
- for (auto v : item_map[biggest]) {
- std::cout << v ;
- }
- std::cout << std::endl;
- for (auto v : item_map[lowest]) {
- std::cout << v ;
- }
- return 0;
- }
[PTA] 1004 成绩排序
来源: http://www.bubuko.com/infodetail-3398891.html