如何计算单词长度(K& R书练习)

时间:2014-06-22 18:25:03

标签: c

我正在经历Kerninghan& Ritchie" C编程语言"第2版​​,我坚持练习1-13和1-14,分别涉及计算单词长度和字符出现次数。我现在只是测试(不知道如何打印直方图,但我可能会稍后尝试)并且计算单词长度对我来说并不适合。我似乎过多地增加阵列位置,但为什么呢?

#include <stdio.h>

int main(void){
    int array[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    int counter, c, position;
    while ((c = getchar()) != EOF){
        if(c == ' '){
            counter = 0;
        } else {
            counter ++;
            array[counter] += 1;
        }
    }
    position = 0;
    for (position = 0; position < 10; ++position){
        printf("%d", array[position]);
    }
    return 0;
}   

修改 样本输入:&#34; o tw thr&#34;

示例输出 - &#34; 0321000000&#34;

2 个答案:

答案 0 :(得分:0)

你必须像这样初始化计数器:

counter = 0;

使用前。

答案 1 :(得分:0)

试试这个code

#include <stdio.h>

int main(void){
int array[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int counter=0, c, position;
while ((c = getchar()) != EOF){
    if(c == ' ' || c == '\n' || c == '\t'){
        array[counter]++;
        counter = 0;
    } else {
        if(counter<9) {
            counter ++;
        }
    }
}
if(counter!=0) {
    array[counter]++;
}
for (position = 0; position < 10; ++position){
    printf("%d ", array[position]);
}
    return 0;
}

代码的问题在于,无论何时出现角色,您都在增加数组位置。我们需要的是等到这个词完成后,我们一遇到&#34; &#34;,我们增加数组中的字长位置。