1.#
点击查看考点
几种 cin
输入方式, 排序, 去除重复值
点击查看往年相同题目
与 计软智 2020 年第 4 题 和 计软智 2023 年上机题第 2 题 均考察了排序后去重或 set
概念, 也是计算机大类实验手册上某道题的考点.
输入一行文本, 找出文本中全部的单词, 并按字典序输出, 每行只输出一个单词.
注意: 程序不区分大小写, 即 Apple
, apple
, Apple
应视为同一个单词.
例如:
1input:
2 This Apple is red while that apple is GREEN
3
4output:
5 apple
6 green
7 is
8 red
9 that
10 this
11 while
点击查看解答参考
我们需要对语句中的单词进行拆分, 这可以利用 cin >> string
的默认行为: 读过前面所有空白符, 然后读入字符直到查看到空白符. 由此, 使用 #include <sstream>
中的 stringstream
即可实现单词拆分:
1#include <iostream>
2#include <sstream>
3#include <string>
4
5int main() {
6 std::string line;
7 std::getline(std::cin, line); // 读取一整行
8
9 {
10 std::stringstream oss(line);
11 for (std::string word; oss >> word;) {
12 /* 使用拆分出的单词 */
13 }
14 }
15}
此外, 除了用 std::set
进行去重, 你也可以用 std::sort
和 std::unique
进行去重操作: [在线代码 EdKh8bPe5]
1#include <algorithm>
2#include <vector>
3
4int main() {
5 std::vector<int> vector = {4, 3, 2, 3, 1};
6 std::sort(vector.begin(), vector.end());
7 vector.erase(std::unique(vector.begin(), vector.end()), vector.end());
8 // vector == {1, 2, 3, 4}
9}