① c語言,刪除數組中的重復元素
#include <stdio.h>
#define N 1000
#define FLAG 0x80000000 /*特殊標記,用最小的負數表示*/
void main( )
{
int r[N], length, i, j;
scanf("%d", &length);
for(i = 0; i < length; i++)
scanf("%d", &r[i]);
for(i = 0; i < length - 1; i++)
{
if(r[i] != FLAG)
{
for(j = i + 1; j < length; j++)
if(r[j] == r[i]) r[j] = FLAG; /*遇到重復值,則先用特殊標記覆蓋它*/
}
}
for(i = 0; r[i] != FLAG; i++); /*找到第一個特殊標記*/
for(j = i + 1; j < length;) /*刪除數列中的特殊標記*/
{
if(r[j] != FLAG) r[i++] = r[j++];
else j++;
}
length = i; /*修改刪除重復值後的數列的長度*/
for(i = 0; i < length; i++)
printf("%-4d", r[i]);
}
② C語言如何刪除數組中的重復元素
這個題目的解題思路為:因為數組a已非遞減有序,所以一般先對其進行二分查找,但要找到第一個x所在的下標,然後再對其進行刪除。
intbitsearch(inta[],intx,intleft,intright){/*在數組a的從left到right的區域內二分查找x第一次出現的位置,如果不存在返回-1*/
intmid,i;
while(left
mid=(left+right)/2;
if(a[mid]==x)break;
if(a[mid]>x)right=mid-1;
if(a[mid]
③ c語言編寫一段去除字元數組中重復的字元的程序
幫你改好了,有幾個小錯誤,第一個定義一個字元數組最好後面加上一個,內嵌套的for循環後面多了一個分號
#include<stdio.h>
void
main()
{
int
i,j,p,q;
char
a[9]={'a','b','b','c','d','a','v','b',''};
for(i=0;i<8;i++)
{
for(j=i+1;j<=8;j++)
if(a[i]==a[j])
{
do
{a[j]=a[j+1];j++;}
while(j<=8);
}
}
puts(a);
}
④ 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]);
}
(4)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(標准輸入設備,一般指向鍵盤)中讀內容的通用子程序,可以說明的格式讀入多個字元,並保存在對應地址的變數中。
⑤ c語言 去掉數組中重復的元素····求幫助
說的不是很清楚,數組定義的時候就刪除?看來你對數組的操作還不是很清楚,應該是在數據寫入數組的時候將其刪除吧。你可以這樣,如果數組不大,在寫入數據的時候先遍歷一遍數組看看數組中是否有該數據,如果有那麼就不把數據寫入數組,如果沒有就接著最後一個元素寫入數組就可以了。
⑥ C語言問題 把一個數組中的重復元素去掉
1、首先,點擊桌面上的VC++6.0,打開軟體。
⑦ 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;//返回新的長度值。
}
⑧ 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;
}
(8)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;
}
⑨ C語言數組去除重復內容
用兩個游標控制,可以方便的實現,參考代碼如下:
#include<stdio.h>
#define SIZE 12
int a[SIZE]={0,0,0,1,2,2,3,4,4,5,5,44};
int main()
{
int i=1,j=0;
while(i<SIZE)
if(a[j]!=a[i]){
++j;
a[j]=a[i];
++i;
} else ++i;
for(i=0;i<=j;++i){
printf("%d",a[i]);
if(i<j)printf(",");
}
return 0;
}
⑩ 用c語言編寫一個程序:刪除數組中重復的數。
如果你只是刪掉為k的值,然後輸入的話,只要一個for循環就夠了,把不等於k的值直接輸出就行,不用再存入數組里了,如:
#include<stdio.h>
void
main()
{
int
n,k,x[100000];
int
i,flag=0;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
scanf("%d",&k);
for(i=0;i<n;i++)
if(x[i]!=k)
{
if(flag==0)
//(讓第一個輸出前不加空格)
{
printf("%d",x[i]);
flag=1;
}
else
printf("
%d",x[i]);
}
printf("\n");
}