#include<stdio.h>
#define LEN 128
main ()
{
int letters[LEN];
int f,g;
for(int i=0;i<LEN;++i) /*数组初始化*/
{
letters[i]=0;
}
int c;
while((c=getchar())!=EOF)/*字符数量统计*/
{
++letters[c];
}
printf("直方图如下\n");
for(int f=0;f<LEN;++f)/*图表生成(水平)*/
{
if(letters[f]!=0)
{
if(f==' ')
{
printf("Blank :");
}
else if(f=='\t')
{
printf(" \\t :");
}
else if(f=='\n')
{
printf(" \\n :");
}
else
{
printf("%c:",f);
}
for(int j=0;j<letters[f];++j)
{
printf("*");
}
printf("\n");
}
}
/*图表生成(竖直)*/
int max=0; /*找出最大值*/
for(f=0;f<LEN;++f)
{
if(max<letters[f])
{
max = letters[f];
}
}
for(f=max;f>=1;--f) /*从上向下打印*/
{
for(g=0;g<LEN;++g)
{
if(letters[g]!=0)
{
if(letters[g]<f)
{
printf(" ");
}
else
{
printf(" * ");
}
}
}
printf("\n");
}
for(g=0;g<LEN;++g) /*打印最后一行*/
{
if(letters[g]!=0)
{
if(g==' ')
{
printf(" Blank ");
}
else if(g=='\t')
{
printf(" TAB ");
}
else if(g=='\n')
{
printf(" Enter ");
}
else
{
printf(" %c ",g);
}
}
}
}