繁体   English   中英

在 C 中查找数组中每个元素的频率

[英]Find the frequency of each element in array in C

我的任务是找到每个元素的频率,元素在 0 到 100 之间。-1 表示输入结束。

我在查找频率方面没有问题,但是我的代码有一些问题,我不知道它是什么。 可能使用 do-while 循环。 我是初学者,希望对你有所帮助。

int main() {
  int n = 0, i = 0, a[100], c;
  int b[101] = {0};

  do {
    scanf("%d", &c);
    if (c == -1)
      break;
    else if (c < 0 || c > 100)
      printf("\nNumbers have to be between 0 i 100!\n");
    else {
      a[i] = c;
      i++;
      n++;
    }
  } while (c != -1);

  n--;
  for (i = 0; i < n; i++)
    b[a[i]]++;
  for (i = 0; i < n; i++) {
    if (b[i] != 0)
      printf("Count of %d is %d.\n", i, b[i]);
  }
}
for (i=0;i<n;i++){
    if (b[i]!=0)
        printf("Count of %d is %d.\n", i,  b[i]);
}

这是逻辑错误,不是语法错误,而是语义错误。

您应该显示 b 的所有内容。 因为, B[] 有数量的计数。 但是,循环从 0 开始并以 n(数据数量)结束。

所以,只要做出这样的改变。

for (i=0;i<101;i++){
    if (b[i]!=0)
        printf("Count of %d is %d.\n", i,  b[i]);
}

而且,第二件事是您不需要减小 n 的值。

只是,删除

n--;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM