㈠ 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;}