c语言 去掉数组中重复的元素····求帮助
7个回答
展开全部
#include <stdio.h>
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<i;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改成其他数组中没有的数就行了
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<i;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改成其他数组中没有的数就行了
2013-07-30
展开全部
说的不是很清楚,数组定义的时候就删除?看来你对数组的操作还不是很清楚,应该是在数据写入数组的时候将其删除吧。你可以这样,如果数组不大,在写入数据的时候先遍历一遍数组看看数组中是否有该数据,如果有那么就不把数据写入数组,如果没有就接着最后一个元素写入数组就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-30
展开全部
我用的是字符数组。。。其实方法都一样。。#include <stdio.h>
#include <string.h>
#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;
}
#include <string.h>
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
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");
}
}
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按回车就输入五个数
参考资料: http://zhidao.baidu.com/question/459860125.html?oldq=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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询