㈠ c语言编程:判断数组里有没有重复数字,有true,无false
//接口中增加一个索引,目标元素索引,默认从头开始扫描
boolcontainsDuplicate(int*nums,intnumsSize,intindex=0)
{
//不要使用==1来判断,如果数组长度为0呢?
//另外要在循环处理前先预判,不要在循环体内判断,否则浪费CPU时间
if(numsSize<2)returnfalse;
//检查索引(目标元素)是否为最后一个元素,是则任务结束,返回false
if(index==(numsSize-1))returnfalse;
//从目标元素下一个元素开始遍历
for(inti=index+1;i<numsSize;i++)
{
//判断目标元素是否与i索引所指的元素相等,相等则返回true
if(nums[index]==nums[i])returntrue;
}
//扫描完所有元素后进行递归,将index递增,切换目标元素进一步检查
returncontainsDuplicate(nums,numsSize,index+1);
}
好几处错误,我就不一一写了,基本就是思路混乱,判断一个数组中元素重复值的基本思路就是一个一个取出值,并与剩余元素比较,一旦想等就返回真,已经比较过的元素不需要重复比较,然后你看看我的代码体会下。
㈡ C语言判断数组是否重复,
chachong(a[6]);//函数调用int
chachong(int
a[]);//函数声明这问题需要楼主了解数组知识a[6]只是一个值;而且是一个未定义的值;因为数组a不存在下标为6的元素;建议改为chachong(a);//函数调用int
chachong(int
*a);//函数声明
㈢ 判断数组内部重复元素除了嵌套循环还有什么办法 C语言
你这个代码就是检查有没有重复元素,所以只要检查到一旦有重复就应该退出循环;因为有一个重复是重复,有10个100个重复还是重复,所以一旦有了重复就没有必要向下再做了。给你提供一个试试看行不行——
#include"stdio.h"
#include<stdlib.h>
intmain(intargc,char*argv[]){
int*q,i,j,k,n;
printf("Pleaseentern(intn>0)... n=");
if(scanf("%d",&n)!=1||n<1){
printf("Inputerror,exit... ");
return0;
}
if((q=(int*)malloc(sizeof(int)*n))==NULL){
printf("Applicationmemoryfailure... ");
return0;
}
printf("Pleaseenter%dintegers... ",n);
for(i=0;i<n;scanf("%d",q+i++));
for(k=i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(q[i]==q[j])
k=j=i=n;
free(q);
printf(k?"Yes! ":"No! ");
return0;
}
运行样例:
㈣ C语言中,怎样判断一个数组中是否有重复元素呢最好用程序实现
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;
}
(4)判断数组中重复元素c语言扩展阅读:
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>
#include<stdlib.h>
intmain()
{
intn;
int*a;
inti;
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
{
for(intj=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
inttmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
inttmp=a[0];
intcount=1;
for(i=1;i<n;i++)
{
if(tmp==a[i])
{
count++;
}
else
{
if(count>1)
{
printf("数组共有%d个数字%d ",count,a[i-1]);
}
tmp=a[i];
count=1;
}
}
if(count>1)
{
printf("数组共有%d个数字%d ",count,a[i-1]);
}
free(a);
return0;
}
我的思路是,先排序,再输出。
㈥ c语言数组元素判断是否相同以及相同的个数
//下面的算法还可以优化,就留给楼主自己思考:
#include<stdio.h>
#include<stdlib.h>
#defineARR_MAX6
staticinttemp[ARR_MAX];
booltemp2[ARR_MAX];
voidreset(){//初始化静态区变量temp与temp2
for(inti=0;i<ARR_MAX;i++){
temp[i]=1;
temp2[i]=true;
}
}
intrepeat_e(inta[ARR_MAX]){
reset();
//跳跃式算法,加快检索速度
for(inti=0;i<ARR_MAX;i++){
if(!temp2[i])continue;
for(intj=i+1;j<ARR_MAX;j++){
if(a[i]==a[j]){
temp[i]++;
temp2[j]=false;
}
}
}
//寻找最值算法
int_max=1;
inttarget_index=-1;//目标索引
for(inti=0;i<ARR_MAX;i++){
if(temp[i]>_max){
_max=temp[i];
target_index=i;
}
}
returntarget_index>-1?a[target_index]:-1;
}
intmain(intargc,char*argv[])
{
intarr[ARR_MAX]={0};
scanf("%d%d%d%d%d%d",&arr[0],&arr[1],&arr[2],&arr[3],&arr[4],&arr[5]);
inttarget_value=repeat_e(arr);
if(target_value>-1){
int_count=0;
for(inti=0;i<ARR_MAX;i++){
if(arr[i]==target_value){
printf("x[%d],",i+1);
_count++;
}
}
printf(",相同数=%d ",_count);
}
system("pause");
return0;
}
㈦ C语言,如何查找一个数组内有没有相同的元素
两个循环,排除自身,逐个判断。
#include<stdio.h>
intmain()
{
intn,a[500];
while(scanf("%d",&n)>0)
{
for(inti=0;i<n;i++)scanf("%d",a+i);
for(inti=0;i<n;i++)
for(intj=0;j<i;j++)
if(i!=j&&a[i]==a[j])goto_no;
printf("YES ");
continue;
_no:
printf("NO ");
}
return0;
}
㈧ C语言用数组检查一组数字中是否有重复
//判定一个数组中是否存在相同的数。
//拿每个数和它后面所有的数比较,有相同的就返回真。
//全部比较完都没有相同的就返回假。
intHasIdentical(constint*arr,intn)
{
inti=0,j=0;
for(i=0;i<n;++i)
{
for(j=i+1;j<n;++j)
{
if(arr[i]==arr[j])
{
return1;
}
}
}
return0;
}
//按照你的意思,这个函数可以这样改写:
intjudgement(inta,intb,intc,intd,inte,intf,intg,inth,inti)
{
intarr[9]={0};
arr[0]=a;arr[1]=b;arr[2]=c;arr[3]=d;arr[4]=e;
arr[5]=f;arr[6]=g;arr[7]=h;arr[8]=i;
return!HasIdentical(arr,9);
}
㈨ C语言数组判断是否有重复元素
这是方法定义,num是参数,在调用方法的时候会传值的,参数值不是在方法里定义的。
㈩ c语言怎么判断两个数组中重复数字的个数
判断两个数组中重复数字的个数方法如下:#include <stdio.h>#include <stdlib.h>int main(){ int n; int *a; int i; scanf("%d", &n); a = (int *)malloc(sizeof(int) * n); for(i = 0; i < n; i ++) { scanf("%d", &a[i]); } for(i = 0; i < n - 1; i ++) { for(int j = 0; j < n - i - 1; j ++) { if(a[j] > a[j+1]) { int tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; } } } int tmp = a[0]; int count = 1; for(i = 1; i < n; i ++) { if(tmp == a[i]) { count ++; } else { if(count > 1) { printf("数组共有%d个数字%d\n", count, a[i - 1]); } tmp = a[i]; count = 1; } } if(count > 1) { printf("数组共有%d个数字%d\n", count, a[i - 1]); } free(a); return 0;}