c - 单词长度直方图练习提示?

标签 c kernighan-and-ritchie

我正在通过《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/

相关文章:

c - K&R C 练习 1-18 无输出/调试问题

c - 将 sbrk 的结果分配给指针时的对齐问题 - K&R

java - 串联/不间断套接字编程

c - 按位将两个或多个数字压缩在一起

c - 如何告诉 GCC 指针参数总是双字对齐的?

c - 我对 K&R 练习 1-22 的解决方案有什么问题?

c - K&R 1.19 练习 ("reverse"函数)

c - ncurses:为什么 RGB 颜色值的范围是 0 - 1000?

在C中复制和合并两个字符串

c - 函数声明与原型(prototype)的替代 (K&R) C 语法