#include <stdio.h> #define IN 1 /* 在单词内部 */ #define OUT 0 /* 在单词外部 */ #define MAXLEN 15 /* 单词的最大长度 */ #define MAXHIST 15 /* 直方图的最大长度 */ #define MAXWORD 50 /* 限制输入单词的上限 */ int wl[MAXWORD]; /* 用于存放单词长度的数组 */ /* 打印垂直方向的直方图 */ int main() { char c; int wc=0;/*统计单词的个数*/ int len = 0;/*当前单词的长度*/ int state = OUT; for(int i=0;i<MAXWORD;i++){ wl[i] = 0;/*数组初始化*/ } /*while循环统计每个单词的长度*/ while((c=getchar())!=EOF){ if(c==' '||c==' '||c==' '){ if(state==IN){ if(len>MAXLEN){ len = MAXLEN; } wl[++wc] = len; } len = 0; state = OUT; }else if(state == OUT){ state = IN; len++; }else{ len++; } } /*打印水平直方图*/ for(int i=1;i<=wc;i++){ printf("%3d ",wl[i]); for(int j=0;j<wl[i];j++){ printf(" * "); } printf(" "); } /*打印垂直直方图*/ for(int i=MAXHIST;i>0;--i){ for(int j=1;j<=wc;j++){ if(wl[j]%MAXHIST>=i){ printf(" * "); }else{ printf(" "); } } putchar(' '); } for(int i=1;i<=wc;i++){ printf(" %d ",wl[i]); } putchar(' '); return 0; }