题目:c语言,删除数组中指定的重复的元素
#include <stdio.h>
/*
功能:删除数组中的指定元素
参数:arr 数组名, len 数组的实际长度, del 要删除的数据
返回值:成功返回数组的有效长度 失败返回-1
*/
int deleteElement(int arr[], int len, int del);
int main(int argc, char ** argv)
{
int arr[10] = {1,2,3,4,4,6,7,8,9,0};
int del = 0;
printf("请输入要删除的数据: ");
scanf("%d", &del);
//删除数组中的指定元素
int len = deleteElement(arr, 10, del);
if(-1 == len){
printf("删除失败\n");
}else{
int i = 0;
for(i = 0; i < len; i++){
printf("%-5d", arr[i]);
}
printf("\n");
}
return 0;
}
/*
功能:删除数组中的指定元素
参数:arr 数组名, len 数组的实际长度, del 要删除的数据
返回值:成功返回数组的有效长度 失败返回-1
*/
int deleteElement(int arr[], int len, int del)
{
//外层循环寻找要删除的元素
int i = 0;
int j = 0;
int tmp = len;
for(i = 0; i < len; i++){
if(arr[i] == del){ //找到要删除的元素
//将该元素后边的所有元素前移
for(j = i; j + 1 < len; j++){
arr[j] = arr[j + 1];
}
//数组有有效长度-1
len--;
//防止重复元素的删除时,位置的后移
--i;
}
}
if(!(tmp - len)){
return -1;
}
return len;
}