① 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");
}