C程序设计语言笔记3
时间:2010-07-19 来源:xmg
打印输入单词的直方图;水平版
#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; /* wl[]最大值 */
int ovflow; /* 单词长度溢出 */
int wl[MAXWORD]; /* 记录单词长度 */
state = OUT;
nc = 0; /* 单词的字符数 */
ovflow = 0; /* 单词长度大于或等于最大值MAXWORD */
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;
}
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)
len = 0;
}else
len = 0;
while(len > 0){
putchar('*');
--len;
}
putchar('\n');
}
if(ovflow > 0)
printf("There are %d words >= %d\n", ovflow, MAXWORD);
}
相关阅读 更多 +










