如何使用指针和字符数组完成单词统计?(语言-c++)

如何使用指针和字符数组完成单词统计?(语言-c++)

使用getline函数或者gets函数从键盘获得一字待串(可以包括大小写字母、数字、空格)

然后输出:

⒈包含单词的总数

⒉出现次数最多的那个单词

⒊频率

注意:

⒈空格分割视为一个单词

⒉语句可能以空格开头;

⒊单词可能以多个空格分割;

下面是使用C++编写的示例代码,可以从键盘输入一段字符串并根据要求输出单词的总数、出现次数最多的单词以及其频率:

cpp 复制代码
#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 统计每个单词的出现次数,并找到出现次数最多的单词。最后,计算每个单词的频率并输出结果。

请注意,这段代码假设输入的字符串中只包含大小写字母、数字和空格,并且空格被视为单词的分隔符。如果输入包含其他特殊字符或符号,可能需要进行适当的处理。

相关推荐
LeocenaY11 分钟前
C语言面试题总结
c语言·开发语言·数据结构
qeen8716 分钟前
【算法笔记】双指针及其经典例题解析
c++·笔记·算法·双指针
城管不管1 小时前
嵌入模型Embedding Model
java·开发语言·python·embedding·嵌入模型
Rust研习社1 小时前
Rust Pin 解析:核心原理与异步编程实践
开发语言·后端·rust
Drone_xjw1 小时前
解决 Qt 程序在 Kylin(麒麟)系统下表头“白屏”的问题
开发语言·qt·kylin
运维行者_1 小时前
通过OpManager的Windows服务监控能力释放最佳IT网络性能
服务器·开发语言·网络·windows·web安全·php
.千余1 小时前
【Linux】进程概念
linux·服务器·开发语言·学习
码界筑梦坊1 小时前
94-基于Python的商品物流数据可视化分析系统
开发语言·python·mysql·信息可视化·数据分析·毕业设计·fastapi
王老师青少年编程2 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【区间贪心】:雷达安装
c++·算法·贪心·csp·信奥赛·区间贪心·雷达安装
elseif1232 小时前
分组背包1
c++·学习·算法