[英]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.