簡體   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