在线编译器 C

#include <stdio.h> enum { SIZE = 10 }; int main() { int A[SIZE]; for (int i = 0; i < SIZE; i++) { scanf("%d", &A[i]); } int max, times_max = 0, times = 0; for (int i = 0; i < SIZE; i++) { times = 0; for (int j = 1; j < SIZE; j++) { if (A[i] == A[j]) { times++; } } if (times > times_max) { times_max = times; max = A[i]; } } printf("%d", max); return 0; }
这段代码试图找出数组中出现次数最多的元素并输出它。但存在一个逻辑错误:内层循环从 j=1 开始,而不是从 0 开始,导致每个元素与自己比较时被跳过,并且当 i 变化时,比较的起始位置固定,造成计数不准确。

- 内层循环的 j 应该从 0 开始,才能正确统计每个元素出现的总次数。当前写法会漏掉与自身以及前面元素的比较。
- 当有多个元素出现次数相同时,代码只记录了第一个达到最大次数的元素,但题目可能要求输出第一个出现次数最多的元素,这一点需要确认是否符合预期。