我对K& R练习1-13的尝试使得栏杆太长了

时间:2017-06-20 01:41:31

标签: c

我的代码是

#include <stdio.h>
#include <ctype.h>

main() {
  int nwords[10];
  int c;
  int i;
  int firstLetter;

  c=0;
  i=0;
  firstLetter=0;

  while ((c = getchar()) != EOF) {
    if (isalpha(c)) {
      firstLetter = 1;
      i++;
    }
    if (firstLetter != 0) {
      nwords[i]++;
      i=0;
    }
  }

  for (i=0; i<10; i++) {
    printf("%d, ");
    while (nwords[i] > 0) {
      printf("=");
      -- nwords[i];
    }
    if (nwords[i] == 0) {
      printf("/n");
    }
  }
}

我希望ouptut是一个水平直方图,显示输入文件中字长的频率,如下所示:

10 ===
9 ==
8
7 ==== 
6 = 
5 ======
4 ===
3 =
2 = 
1 =

但相反,我的程序会阻止空格键直到我必须杀死它。

我做错了什么?谢谢。

2 个答案:

答案 0 :(得分:0)

<{1> $f更改for (i=0; i<10; i++) printf("%d, ")后,将变量的值替换为printf("%d", variable)
并将%d替换为printf("/n");

答案 1 :(得分:0)

除了surjit的回答,您需要进行以下更改:

int nwords [10] = {0};