1-13编写一个程序,打印输入中单词长度的直方图,水平方向的直方图比较容易绘制, 垂直方向的直方图则要困难些
/*编写一个程序,打印输入中单词长度的直方图,水平方向的直方图比较容易绘制,
垂直方向的直方图则要困难些*/
/*打印输入中单词长度的直方图,水平方向的直方图*/
#include<stdio.h>
#define IN 1 //在单词内
#define OUT 0 //在单词外
int main() {
int c,i,j,state;
int wordlength = 0;
int length[15];
for (i = 0; i < 15; ++i) {
length[i] = 0;/*给数组赋初始值*/
}
state = OUT;
while ((c = getchar()) != EOF)
{
if (c == ' ' || c == '\t' || c == '\n') {
if (state == IN)
length[ wordlength -1]++;/*用数组存放对应单词的长度,
如单词长度为1的存放在length[0]中*/
state = OUT;
wordlength = 0;
}
else
++wordlength;
state = IN;
}
/*打印水平方向的直方图*/
/*for (i = 0; i < 15; i++) {
printf("%-4d",i);
for (j = 0; j < length[i]; j++) {
printf("*");
}
printf("\n");
}*/
/*打印垂直方向的直方图*/
//求出最大的值
int max = 0;
for (i = 0; i < 15; ++i) {
if (length[i] > max) {
max = length[i];
}
}
//外循环打印y轴
//内循环打印X轴
for (i = max; i > 0; --i) {
for (j = 0; j < 15; ++j) {
if (length[j] != 0) {
if (length[j] >= i) {
printf("** ");
}
else
printf(" ");
}
}
printf("\n");
}
//打印单词的长度
for (i = 0; i < 15;++i) {
if (length[i]!=0)
printf("%-4d",i);
}
printf("\n");
//打印单词长度的个数
for (i = 0; i < 15; ++i) {
if (length[i] != 0) {
printf("%-4d", length[i]);
}
}
return 0;
}
浙公网安备 33010602011771号