打印输入中单词长度的直方图(垂直方向的直方图)

来源:互联网 发布:打印机wsd端口是什么 编辑:程序博客网 时间:2024/06/01 10:44
<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('*');elseputchar(' ');}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

0 0
原创粉丝点击