C語言問題,刪除整型陣列內重複的項並輸出,如能解惑,不勝感激

2021-03-27 06:11:24 字數 4065 閱讀 9192

1樓:

我可以幫你實現這個程式。實現**如下:

#include

#define n 8  //定義一個符號常量int remove_repeat(int *a, int len){int i, j, k;

for(i = 0; i < len; i ++){for(j = i+1; j 元素比較,去重。

{if(a[j] == a[i])//發現重複元素。

{for(k = j+1; k

示例執行結果:

1 2 2 3 5 5 5 8

after remove repeat...

1   2   3   5   8

2 2 2 3 3 3 3 4

after remove repeat...

2   3   4

2樓:匿名使用者

#include

#include

#include

int main(int argc, char *argv);int i,j;

for(i=0;i<30;i++)

printf("\n源陣列:");

for(i=0;i<30;i++)

j=0;

while(j<30)

for(i=j+1;i<30;i++)

}j++;

}printf("\n目標陣列:");

for(i=0;i<30;i++)

return 0;}

3樓:惻耳傾聽丶

#include

int delduplicateelement(int a,int count)

count--;}}

}return count;

}int main(int argc, const char * argv) ;

int count = sizeof(a)/sizeof(int);

printf("原陣列:");

for (int i = 0; i < count; i++)printf("\n");

count = delduplicateelement(a,count);

printf("刪除重複元素後:");

for (int i = 0; i < count; i++)printf("\n");}

c語言刪除一個整型陣列裡面重復的元素

4樓:匿名使用者

利用雙重迴圈,將每個值依次與其後面的值相比較,如果有相同的則刪除該元素即可。

刪除時,可以使用將後面元素依次向前移動一位,同時總長度減一的方式。

參考**如下:

int remove_repeat(int *a, int l){int i, j, k;

for(i = 0; i < l; i ++){for(j = i+1; j

5樓:周小狐狸愛我

int elimination(int a, int count)}}

return count;}

6樓:匿名使用者

我跟你直接說思路吧,他們這樣的雙重迴圈陣列太大的話很耗時間的,你可以,先給陣列排序,然後刪除多餘的數就很耗操作了,只需要看相鄰的數就可以了。

7樓:匿名使用者

int i, j;

int buf = ;

int count = strlen(buf);

for(i = 0; i < count; i++)}}buf[count] = '\0';

提供給你個思路 我沒有除錯,不過思路我覺得不錯!

就是從陣列裡第一個元素開始找相同的,如果相同就把 相同元素和陣列最後一位交換,下一個相同的就和陣列倒數第二位交換,最後把 count位變成『/0』,最後列印陣列。

8樓:匿名使用者

for(int i=0; iif(arr[j]=arr[i])length--;

break;}}}

9樓:匿名使用者

將第一個元素輸出,再後面的一個個與前面的比較,有相等的就繼續迴圈,不等的就輸出,用for語句做

c語言,刪除陣列中的重複數字然後輸出

10樓:凌亂心扉

#include "stdio.h"

#include "string.h"

void main()

;for(k=i=1;i<10;i++)

if(j==k)   a[k++]=a[i];

}printf(" \n ");

for(i=0;i

11樓:荒村歸來

樓主程式有問題的地方:k值的初始化(k需要在每次迴圈時 跟j同時初始化)

樓主在迴圈對比a、b時,除了第一次執行迴圈時,對k初始化了,後面執行迴圈時,由於k沒有初始化,故導致k越來越大,而j卻在每次迴圈時,初始化了,故無論如何k,j都不會出現相等的。

12樓:汽水

#include

#define n 10 //陣列長度

void main()

for(i=0;i

if(sg==0)

printf("%d\t",a[i]);//輸出不是重複的數}printf("\n重複的數共計:%d個\n",count);

}這是我的**,。。。。已經有人給出了,和我的思路差不多,說說你的想法,你的演算法應該有問題

13樓:田真久

#include

int main()

{int n,i,j,arr1[100],arr2[100];

int index=0,count,current=0;//current 記錄當前是否重複 count記錄重複多少次

scanf(" %u",&n);

for(i=0;i查是

否有和當前數字重複的

for(j=0;j

c語言二維陣列中刪除陣列中的重複元素

14樓:

簡單地統計重複元素和不重複元素,可以用1維陣列。

#include

void main()

}--------------------「刪除陣列中的重

復元素」 不知道 是什麼意思。

陣列單元是連續分配單元的。即使是動態分配的單元,也不好從當中刪去。

動態分配的單元,可以用 realloc 增加分配單元 和 減少分配單元。但只能從尾部做起,單元連續。

c語言 去掉陣列中重複的元素····求幫助

15樓:匿名使用者

我用的是字元陣列。。。其實方法都一樣。。#include#include

#define maxsize 100int main()i--;}}

i = 0;

while( array[i] != '\0' )printf( "\n" );

return 0;}

16樓:匿名使用者

說的不是很清楚,陣列定義的時候就刪除?看來你對陣列的操作還不是很清楚,應該是在資料寫入陣列的時候將其刪除吧。你可以這樣,如果陣列不大,在寫入資料的時候先遍歷一遍陣列看看陣列中是否有該資料,如果有那麼就不把資料寫入陣列,如果沒有就接著最後一個元素寫入陣列就可以了。

17樓:匿名使用者

for(int i = 0; i < sizeof(a)/sizeof(a[0]);i++)

}if(bexsit == false)}

18樓:匿名使用者

#include

int main()

else j++;

}i++ ; }

puts(str);}

19樓:董俊錕

#include

void main()

}for(i = 0; i < k; i++)}

c語言陣列刪除問題,C語言中刪除一個陣列元素

可是那要是刪除陣列最後一個元素要怎麼弄?忽略最後一個元素,陣列長度變小一個就可以了,不用動這個資料。include void del num int a int n,int cnt else p a i cnt flag int main int n cnt cnt 8 8個元素 scanf d n...

c語言中,整型陣列的陣列名錶示指向該陣列的元素的指標,那麼字元陣列的陣列名也表示指向元

是的,陣列名都是表示指向第一個元素的指標,也就是說陣列名是一個指標,但是要注意,陣列名這個指標是不能修改的。在c語言中陣列名是一個什麼的常量 陣列名是代表該陣列的首地址且符合識別符號書寫規定的變數識別符號。整個陣列是以首地址開頭的一塊連續的記憶體單元。如有字元陣列char c 10 設陣列c的首地址...

c語言陣列與指標問題,c語言陣列與指標的問題關係請教

1,書上說的不準確,陣列應該看做一種獨立的型別,sizeof只與型別有關。詳細的可以參考這個 http 如果你弄明白了這個剩下就簡單了。2,我先說一下結論吧。按照你的要求應該這樣定義p int p 3 因為你想要的是訪問每一行的數字,所以需要p為整型指標的陣列,這樣每個元素是整型指標,可以像p 1 ...