编写函数,其功能是删除一维数组中所有相同的数字,使之只剩下一个。例:一维数组中存放的数据是: 2 2 2 3 4 4 5 5 6 6 6 6 7 7 8 8 9 10 10 10,
删除后数组中的内容为 2 3 4 5 6 7 8 9 10
文章目录
- 因为数组元素不能删除,置换为0
- 发现一个相同的元素,利用 a[t] = a[t+1]从后往前覆盖
- 不知道有多少个相同的,建议用while循环
- 每一次覆盖,都要对最后的元素置0处理
前言
函数可以返回数组删除后的长度,方便遍历不打印置0的元素
代码如下(示例):函数代码:
int dele(int a[],int n){
int i,j,t,c = 0,m,flag,len = n-1;
for( i =0 ;i < len; i++){
do{
for(j = i+1,flag = 0;j < len+1;j++){
if(a[i] == a[j]){
for( t =i ;t < n-1; t++){
a[t] = a[t+1];
}
a[n-++c] = 0;
len--;
flag = 1;
break;
}
}
}while(flag);
}
return len;
}
2.主函数
代码如下(示例):
void main(){
int a[N] = {1,1,0,3,0},m,len;
printf("删除前:\t");
for(m = 0;m<N;m++)
printf("%d ",a[m]);
len = dele(a,N);
printf("\n删除后:\t");
for(m = 0;m<len+1;m++)
printf("%d ",a[m]);
}
运行效果
删除前: 1 1 0 3 0
删除后: 1 3 0
--------------------------------
Process exited after 0.01425 seconds with return value 3
请按任意键继续. . .
总结
新手,想了好久,期待大佬交流改进