您的位置:首页 > 其它

练习1-13 打印水平或垂直直方图

2014-12-19 16:31 169 查看
#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=='\t'||c=='\n'){
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\t",wl[i]);
for(int j=0;j<wl[i];j++){
printf(" * ");
}
printf("\n");
}
/*打印垂直直方图*/
for(int i=MAXHIST;i>0;--i){
for(int j=1;j<=wc;j++){
if(wl[j]%MAXHIST>=i){
printf(" * ");
}else{
printf("   ");
}
}
putchar('\n');
}
for(int i=1;i<=wc;i++){
printf(" %d ",wl[i]);
}
putchar('\n');
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐