m0_52923314 2022-03-19 01:21 采纳率: 100%
浏览 171
已结题

STL模板之键值对容器实例:基于map统计26个字母出现频率

基于键值对映射map统计一段英文中的26个字母出现的次数,注意区分大小写。

相关知识
为了完成本关任务,你需要掌握:1.解题思路。

解题思路
设计一个map:键为字符类型,值为整形类型,并让初始值为0。遍历英文中出现的字符,只要是字母就做为键插入map,并让值加1,最后遍历输出结果。

编程要求
本关的编程任务是补全右侧代码片段main中Begin至End中间的代码,具体要求如下:

创建一个空的键值对映射mp:map<char, int> mp;

读取和处理数据,一行英文句子,长度不超过100;

遍历键值对映射mp,严格按照输出格式打印结果;

清空键值对映射mp。

测试说明
平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

以下是平台的测试样例:

测试输入:

The world is but a little place, after all.

预期输出:

print map: 17

T 1

a 4

b 1

c 1

d 1

e 4

f 1

h 1

i 2

l 6

o 1

p 1

r 2

s 1

t 4

u 1

w 1

0

输入格式:

一行英文

输出格式:

print map: N,其中N是map的大小

遍历输出N行,map中的键和值:key map[key]

非学员输出0,用于检测map清空

  • 写回答

3条回答 默认 最新

  • 关注

    补全右侧代码,你右侧代码发一下啊
    参考代码如下:

    #include <iostream>
    #include <string>
    #include <map>
    
    using namespace std;
    
    int main()
    {
        //保存字符串
        string str;
        //getline属于string的类型,需要引入<string>,而cin.getline属于istream类型,x
        getline(cin, str);
        //1.建设映射公式,例如每个字母出现的次数,‘a" -> 4
        map<char, int> mp;
        //遍历字符串,统计字母或者数字的个数
        for (int i = 0; i < str.length(); i++)
        {
            if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z'))
                mp[str[i]]++;
        }
        cout << "print map: " << mp.size() << endl;
        //遍历迭代器,输出每个字符出现的次数
        for (map<char, int>::iterator iter = mp.begin(); iter != mp.end(); ++iter) {
            cout << iter->first << " " << iter->second << endl;
        }
        mp.clear();
        cout << mp.size() << endl;
    
        return 0;
    }
    

    img

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 专家已采纳回答 3月22日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵