本题也是属于打印字符题型,但似乎比普通的找规律格式控制输出不太一样。
用到了类似桶排序的计数法,涉及到字符时需要特别注意的就是整型和字符型的转换,可以通过在整型后减去一个字符得到整型类型,也可以直接转换成字符对应的ASCII值来控制循环进行遍历。

下面进入正题:
描述

林静究竟在忙什么?暑假没有回家,现在打电话到他宿舍总是不在,郑微通过他的舍友给他留了自己的电话,也不见他回复。明明上火车的前两天郑微还跟林静通过电话,他在那一头答应得好好的,等她到了广州,他就会带她到处去玩,吃遍广州的小吃,当时郑微没有感觉到丝毫的异样,就连他的笑声也是一如既往地带着她熟悉的宠溺和宽容。
  可是现在郑微没忘记两人的约定,林静却踪影全无。难道是她打错了电话?不可能!那个电话她倒着也能背出来,何况那边接电话的舍友明明也是认得林静的,只是说他不在。
  不在不在,老是不在!还说是个模范好学生,不知道跑到哪鬼混去了!郑微气鼓鼓地想,等到见了面,非把他数落一顿不可。

有点不高兴的郑薇手里拿着一封已经封上了口的信,里面写满了她想对林静说的话,但此时的她小心将信封撕开,想再看一遍写下时的那份甜蜜。

你要做的就是对一篇文章的字母进行统计。 而文章是由好多行字母,空格,标点组成的每行不会超过72个字符,请打印一个统计直方图来统计每个字母出现的次数 (不统计空行,数字,标点)。

输入
输入一份郑薇的甜言蜜语,只含有大小写字符,空格,标点。

输出
打印这一份甜蜜的统计图,具体如样例(最后不要空行)。

输入样例 1

Amazing grace! How sweet the sound!
That saved a wretch like me!
I once was lost but now I am found,
Was blind but now I see.

输出样例 1

        *                                          *
*       *
*       *                             *
*       *                 * *       * *     *
*       *       *         * *       * *     *
*       *       *         * *       * *     *
*     * *     * *         * *       * * *   *
* * * * *     * *     * * * *       * * *   *
* * * * *   * * *     * * * *     * * * *   *
* * * * * * * * *   * * * * *     * * * * * *     *
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

提示

出国的林静并没有告诉郑薇任何消息。

思路:
首先,由于输出的均为大写字母,肯定要将小写字母转换为大写字母,这里我用到的是toupper函数,也可以判断是否为小写字母,如果是,则减去32得到其大写字母;
全部转换完之后,用一个数组对所有输入的字母计数,用来统计这26个字母分别具有的个数,然后得到个数最大值;
最后通过得到的这个个数最大值循环遍历,并且用flag来标记控制字符之间空格的输出。

下面是对应的AC代码实现:

#include<bits/stdc++.h>using namespace std;
int a[100];  //定义一个数组用来计数
int main()
{string s; //定义字符串类型memset(a,0,sizeof(a));  //初始化该数组,即数组中无元素时计数为0while(getline(cin,s))  {int len=s.length();for(int i=0; i<len; i++){s[i]=toupper(s[i]);  //toupper函数,若该元素是小写字母,则返回其大写字母a[toupper(s[i])]++;  //对每个输入的元素计数,即统计各个元素的个数,如:A出现了5次,计数为a[A]=5}}int maxx=0;  //首先将所统计的元素中个数最多的先置为0for(int i=65; i<=90; i++)  //由于i定义的是整型,而大写字母A和Z的ASCII值分别为65和90maxx=max(maxx,a[i]); //得到统计中的个数最多的值for(int i=0; i<maxx; i++) {flag=0; //作为标记,控制空格的输出for(int j=65; j<=90; j++){if(flag) cout<<" ";if(maxx-i-1<a[j]) //表示只有该元素的个数比maxx-i大1时才输出星号,开始时只有个数最多的该元素才输出*cout<<"*";else cout<<" "; //字母对应列不符合的均输出空格flag=1; //由于每个字符或者*之间均有空格,因此不在字母对应列的均为空格}cout<<endl; //每循环一行之后输出换行}cout<<"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\n";
}

加了注释,希望能更好的帮助你理解哦!

第二章:我们都有梦想 (艺术打印字符型)相关推荐

  1. Java编程思想学习-《第二章 一切都是对象》

    第2章 一切都是对象 尽管Java是基于C++的,但是相比之下,Java是一种更"纯粹"的面向对象程序设计语言.Java语言假设我们只进行面向对象的程序设计.也就是说,在开始用Ja ...

  2. c++ string 删除字符_算法笔记|(5)第二章C、C++的快速入门字符数组的存放方式string.h文件...

    字符数组的存放方式 由于字符数组是由若干个char类型的元素组成的,因此字符数组的每一位都是一个char字符,除此之外,在一维字符数组或者二维字符数组的第二维的末尾都有一个空字符\0表示存放的字符串的 ...

  3. 1126: 第二章:我们都有梦想

    //很久之前写的,入个档 1126: 第二章:我们都有梦想 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 500 Solved: 161 [Submit ...

  4. 程序员编程艺术:第二章、字符串是否包含问题

    程序员编程艺术:第二章.字符串是否包含及相关问题扩展 作者:July,yansha. 时间:二零一一年四月二十三日. 致谢:老梦,nossiac,Hession,Oliver,luuillu,雨翔,啊 ...

  5. Dcmtk在PACS开发中的应用(基础篇) 第二章 打印影像(胶片) 作者 冷家锋

    第二章 打印影像(胶片) 1 .目的:将 DICOM 影像提交至相机(干式胶片打印机),并打印. 2 .实验平台: Windows XP Professional SP2 ,其他 Windows 系统 ...

  6. yolov5使用2080ti显卡训练是一种什么样的体验我通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程。>>>>>>>>>第二章番外篇

    第二章番外篇:yolov5通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 前期准备: 2 ...

  7. 【编程实践】第二章 C++面向对象编程《C++程序设计语言》 / By 禅与计算机程序设计艺术ChatGPT

    [编程实践]第二章 C++面向对象编程<C++程序设计语言> / By 禅与计算机程序设计艺术&ChatGPT 第二章 C++面向对象编程 在C++中,面向对象编程主要通过类和对象 ...

  8. 并发编程的艺术:第二章

    第二章:Java并发机制的底层实现原理 Java代码在编译之后会生成字节码文件,也就是.class文件.class文件经过类加载器的加载到JVM中,JVM解释字节码文件,最终转化为汇编指令在CPU上执 ...

  9. 日本语达人之道 第二章

    <日本语达人之道>第二章 PS:果然呀,那个偶还是决定把它也打出来了打动人心的说话技巧 --有了它,事事春风得意在日常生活中,我们会遇到许多场面,每一个场面都有着不同的感触,本来想这样说, ...

最新文章

  1. 【Git版本控制】为什么要先commit,然后pull,最后再push?而不是commit然后直接push?...
  2. 利用Matlab比较IIR和FIR,细说IIR滤波器和FIR滤波器的区别
  3. 简单示例,VS2019调试C语言程序
  4. 使用CLion的时候,对于cmake的使用
  5. (数据库系统概论|王珊)第七章数据库设计-第四节:逻辑结构设计
  6. 错误记录 MongoClient opened before fork. Create MongoClient
  7. html中body呈现属性,HTML body 标签
  8. 62. Using Default Magento Cache
  9. 安装软件提示计算机管理员权限,安装需要管理员权限怎么办 设置安装软件需要管理员权限的方法教程...
  10. 5.css企业开发经验,习惯盒模型,层模型
  11. Spring Boot太重,Vert.x真香!
  12. <机器学习 房价预测 >对贝壳租房网 信息爬取 及处理。
  13. Isilon上数据是如何存放的?
  14. shell脚本编写九九乘法表_Shell脚本:打印九九乘法表
  15. 6 计算机网络 待更新
  16. termux安装以及基本配置
  17. 自动阅读是骗人的吗?新手一定要看,避免入坑
  18. Spring Boot 集成 Swagger2,构建强大的 API 文档
  19. java 双向链表例子_双向链表(示例代码)
  20. 移动互联网时代的新特点

热门文章

  1. Java实现ATM机系统
  2. win7打开计算机无法最大化,win7系统下IE浏览器窗口无法最大化显示怎么办
  3. 使用10DLC的好处以及限制
  4. 每周一磁 · 铝镍钴永磁材料 AlNiCo
  5. “绿毛饮水机”令人震惊
  6. C++多线程,多线程通信,队列
  7. LaTex各种命令汇总
  8. 曾国藩家书:必须自立自强
  9. 在php中如何设置字体宋体,css怎么设置字体为宋体
  10. 10分钟了解关键路径及如何求得关键路径