在线编译器 C

#include <stdio.h> int main() {int arr[10]; scanf("%d",&arr[i]); for(int i=0;i<10;i++){ int cnt=0; for(int j=0;j<10;j++){ if(arr[i]==arr[j]){ cnt++; } }printf("%d\n",cnt); } return 0; }
这段代码试图统计数组中每个元素出现的次数,但存在几个关键问题。

首先,数组 `arr` 声明后没有输入任何数据,就直接在循环中使用了 `arr[i]`,此时数组元素的值是未定义的。另外,`scanf` 语句写在了循环外面,并且使用了未定义的变量 `i`,这会导致编译错误或未定义行为。

- 你需要先通过循环读取10个整数存入数组,然后再进行统计。注意 `scanf` 应该放在循环内部,并且循环变量要正确使用。
- 统计逻辑中,内层循环会重复计算每个元素,导致每个元素都输出一次计数,而不是只输出每个不同元素的计数。思考如何避免重复输出,例如只对第一次出现的元素进行统计。