⑴ 編寫程序輸入n個整數,查找並刪除重復的數字,列印結果。(c語言)
#include<stdio.h>
#include<malloc.h>
intmain(void)
{
int*a,n,i,j,k;
scanf("%d",&n);
a=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;++i)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;++i)
{
for(j=i+1;j<n;++j)
{
if(a[j]==a[i])
{
for(n--,k=j;k<n;k++)
{
a[k]=a[k+1];
}
}
}
}
for(i=0;i<n;++i)
{
printf("%d",a[i]);
}
free(a);
return0;
}
⑵ C語言怎麼算 同或,找一個數組中重復出現了一次的元素
方法1:先快速排序,然後遍歷
方法2:遍歷數組,把遍歷的元素計算一個hash放到另外的數組里去,如果一個位置放了2次,就表明有2個。
⑶ c語言編程:輸出數組中重復出現的數
#include<stdio.h>
intmain()
{inti,j,k=0,k1,p,a[10],b[5];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(a[j]==a[i])
{p=1;
for(k1=0;k1<k;k1++)
if(a[i]==b[k1])p=0;
if(p)
{printf("%d",a[i]);
b[k++]=a[i];
}
};
return0;
}
⑷ 請問怎麼用C語言統計一個數組中不同元素它們重復的個數啊
用C語言統計一個數組中不同元素重復的個數:
public class Test {
public int count(int[] array) {
int len = array.length;
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
int num = array[i];
if (array[j] == num) {
// 重復,數組總長度減1
len--;
i++;
}
}
}
return len;
}
public static void main(String[] args) {
// 測試數據:總共是9個不同的元素,按照升序排好,其中有重復出現的元素。
int[] array = new int[] { 1, 1, 2, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9 };
System.out.println(new Test().count(array));
}
}
(4)找出重復出現的數據c語言擴展閱讀:
C程序中函數特性
C程序中函數的數目實際上是不限的,一個C程序中必須至少有一個函數,而且其中必須有一個並且僅有一個以main為名的函數,這個函數稱為主函數,整個程序從這個主函數開始執行。
函數內部究竟是如何工作的,外部程序是不知道的。外部程序所知道的僅限於輸入給函數什麼以及函數輸出什麼。函數提供了編製程序的手段,使之容易讀、寫、理解、排除錯誤、修改和維護。
⑸ c語言統計數據時怎麼排除重復數據
如果是統計字元串個數總數的話,你不是已經獲取這些重復數據的數量count了嗎,你只需要定義一個臨時變數sum,
在每一次循環結束後,讓
sum
=
sum
+
(count
-1)
就好了(count是str出現的總次數,-1是至少留一個,不至於全部都去掉)。最後減去這個sum就行。
如果是是要刪除這些重復的字元的話,那就比較費勁了,畢竟數組的刪除是比較坑爹的,建議換成鏈表。而且你這個刪除還不是一個兩個的事兒。鏈表做刪除很容易!
⑹ 用C語言實現查找數組中重復的數據,刪除重復數據後輸出數組.
從第一個元素開始一次和其後元素比較,如果相等,先用一個變數記下這個位置,後面的元素全部向前移動,再從剛才記下的位置繼續比較,直到比較完畢,也就是合並完了所有的相同元素。再輸出數組就行了。
⑺ 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語言問題:查找重復的數據
問一下?數字有沒有漏的?比如說N=5;數字是不是1234
全部都在數組裡面?還是說數字是這個范圍,不一定全部在?
⑼ C語言求簡化,是找出重復數字。
不要只是考慮數學演算法,也要充分利用編程語言的特性啊
思路就是建立10000個元素的數組,輸入數字填到對應下標的元素中去,那麼只要發現已經填過的元素,必然就是重復的元素了。
根本不需要循環比較(每個元素的比較沒有任何循環),演算法時間復雜度是最小的
這也是hash表的基本思想
for(i=0;i<b;i++) //////////////////循環輸入後面b個數字
scanf("%lld",&a[i]);
long long av[10000]; ////////// 建立一個N元素的數組用於存放元素 N=10000
memset(av, 0, 10000 * sizeof(long long)); // 數組元素全部清零
for(i=0;i<b-1;i++) //////////////////一個一個數字分別填充到數組中
{
if(av[a[i]] != 0) /////////////// 對應下標的數組已經被填充,說明這個數字是重復的
{
d = 1;
break;
}
}
if(d==1) ////////////因為只能有一個重復的,如果已輸出過,結束這次循環
break;
⑽ 一個C語言演算法,關於篩選重復數據
用兩個for
第一個for為歷遍數組。
嵌套的另一個for用來判斷本數之前是否有與其相同的數。
沒有就輸出。
有就忽略。
參考這個:
#include
main()
{
int
a[20],i,j,n=0;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++)
{
for(j=0;j
評論
0
0
載入更多