Online Compiler C

#include <stdio.h> int main() { int arr[10]; for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); int cnt = 0; for (int j = 0; j < 10; j++) { if (arr[i] == arr[j]) { cnt++; } } printf("%d\n", cnt); } return 0; }
这段代码试图统计数组中每个元素出现的次数,但逻辑有误。它读取一个数字后立即统计当前数组中所有元素(包括未初始化的部分)与该数字相等的次数,导致结果不正确。

- 内层循环遍历了整个数组,但此时数组只有前 i+1 个元素被赋值,其余位置是未初始化的垃圾值,这些垃圾值可能被误判为相等。
- 统计逻辑应该等所有数字都读入后再进行,而不是每读一个就统计一次。