當前位置:首頁 » 編程語言 » c語言數組數據查重
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言數組數據查重

發布時間: 2023-05-31 14:10:02

❶ 明明的隨機數c語言查重該怎麼辦

演算法
篩排處理 明明的隨機數(C語言描述)

三寸雪
原創
關注
3點贊·1550人閱讀
問題 : 篩排處理 明明的隨機數
時間限制: 1Sec 內存限制: 128MB
題目描述
明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N<=100),對於其中重復的數字,只保留一個,把其餘相同的數去掉,不同的數對應著不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成「去重」與「排序」的工作

輸入
每組輸入數據的第一行含有一個正整數N,表示後面行中有N個隨機整數。若N=0,表示處理結束。

輸出
對應每組輸入數據,輸出一組數據,該數據由單獨一行開頭,內含一友信搜個N,表示後面有N個排好序的整數,整數之間空一格。每組輸出數據之間空一行。

樣例輸入
12
2 4 6 17 20 40 43 45 60 64 85 98
17
35 75 40 61 56 21 85 61 50 83 52 22 44 68 51 80 38
0

樣例輸出
12
2 4 6 17 20 40 43 45 60 64 85 98

16
21 22 35 38 40 44 50 51 52 56 61 68 75 80 83 85

思路:
根據題目描述,無非就是將數據進行篩選剔除和重新排序
第一種:先進行排序,再將相同的數逐個剔除
第二種:先篩選剔除再進行重排
我用的是第二種,同時是採取邊輸入邊剔除的方式。

代碼:
#include<好歷stdio.h>
int main()
{
int n,i,j,t,index=0,count=0; //index為0則表示無重復,不需要剔除,count用於計數
int a[105];
scanf("%d",&n);
while(n!=0)
{
for(i=0;i<n;i++)
{
scanf("%d",&t);
if(i==0)a[i]=t;
else
{
j=i-count; //i-count接下來要儲存的數數組下標
while(j>0)
{
if(t==a[--j]){index=1;break;}
}
if(index==0)a[i-count]=t;
else index=0,count++; //count記錄下多少個不用儲存的t
}
}
for(i=0;i<n-count;i++) //n-count表示篩選後剩下的數
for(j=i+1;j<n-count;j++)
if(a[i]>a[j])t=a[i],a[i]=a[j],a[j]=t;
/*********輸出部分************************/
printf("%d\n",n-count);
for(i=0;i<n-count;i++)
{
if(i!=n-count-1)printf("%d ",a[i]);
else printf("%d\n",a[i]);
}
printf("\坦銷n");

count=0; //重新初始化count
scanf("%d",&n);
}

return 0;
}
登錄後復制

這是以第一種方法寫的代碼
注意 這是當輸入數據只有一組的情況

#include<stdio.h>
int main()
{
int a[100];
int b[100];
int n,i,j,

❷ 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;

}

(2)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語言用數組檢查一組數字中是否有重復

//判定一個數組中是否存在相同的數。
//拿每個數和它後面所有的數比較,有相同的就返回真。
//全部比較完都沒有相同的就返回假。
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>
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語言,查找數組里重復出現的數字;

//如果這題目是在oj上,請去掉所有的注釋
#include<stdio.h>
intmain()
{
//用數組下標1~104表示輸入的數字
//用數組每個元素的值表示該下標對應的元素輸入次數
inta[105]={0},i,n,ni,max;
scanf("%d",&n);
max=a[0];
for(i=0;i<n;i++)
{
scanf("%d",&ni);
a[ni]++;
if(max<a[ni])
max=a[ni];
}
for(i=104;i>0;i--)//想想為什麼倒著比較
{
if(a[i]==0)continue;
if(max==a[i])
{
printf("%d%d ",i,a[i]);
break;
}
}
return0;
}

❼ C語言中如何判斷兩個數組內容是否相同

C語言有輪兆個函數 memcmp 是用來進談桐告含明行內存比較的 x0dx0aextern int memcmp(void *buf1, void *buf2, unsigned int count);x0dx0ax0dx0aif(0==memcmp(ID,ID1,20)) //ID1等於ID2x0dx0a{x0dx0a}

❽ C語言中判斷兩個數組內容是否相同!

C語言有個函數

memcmp是用來進行內存比較的

extern

int

memcmp(void

*buf1,

void

*buf2,

unsigned

int

count);

if(0==memcmp(ID,ID1,20))

//ID1等於ID2

{

}

先要明確運算符按優先順序不同分類,《C程序設計》運算符可分為15種優先順序,從高到低,優先順序為1 ~ 15,除第2.13級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序。

產生來源

在C語言中, 數組屬於構造數據類型。一個數組可以分解為多個數組元素,這些數組元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字元數組、指針數組、結構數組等各種類別。

關於可變長數組(VLA)的問題:原來的C89標准中是不允許可變長數組出現的,但是在C99標准中,加入了對VLA的支持,但是支持的編譯器不多,而且由於棧溢出的安全問題,沒有太多的人敢用這個可變長數組,所以在C11標准中又把它規定為可選實現的功能了。

以上內容參考:網路-數組

❾ C語言,查找數組里重復出現的數字;

檢查一個數中每位的數字是否重復,
n%10來得到當前最小位的值,
每次迭代都n/=10 ,使得數字都向右移動一位
n>0來檢測是否已經檢測完了。
比如123這個數;
n%10
==
3,說明3已經出現,所以digit_seen[3]
==
true了,如果檢測到digit_seen[3]
==
true,說明已經有3這個數字了,就重復了,所以就直接跳出循環,此時n!=0,再通過檢測n就可以判斷了。
n/=10來將數字向右移動一位,這個時候n
==
12
繼續前兩步,直到n=0(因為任何小於等於9的整形數除以10都是0)

❿ C語言判斷數組是否重復,

chachong(a[6]);//函數調用int
chachong(int
a[]);//函數聲明這問題需要樓主了解數組知識a[6]只是一個值;而且是一個未定義的值;因為數組a不存在下標為6的元素;建議改為chachong(a);//函數調用int
chachong(int
*a);//函數聲明