#include<stdio.h>
/* 打印输入中单词长度的直方图(垂直) */
#define MAX 300
void main()
{
int c, i, j, nchar, nword, ncmax;
int countc[MAX];
nchar = nword = ncmax = 0;
for (i = 0; i < MAX; i++)
countc[i] = 0;
// 初始化赋初值
c = getchar();
while (c != EOF) // 循环体输入
{
while (c == ' ' || c == '\t' || c == '\n')
c = getchar();
// 去除开始的空格
nword++; // 计算单词个数
while (c != '\n' && c != ' ' && c != '\t')
{
nchar++;
c = getchar();
} // 计算单词长度
countc[nword - 1] = nchar; // 录入数据
while (c == ' ' || c == '\t')
c = getchar();
// 跳过非字符输入
nchar = 0;
// 单词长度计数清零
while (c == '\n')
{
for (i = 0; i < nword; i++)
{
(ncmax > countc[i]) ?ncmax : (ncmax = countc[i]);
} // 判断最大列数
printf("words:%d,maxchar:%d\n", nword, ncmax); // 测试点
for (i = 0; i < ncmax; i++)
{
for (j = 0; j < nword; j++)
{
(ncmax - i > countc[j]) ? printf(" ") : printf("*");//消消乐
} // 循环打印行
printf("\n");
}// 循环打印列
c = getchar();
nword = 0;
ncmax = 0;
} // 清算,重新输入、计数及记单词数
}
}