个人学习内容,仅供参考。
单词长度直方图-纵向
#include <stdio.h>
#define IN 0
#define OUT 1
main(){
int nl[20];
int c,state,nw,i,j,nm;
nw = nm = 0;
state = OUT;
for(i =0;i < 20;++i){
nl[i] = 0;
}
while((c=getchar()) != EOF){
if(c == ' '|| c == '\n'|| c == '\t' ){
state = OUT;
}
else if(state == OUT){
state = IN;
++nl[nw];
++nw;
} else if(state == IN){
++nl[nw-1];
}
}
printf("|\n");
//取最长单词长度
for(i =0;i < nw;++i){
if(nm < nl[i])
nm = nl[i];
}
for(i = nm + 1;i > 0 ;--i){
printf("|");
for(j = 0; j<nw;++j){
if(i == nl[j] + 1)
printf(" (%d)",nl[j]);
else if(i <= nl[j])
printf(" ***");
else
printf(" ");
}
printf("\n");
}
printf("------------------------------------------\n");
printf(" 单词长度纵向直方图 \n");
}
单词长度直方图-横向
#include <stdio.h>
#define IN 0
#define OUT 1
main(){
int nl[20];
int c,state,nw,i,j;
nw = 0;
state = OUT;
for(i =0;i < 20;++i){
nl[i] = 0;
}
while((c=getchar()) != EOF){
if(c == ' '|| c == '\n'|| c == '\t' ){
state = OUT;
}
else if(state == OUT){
state = IN;
++nl[nw];
++nw;
} else if(state == IN){
++nl[nw-1];
}
}
printf("|\n");
for(i =0;i < nw;++i){
printf("|");
for(j = 0; j<nl[i];++j){
printf("*");
}
printf("︵\n");
printf("|");
for(j = 0; j<nl[i];++j){
printf("*");
}
printf("%d\n",nl[i]);
printf("|");
for(j = 0; j<nl[i];++j){
printf("*");
}
printf("︶\n|\n");
}
printf("-----------------------------\n");
printf(" 单词长度横向直方图 \n");
}