c语言 去掉数组中重复的元素····求帮助

输入a[]={1,2,1,7,3,2,3,4,5,8,7,6} 输出为1 2 7 3 4 5 8 6
2024-11-22 03:48:49
推荐回答(5个)
回答1:

#include
int main()
{
int a[]={1,2,1,7,3,2,3,4,5,8,7,6};
int i;
int j;
for(i=0;i<12;i++)
for(j=0;j if(a[j]==a[i])
a[i]=0;
for(i=0;i<12;i++)
if(a[i]!=0)
printf("%d,",a[i]);
}
我这个方法不适用与数组中有0的情况,如果数组中有0的话,可以把a[i]=0和if(a[i]!=0)上的0改成其他数组中没有的数就行了

回答2:

说的不是很清楚,数组定义的时候就删除?看来你对数组的操作还不是很清楚,应该是在数据写入数组的时候将其删除吧。你可以这样,如果数组不大,在写入数据的时候先遍历一遍数组看看数组中是否有该数据,如果有那么就不把数据写入数组,如果没有就接着最后一个元素写入数组就可以了。

回答3:

我用的是字符数组。。。其实方法都一样。。#include
#include
#define MAXSIZE 100int main()
{
char array[MAXSIZE];
char del; //要删除的元素
int len, i, j;
printf( "请输入数据:");
gets( array );
printf( "请输入要删除的元素!!!:" );
scanf( "%c", &del );
len = strlen(array);
for( i = 0; i < len; i++ )
{
if( del == array[i] )
{
for( j = i; j < len; j++ )
{
array[j] = array[j+1];
}
i--;
}
}
i = 0;
while( array[i] != '\0' )
{
printf( "%c",array[i] );
i++;
}
printf( "\n" );
return 0;
}

回答4:

#include
void main()
{
int n,a[100],b[100],i,j,k = 0,flag = 1;
printf("please input n(n < 100): ");
scanf("%d",&n);
for(i = 0; i < n; i++)
scanf("%d",&a[i]);
for(i = 0; i < n; i++)
{
flag = 1;
for(j = 0; j < k; j++)
if(a[i] == b[j])
flag = 0;
if(flag)
{
b[k] = a[i];
k++;
}
}
for(i = 0; i < k; i++)
{
printf("%-4d",b[i]);
if((i + 1) % 10 == 0)
printf("\n");
}
}

回答5:

#include int main() { int a[]={1,2,1,7,3,2,3,4,5,8,7,6}; int i; int j; for(i=0;i