<span style="background-color: rgb(255, 255, 255); font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="objc">
#include <stdio.h>
#define MAXWORDLEN 10 /*单词的最大长度*/
#define OUT 0 /*在单词外部*/
#define IN 1 /*在单词内部*/
/*打印输入中单词长度的垂直直方图。横轴x代表单词的长度,纵轴代表长度为x的单词出现的次数
window下: EOF用 Ctrl+z 输入
Linux下: EOF用 Ctrl+d 输入
*/
int main()
{
int c;
int len=0;
int status=OUT;
int hist[MAXWORDLEN];
int i,j;
int max=0; //单词出现的最大次数
for(i=0;i<MAXWORDLEN;i++)
hist[i]=0;
while((c=getchar())!=EOF)
{
if(c==' '||c=='\n'||c=='\t')
{
if(status==IN)
{
if(len>MAXWORDLEN)
len=MAXWORDLEN;
++hist[len-1];
len=0;
}
status=OUT;
}
else if(status==OUT){
status=IN;
++len;
}
else
++len;
}
for(i=0;i<MAXWORDLEN;i++)
if(hist[i]>max)
max=hist[i];
putchar('\n');
for(i=max;i>0;i--)
{
for(j=0;j<MAXWORDLEN;j++)
{
if(hist[j]>=i)
putchar('*');
else
putchar(' ');
}
putchar('\n');
}
for(i=1;i<=MAXWORDLEN;i++)
printf("%d",i);
putchar('\n');
return 1;
}
测试:
gcc -o test test.c
./test
输入:
Hello
I am a boy from Beijing China Ctr+d
输出:
*
******
12345678910