#include <stdio.h>
#define MAXHIST 15
#define MAXWORD 11
#define IN 1
#define OUT 0
//打印输入中单词长度的水平方向直方图,
void main()
{
int c, i, nc, state;
int len; //length of each bar
int maxvalue; //maximum value for wl[]
int ovflow; //number of overflow words
int wl[MAXWORD]; //word length count
state = OUT;
nc = 0; //number of chars in a word
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;
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 - %d : ",i, wl[i]);
if(wl[i] > 0) {
if((len * wl[i] * MAXHIST / maxvalue) <= 0)
len = wl[i];//书上此处本来为len = 1
}else
len = 0;
while (len > 0){
putchar('*');
--len;
}
putchar('/n');
}
if (ovflow > 0)
printf("There are %d words >= %d/n", ovflow, MAXWORD);
}
c程序设计语言官方题解版勘误1
最新推荐文章于 2023-06-16 17:18:25 发布