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

#include <stdio.h> int is_two_same(int size,int a[]){ for (int i=0;i<size;i++){ for(int j=i+1;j<size;j++){ if(a[i]==a[j]){ return 1; } } } return 0; }
这段代码定义了一个函数 `is_two_same`,它检查一个整数数组中是否存在两个相同的元素。如果存在,返回1;否则返回0。代码逻辑基本正确,但有一个潜在问题。

- 函数参数 `int a[]` 没有指定数组长度,但 `size` 参数提供了长度,这是合理的。不过,在C语言中,数组作为参数传递时会退化为指针,所以 `sizeof(a)` 无法获取数组大小,但这里你用了 `size` 参数,所以没问题。

- 内层循环从 `j=i+1` 开始,避免了重复比较同一对元素,这是正确的。但注意,如果数组中有多个相同元素,函数会在找到第一对时就返回1,这符合函数名“是否有两个相同”的意图。