在线编译器 C

#include <stdio.h> int is_two_same(int size, int a[]) { int p = 0; for (int i = 0; i < size ; i++) { for (int j = i + 1; j < size ; j++) { if (a[j] == a[i]) { p = 1; } } } return p; } int main() { int a[5] = {1, 235, 34646, 3, 4}; printf("%d", is_two_same(5, a)); return 0; }
这段代码定义了一个函数 `is_two_same`,它检查数组中是否有任意两个元素相等。如果有,函数返回1,否则返回0。主函数中用一个示例数组测试了这个函数。

- 你的代码逻辑是正确的,但有一个小问题:当找到重复元素时,你设置了 `p = 1`,但之后没有提前退出循环。这不会影响最终结果,但会浪费计算时间。可以考虑在找到重复后直接返回1,避免继续检查。
- 另外,注意函数名 `is_two_same` 暗示检查是否有两个相同元素,但你的实现会检查所有可能的重复对。如果数组中有三个相同元素,它也会返回1,这符合“至少有两个相同”的意图。确保你理解这个行为是否符合题目要求。