|
如何使用指针和字符数组完成单词统计?(语言-c++)
使用getline函数或者gets函数从键盘获得一字待串(可以包括大小写字母、数字、空格)
然后输出:
⒈包含单词的总数
⒉出现次数最多的那个单词
⒊频率
注意:
⒈空格分割视为一个单词
⒉语句可能以空格开头;
⒊单词可能以多个空格分割;
下面是使用C++编写的示例代码,可以从键盘输入一段字符串并根据要求输出单词的总数、出现次数最多的单词以及其频率:
- #include <iostream>
- #include <string>
- #include <sstream>
- #include <unordered_map>
- int main() {
- std::string input;
- std::cout << "请输入一段字符串: ";
- std::getline(std::cin, input);
- std::unordered_map<std::string, int> wordCount;
- std::istringstream iss(input);
- std::string word;
- int maxCount = 0;
- // 统计单词出现次数
- while (iss >> word) {
- wordCount[word]++;
- if (wordCount[word] > maxCount) {
- maxCount = wordCount[word];
- }
- }
- std::cout << "包含单词的总数: " << wordCount.size() << std::endl;
- // 找到出现次数最多的单词
- for (const auto& pair : wordCount) {
- if (pair.second == maxCount) {
- std::cout << "出现次数最多的单词: " << pair.first << std::endl;
- }
- }
- // 输出频率
- for (const auto& pair : wordCount) {
- double frequency = static_cast<double>(pair.second) / wordCount.size() * 100;
- std::cout << pair.first << " 的频率为: " << frequency << "%" << std::endl;
- }
- return 0;
- }
复制代码 这段代码使用 std::getline 函数从键盘获取一段字符串,并使用 std::istringstream 将其分割成单词。然后,使用 std::unordered_map 统计每个单词的出现次数,并找到出现次数最多的单词。最后,计算每个单词的频率并输出结果。
请注意,这段代码假设输入的字符串中只包含大小写字母、数字和空格,并且空格被视为单词的分隔符。如果输入包含其他特殊字符或符号,可能需要进行适当的处理。
|
|