删除一维数组中所有相同的数,使之只剩下一个,数组中的数已按由小到大顺序排列。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除一维数组中所有相同的数,使之只剩下一个,数组中的数已按由小到大顺序排列。相关的知识,希望对你有一定的参考价值。

跪求答案
C语言程序设计的一道题

思路,读取第一个元素,放入一个变量,在读下一个元素,如果相等,下面的元素全部上移,如果不相等当前元素赋给变量,在读下一个元素写个简单的:
a[5]=1,2,3,4,5;//假设有五个元素
j=a[0];//把第一个复给J
le=5//数组的长度
for(i=1;i<le;i++)//开使循环
if(j==a[i])//如果上一个与下一个一样
for(k=i;k<le-1;k++)
a[k]=a[k+1];//所有的元素上移

le--;//数组长度减一;
else
j=a[i];//如果不相等,继续判断下一个;


第二种思路比较简单,就是把这个数组赋给一个新的数组;
a[5];//略
b[5];//新的数组
le=0;//初使长为0;
b[le]=a[0];//赋初值为a[0]
for(i=1;i<5;i++)
if(b[le]==a[i])//如果相同判断下一个
continue;
else//如果不同
le++;//长度加一,
b[le]=a[i];//赋值


C很长时间没写了,可能就不对的地方,反正就是这个思路
参考技术A #include <stdio.h>
#define N 10
void main()

int a[N];
int i,j=0;
printf("输入原数组:\n");
for(i=0;i<N;i++)

scanf("%d",&a[i]);

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


if(a[i+1]==a[i])
continue;
else

a[j+1]=a[i+1];
j++;



printf("新数组为:\n");
for(i=0;i<j;i++)
printf("%d ",a[i]);
printf("\n");
本回答被提问者采纳

删除数组中重复的元素

请编写函数fun, 函数的功能是: 删去一维数组中所有相同的数, 使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

    例如, 一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。

#include<stdio.h>
int fun(int a[],int n)

	int i=0;
	int j=0;
	int t=-999;     //定义一个比数组第一个元素值小的值
	while(j<n)
	
		if(a[j]>t)
		
			a[i]=a[j];
			t=a[i];
			i++;
		
		j++;
	
	return i;       //返回删除后数组的元素个数

int main()
	int a[]=2 ,2 ,2 ,3 ,4 ,4 ,5 ,6 ,6 ,6 ,6 ,7 ,7 ,8 ,9 ,9 ,10, 10, 10;
	int i;
	int j=0;
	int n=19;
	i=fun(a,n);
	while(j<i)
	
		printf("%d ",a[j]);
		j++;
	

以上是关于删除一维数组中所有相同的数,使之只剩下一个,数组中的数已按由小到大顺序排列。的主要内容,如果未能解决你的问题,请参考以下文章

c语言:删去一维数组中所有相同的数, 使之只剩一个.求一完整正确程序

删除数组中重复的元素

Java 怎样删除一维数组中值为M的元素

如何在一个一维数组中插入一个和删除一个数

在c#中. 删除数组中的一个数,

如何将一个一维数组中的所有数都赋值为-1?不用循环。