打印输入中各个字符出现频率的直方图
题目来源:C程序设计语言1-14
//横向直方图
//只判断26个小写字母
#include<stdio.h>
int main()
{
int c,i,j;
int num[26],blacknumber = 0,othersnumber = 0;
char string[26];
for (i = 0;i<26;i++)
num[i] = 0;
while((c = getchar()) != EOF)
{
if (c >= 'a' && c <= 'z')
++num[c-'a'];
}
for(i=0;i<26;i++)
{
printf(" %c:",'a'+i);
for(j=0;j<num[i];j++)
printf("*");
printf("\n");
}
}
//纵向直方图
#include<stdio.h>
main()
{
int c,i,j;
int number = 0;
int num[26];
char string[26];
for (i = 0;i<26;i++)
num[i] = 0;
while((c = getchar()) != EOF)
{
if (c >= 'a' && c <= 'z')
if((++num[c-'a']) > number)
number = num[c-'a'];
}
for (i = number;i>0;i--)
{
for (j = 0;j<26;j++)
if (num[j] >= i)
printf("* ");
else
printf(" ");
printf("\n");
}
for (i = 0;i<26;i++)
printf("%c ",'a'+i);
}