1. c語言中,如何用刪除法刪除數組中相同的數字
#include<stdio.h>
intdel_same(intdate[],intn);
intdel_same(intdate[],intn)
{
inti,j,k=0;
for(i=0;i<n;++i)//i用來遍歷數組
{
for(j=i+1;j<n&&date[i]-date[j];++j);
if(!(j-n))//沒有重復元素
date[k++]=date[i];//可將date[]看作兩個數組
}
returnk;//返回刪除後的有效長度
}
intmain(void)
{
intdate[1001],i,j,k,n;
printf("輸入數據個數:");
scanf("%d",&n);
printf("輸入數據:");
for(i=0;i<n;++i)
scanf("%d",date+i);
k=del_same(date,n);
for(i=0;i<k;++i)
printf("%-5d",date[i]);
return0;
}
(1)c如何刪除數組中的重復元素擴展閱讀
C語言在數組中刪去指定數字
#include<stdio.h>
#include<string.h>
intmain()
{
intn;
scanf("%d",&n);
intarray[10];
intarray_1[10];
intj=0;
for(inti=0;i<10;i++)
{
scanf("%d",&array[i]);
}
for(inti=0;i<10;i++)
{
if(array[i]!=n)
{
array_1[j]=array[i];
++j;//此時j++也是可以的;
}
}
for(inti=0;i<j;i++)
{
printf("%d",array_1[i]);
}
return0;
}
2. C語言如何刪除數組中的重復元素
//#include "stdafx.h"//vc++6.0加上這一行.
#include "stdio.h"
void main(void){
int i,j,k,a[]={4,78,3,2,19,0,56,56,8,7,3,1,90,86,437,918,0,1},ln;
for(ln=sizeof(a)/sizeof(int),k=i=1;i<ln;i++){
for(j=0;j<k;j++)
if(a[j]==a[i]) break;
if(j>=k) a[k++]=a[i];
}
for(i=0;i<k;printf("%d ",a[i++]));//Look at...
printf("\n");
}
3. C語言刪除數組重復數字
#include "stdio.h"
#include "string.h"
void main()
{
int i,k=1,j=10,a[10]={4,4,4,4,5,4,9,9,9,10};
for(k=i=1;i<10;i++)
{
for(j=0;j<k;j++)
{
if(a[j]==a[i]) break;
}
if(j==k) a[k++]=a[i];
}
printf(" ");
for(i=0;i<k;i++)
{
printf(" %d ",a[i]);
}
(3)c如何刪除數組中的重復元素擴展閱讀:
printf()函數的調用格式為:printf("<格式化字元串>",<參量表>)。
其中格式化字元串包括兩部分內容:一部分是正常字元,這些字元將按原樣輸出;另一部分是格式化規定字元,以"%"開始,後跟一個或幾個規定字元,用來確定輸出內容格式。
參量表是需要輸出的一系列參數,其個數必須與格式化字元串所說明的輸出參數個數一樣多,各參數之間用","分開,且順序一一對應,否則將會出現意想不到的錯誤。
比如:
int a=1234;
printf("a=%d ",a);
輸出結果為a=1234。
scanf()是C語言中的一個輸入函數。與printf函數一樣,都被聲明在頭文件stdio.h里,因此在使用scanf函數時要加上#include<stdio.h>。
int scanf(const char*restrict format,...);
函數scanf()是從標准輸入流stdin(標准輸入設備,一般指向鍵盤)中讀內容的通用子程序,可以說明的格式讀入多個字元,並保存在對應地址的變數中。
4. c語言如何刪除數組中重復元素
1
/*
2
思路:
3
將字元串存入字元數組a中,設將值拷貝給數組b,遍歷b的每個元
4
素,與a中的每個元素比較,有相同則b中對應元素置為-1。
5
輸出b中不為-1的元素。
6
*/
7
#include<stdio.h>
8
#include<string.h>
9
char
a[100],b[100];
10
void
Del(int
index,int
len){
11
for(int
i=0;i<len;i++){
12
if(index
==
i)
continue;//下標相同即同一個元素不比較,進入下一個循環
13
if(b[index]
==
a[i])
b[index]=-1;//有相同元素,置值為
-1
14
}
15
}
16
int
main(){
17
gets(a);
18
memcpy(b,a,sizeof(a));//將a的元素拷貝給b
19
int
len=strlen(a);//求a的長度
20
for(int
i=0;i<len;i++){
21
Del(i,len);
22
}
23
for(int
i=0;i<len;i++){//輸出b中非-1的元素
24
if(b[i]!=-1){
25
printf("%c",b[i]);
26
}
27
}
28
return
0;
29
}
5. C語言問題 把一個數組中的重復元素去掉
1、首先,點擊桌面上的VC++6.0,打開軟體。
6. c語言中怎樣將數組中的所有相同的數都刪除
可以先排個序,然後相鄰元素比較,相同的就通過後邊的向前移動來去掉, 最後參用鏈數的數組這個插入刪除方便且時間少。
7. C語言 刪除數組中相同元素 參照大佬的代碼的新思路 寫了一下又有問題 求教
完全參照你的思路改的。
只用一個數組,找相同,刪其中一個,數組需要移位。
#include<stdio.h>
#defineN10
intmain()
{
inta[N];
for(inti=0;i<N;i++)
scanf("%d",&a[i]);
printf("源:
");
for(inti=0;i<N;i++)
printf("%d",a[i]);
//------------------修改部分,其他與你源碼一致-------------------------------
intfind,i,j,k,n=N;
while(1)//循環檢查,直到沒有相同數值元素
{
find=0;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]==a[j])//找到兩個相同的,刪除後一個a[j],數組移位,最大長度n值改變,並跳回最外層循環,開始新一輪檢測
{
for(k=j;k<n-1;k++)//刪除並移位
a[k]=a[k+1];
n--;//長度減一
find=1;
break;
}
}
if(find==1)
break;
}
if(find==0)
break;
}
printf("
處理後:
");
for(i=0;i<n;i++)
printf("%d",a[i]);
//-------------------------------------------------------------------------------
return0;
}
8. c++如何刪除一個數組中的重復元素
方法一、
vector<int> sun;
//向sun添加元素
for (int i = 0; i < n; ++i)
{
sun.push_back(primes[i]);
}
sort(sun.begin(), sun.end());
//使用 erase 刪除
sun.erase(unique(sun.begin(), sun.end()), sun.end());
earse的功能是刪除指定范圍內的所有函數;unique將相鄰的重復的元素移到最後。
方法二、
排序函數(sort)和去重函數都在<algorithm>頭文件中。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int> v;
cout << "Number of vector's element : " << endl;
int number;
cin >> number;
for (int i = 0; i < number; i++) {
int temp;
cin >> temp;
v.push_back(temp);
}
sort(v.begin(),v.end());
v.erase(unique(v.begin(), v.end()), v.end());
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << endl;
return 0;
}
unique()函數將重復的元素放到vector的尾部然後返回指向第一個重復元素的迭代器再用erase函數擦除從這個元素到最後元素的所有的元素.
(8)c如何刪除數組中的重復元素擴展閱讀:
return的用法:
return的作用是結束正在運行的函數,並返回函數值。return後面可以跟一個常量,變數,或是表達式。
1、函數的定義一般是這樣的,例如:
inta(inti)第一個int是函數的返回值的類型,也就是return後面跟的值的類型,a是函數的名稱,括弧里的是傳遞給函數的參數,int是參數的類型,i是參數的名字
{
.../省略函數體內容
returnb;//b必須與函數頭的返回值一致(此處為int型)
}
2、簡單函數舉例:
intaddOne(intb)
{
returnb+1;
}
該函數的作用是取得一個數,將這個數加上1,再將結果返回。
3、調用時:
intresult=addOne(2);//此時result的值為3
函數括弧里的參數也可以為變數或能算出值的表達式
以上就是一個基本的函數,一般的函數都有返回值,也就是return後面跟的值,返回值可以為各種數據類型,如:int,float,double,char,a[](數組),*a(指針),結構或類(c++)
但不是所有函數都有返回值,如果某個函數無返回值,那麼返回值的位置則為「void」關鍵字,此時函數體中無返回值,即無return的值。但是函數中也可出現return,即一個空的return句子,其作用是使函數立即結束,如voidprint()//括弧中為空表示無傳遞參數、
{
printf("a");
printf("b");
return;//函數執行到此處結束
printf("c");
}//該函數只執行到return語句處,即屏幕上輸出的為"ab"
9. C語言刪除一個整型數組裡面重復的元素
利用雙重循環,將每個值依次與其後面的值相比較,如果有相同的則刪除該元素即可。
刪除時,可以使用將後面元素依次向前移動一位,同時總長度減一的方式。
參考代碼如下:
intremove_repeat(int*a,intl)
{
inti,j,k;
for(i=0;i<l;i++)
{
for(j=i+1;j<l;j++)//對後面每個元素比較,去重。
{
if(a[j]==a[i])//發現重復元素。
{
for(k=j+1;k<l;k++)//依次前移一位。
a[k-1]=a[k];
l--;//總長度減一。
}
}
}
returnl;//返回新的長度值。
}
10. 用C語言如何刪除數組中的重復元素
說的不是很清楚,數組定義的時候就刪除?看來你對數組的操作還不是很清楚,應該是在數據寫入數組的時候將其刪除吧。你可以這樣,如果數組不大,在寫入數據的時候先遍歷一遍數組看看數組中是否有該數據,如果有那麼就不把數據寫入數組,如果沒有就接著最後一個元素寫入數組就可以了。