C语言中,怎样判断一个数组中是否有重复元素呢?最好用程序实现 40
import org.apache.commons.lang.ArrayUtils;
public boolean isDupInArray(Object[]array){
if(ArrayUtils.isEmpty(array)==true){
return false;
}
for(Object obj:array){
if(ArrayUtils.indexOf(array,obj)!=ArrayUtils.lastIndexOf(array,obj)){
return true;
}
}
return false;
}
扩展资料:
Return用法
1.含义:return表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,返回值可以是一个常量,变量,或是表达式。
2.作用:结束正在运行的函数,并返回函数值。
3.返回值:
计算结果表示函数执行的顺利与否(-1、0)
返回值可以为各种数据类型,如:int,float,double,char,a[](数
组),*a(指针),结构或类(c++)
返回类型规定了return后面所加的量的类型,如果返回类型声明为
void,则不需要返回值。public static void Main()//程序入口只可以声
明为void和int的返回
{
//不需要返回值就OK
}
public static void mm()
{
return;//有些时候,在void的方法中,你需要跳出它,可以直接
用return而不能加任何量在后面
}
public static int cc()
{
return 321;//因为返回类型声明为int,所以返回一个整数
}
public static string msmsm()
{
return“asdfhasjghdg”;//因为返回类型声明为string,所以返回一个字
符串
}
C语言程序:
#include <stdio.h>
/* 判断一个数组中是否有重复元素,若有,返回1,否则返回0 */
int hasDup(int arr[], int n)
{
int i, j;
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(arr[j] == arr[i])
return 1;
return 0;
}
/* 主函数 */
int main()
{
int arr[] = {12, 32, 10, 12, 23};
int n = 5;
if(hasDup(arr, n) == 1)
printf("数组中存在重复元素\n");
else
printf("数组中不存在重复元素\n");
return 0;
}
运行测试:
数组中存在重复元素
因为数组中的数据是连续存放的,所以,只要从二维数组的首地址开始查找就可以了。查找方法同一维数组的查找方法,说明如下:
int a[3][4];
int *p=a[0]; //首地址
int i=0;
for( i=0;i<3*4;i++ ) //数据总长度为3*4
{
int j,cnt=0;
for( j=i+1;j<3*4;j++ )//数据总长度为3*4
if( *(p+i) == *(p+j) )
cnt++;
if ( cnt > 0 )
{
printf("有重复!");
break;
}
}
int main(void)
{
int a[10];
int i;
int j;
int flag = 0;//1代表有重复的元素,0代表没有
for(i = 0; i < 10; i++)
{
scanf("%d",&a[i]);
}
for(i = 0; i < 10;i++)
{
for(j = i+1; j < 10; j++)
{
if(a[i] == a[j])
{
flag = 1;
break;
}
}
}
if(flag == 1)
printf("有重复元素\n");
else
printf("没有\n");
}
那二维数组呢?
你能一次把问题说清楚么