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