我正在经历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;
答案 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;,我们增加数组中的字长位置。