字符串处理

贝贝的图形

题目描述
贝贝最近玩起了字符游戏,规则是这样的:读入四行字符串,其中的字母都是大写的,乐乐想打印一个柱状图显示每个大写字母的频率。你能帮助他吗?
输入 输入共有4行:每行为一串字符,不超过72个字符。
输出与样例的格式保持严格一致。
样例输入
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
样例输出
在这里插入图片描述
注意:
1.相邻字符间有一个空格。
2.最后一行的26个大写字母每次必须输出。
3.大写字母A所在的第一列前没有空格。

做的时候以为很难,都做好长期抗战的准备了,最后做完发现竟然一遍AC了。嗯,题目很水,自上而下,自左而右的一次遍历就能解决。需要注意的是每行第一个和其他的输出格式不一样,要分情况打印。

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n,i,j,b[300]={0},maxn=0;
        char a[75];
        n=4;
        while(n--)
        {
            gets(a);
            for(i=0;a[i]!='\0';i++)
            {
                if(a[i]>='A'&&a[i]<='Z')
                {
                    b[a[i]-'A']++;
                    maxn=max(maxn,b[a[i]-'A']);
                }
            }
        }
        for(j=maxn;j>0;j--)
        {
            for(i=0;i<26;i++)
            {
                if(i==0)
                {
                    if(b[i]>=j) printf("*");//第一个后面没有空格
                    else printf(" ");
                }
                else
                {
                    if(b[i]>=j) printf(" *");
                    else printf("  ");
                }
            }
            printf("\n");//每行结束要换行
        }
        printf("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");
        return 0;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值