我正在通过《C 编程语言》一书学习 C,我正在尝试解决练习 1.13:
“编写一个程序来打印输入中单词长度的直方图。很容易 绘制条形水平的直方图;垂直方向更具挑战性。”
我编写了代码,但是当我按 CTRL+Z(文件结束)时,它显示全零而不是单词的长度。
有人可以给我提示我哪里出错了吗?
#include <stdio.h>
/* print a histogram of the length of words from input */
main()
{
int c, i, wordn, space;
int lengthn[20];
wordn = space = 0;
for (i = 0; i < 20; ++i)
lengthn[i] = 0;
while ((c = getchar()) != EOF) {
if (c == ' ' || c == '\t' || c == '\n')
if (space == 1) {
++wordn;
space = 0;
++i;
}
if (c != ' ' && c != '\t' && c != '\n') {
++lengthn[i];
space = 1;
}
}
printf("Length: ");
for (i = 0; i < 16; ++i)
printf("%d ", lengthn[i]);
printf("\n --------------------------------------------------------------\n");
printf("Word: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n");
}
最佳答案
(因为OP要求的是提示,而不是解决方案)
那么......这个循环之后i
等于什么?
for (i = 0; i < 20; ++i)
lengthn[i] = 0;
接下来你会在哪里使用它?
关于c - 单词长度直方图练习提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5843156/