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