垂直柱状图

其实这道题输出上有点恶心,本蒟蒻只能这样做,神犇们勿喷

#include <bits/stdc++.h>

using namespace std;
int main()
{
   char n[161];
   int a[27]={0},max=-2147483648;
   while(gets(n))//统计字母出现次数
     {
        for(int i=0;i<strlen(n);i++)
           if(n[i]!=' ')
              a[n[i]-'A']++; 
     }
   for(int i='A'-'A';i<='Z'-'A';i++)//统计最大值(在打印时优先打)
       if(a[i]>max)
          max=a[i];
   int max2=max;//备份*1
   for(int i=max2;i>=1;i--){//从输出的最高行向下打印
       for(char j='A'-'A';j<='Z'-'A';j++){
           if(a[j]-max>=0)//如果做大出现次数达到
               cout<<"* ";//输出一个*
           else 
              cout<<"  ";
       }
       max--;
       cout<<endl;
   }
   for(char i='A';i<='Z';i++)//打印A到Z字符
       cout<<i<<" ";
   return 0;
}
原文地址:https://www.cnblogs.com/jr-ag/p/9067742.html