#include <stdio.h>
#include <stdlib.h>
#define MAXLENGTH 15//直方图最大长度
#define MAXWORD 11//单词最大长度
#define IN 1
#define OUT 0
int main()
{
char ch;
int count=0;
int length[MAXWORD+1]={0};//数组用来记录最大长度内各长度的单词个数
int state=OUT;//用于记录当前字符在单词内还是单词外
while((ch=getchar())!=EOF){
if(ch=='\n'||ch=='\t'||ch==' '){
if(state==IN){
length[count]++;
state=OUT;
count=0;
}
}
else if(state==OUT){
state=IN;
count++;
}
else
count++;
}
int max=0;//max用来记录输入单词中最大长度
for(int i=1;i<=MAXWORD;i++){
if(length[i]>max)
max=length[i];
}
int len;//用来记录输出直方图各列的长度
//以下处理不同于水平方向,水平方向时,若相对长度不为零且不到一,看作一
//垂直方向,当相对高度不为零且不到一,看作零。具体为何详见代码
for(int i=max;i>=1;i--){
for(int j=1;j<=MAXWORD;j++){
if(length[j]*(MAXLENGTH/max)>=i)
printf(" %c",'*');
else
printf(" %c",' ');
}
putchar('\n');
}
for(int i=1;i<=MAXWORD;i++)
printf("%4d",i);
putchar('\n');
for(int i=1;i<=MAXWORD;i++)
printf("%4d",length[i]);
putchar('\n');
return 0;
}
打印输入中单词长度的直方图(垂直方向)
最新推荐文章于 2023-08-20 22:43:24 发布