#include<stdio.h>
#define MAXHIST 15
#define MAXWORD 11 //一个单词最大的长度
#define IN 1
#define OUT 0
main()
{
int c, i, nc, state;
int len;
int maxvalue;
int ovflow;
int wl[MAXWORD];
state = OUT;
nc = 0;
ovflow = 0;
for(i = 0; i < MAXWORD; ++i) //数组清零
wl[i] = 0;
while((c = getchar()) != EOF){
if(c == ' ' || c == '\n' || c == '\t'){
state = OUT; //空白字符出现 标志位置零
if(nc > 0)
if(nc < MAXWORD)
++wl[nc]; //计算单词的长度的个数
else
++ovflow; //长度超过10的单词的个数
nc = 0;
}else if(state == OUT){ //下降沿出现 空白符后的地一个字符
state = IN;
nc = 1;
}else
++nc; //计算单词的长度
} //结束统计
maxvalue = 0; // 在数组中选出最大值的一个程序 !!!
for(i = 1; i < MAXWORD; ++i)
if(wl[i] > maxvalue)
maxvalue = wl[i];
for(i = 1; i < MAXWORD; ++i){ //打印各单词长度的数量
printf("%5d - %5d : ", i, wl[i]);
if(wl[i] > 0){
if((len = wl[i] * MAXHIST / maxvalue) <= 0)
//单词个数到*之间的转换 最多个数的单词会有会有MAXHIST个*
len = 1; //并且当有单词数时至少有一个*
}else
len = 0;
while(len > 0){
putchar('*');
--len; //打印len个*
}
putchar('\n'); //打印空格 跳到下一个i
}
if(ovflow > 0)
printf("there are %d words >= %d\n",ovflow,MAXWORD);
}
#define MAXHIST 15
#define MAXWORD 11 //一个单词最大的长度
#define IN 1
#define OUT 0
main()
{
int c, i, nc, state;
int len;
int maxvalue;
int ovflow;
int wl[MAXWORD];
state = OUT;
nc = 0;
ovflow = 0;
for(i = 0; i < MAXWORD; ++i) //数组清零
wl[i] = 0;
while((c = getchar()) != EOF){
if(c == ' ' || c == '\n' || c == '\t'){
state = OUT; //空白字符出现 标志位置零
if(nc > 0)
if(nc < MAXWORD)
++wl[nc]; //计算单词的长度的个数
else
++ovflow; //长度超过10的单词的个数
nc = 0;
}else if(state == OUT){ //下降沿出现 空白符后的地一个字符
state = IN;
nc = 1;
}else
++nc; //计算单词的长度
} //结束统计
maxvalue = 0; // 在数组中选出最大值的一个程序 !!!
for(i = 1; i < MAXWORD; ++i)
if(wl[i] > maxvalue)
maxvalue = wl[i];
for(i = 1; i < MAXWORD; ++i){ //打印各单词长度的数量
printf("%5d - %5d : ", i, wl[i]);
if(wl[i] > 0){
if((len = wl[i] * MAXHIST / maxvalue) <= 0)
//单词个数到*之间的转换 最多个数的单词会有会有MAXHIST个*
len = 1; //并且当有单词数时至少有一个*
}else
len = 0;
while(len > 0){
putchar('*');
--len; //打印len个*
}
putchar('\n'); //打印空格 跳到下一个i
}
if(ovflow > 0)
printf("there are %d words >= %d\n",ovflow,MAXWORD);
}