Онлайн компилятор C

#include <stdio.h> int main() { int a[10]; int c=1; for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) if (a[i] ==a[j]&&i!=j) c++; } return 0; }
这段代码的目的是读取10个整数,然后统计数组中重复出现的数字。但目前的逻辑存在一些问题。

- 代码中的变量c初始值为1,但它的用途不明确。内层循环每次发现一个重复元素时都会增加c,但这样会导致同一个重复数字被多次计数,而且c的初始值1也不合理。
- 内层循环中,当i和j指向不同位置且元素相等时,c增加。但这样对于每个重复的数字,c会累加多次,而不是统计每个数字出现的次数或唯一重复的数字个数。

提示:
- 思考一下c应该代表什么?是统计重复数字的个数,还是统计每个数字出现的次数?当前c的初始值和累加方式可能不符合你的预期。
- 注意内层循环中,当i和j不同时,每次发现相等都会增加c,这会导致同一个重复数字被多次计数。例如数组中有三个相同的数字,c会被增加多次。你需要明确统计的目标是什么。