题目描述输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数。注意:只用输出字符的出现次数,不用输出空白字符,数字或者标点符号的输出次数。输入输入包括4行由大写字母组成的文本,每行上字符的数目不超过80个。输出输出包括若干行。其中最后一行给出26个大写英文字母,这些字母之间用一个空格隔开。前面的几行包括空格和星号,每个字母出现几次,就在这个字母的上方输出一个星号。注意:输出的第一行不能是空行。
样例输入
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
样例输出
#include<stdio.h>
int main()
{
char zi[99],show='A';
int count[999]={0},i,max=0,j=0;
for(i=1;i<=4;i++)//需要读入四行字符
{
gets(zi); *//读入整行字符*
for(j=0;zi[j]!='\0';j++)
{
if(zi[j]>='A'&&zi[j]<='Z')
{
count[zi[j]]++; *//除去标点符号,记录每个数字出现的次数*
}
}
}
for(i='A';i<='Z';i++)
{
if(max<count[i])
{
max=count[i]; *//得到最多次数,这也决定了直方图的高度*
}
}
for(i=0;i<=max;i++)
{
if(i==max)//已经打印到最后一行
{
for(i=0;i<=25;i++)
{
printf("%c ",show);*//打印出最后一行的字母*
show++;
if(i==25)
{
return 0;
}
}
}
for(j='A';j<='Z';j++)*//从上往下的顺序打印出直方图*
{
if(count[j]>=max-i)
{
printf("* ");
}
else
{
printf(" ");
}
}
printf("\n");
}
return 0;
}