c语言 删除数组中的一个(某个)元素

1.返回新的数组

#include "stdio.h"

//删除数组中的第几个元素
//len:数组长度
//index:要删除第几个元素
int* arrDelete(int* arr,int index,int len){
    
    
    int newLen = len - 1;
    int newArr[newLen];
    for (int i = 0; i < newLen; i++) {
    
    
        if (i < index) {
    
    
            newArr[i] = arr[i];
        }else{
    
    
            newArr[i] = arr[i+1];
        }
    }
     return newArr;
}

int main()
{
    
    
    int numArr[5] = {
    
    1,2,3,4,5};
    printf("删除前---------------\n");
    for (int i = 0; i < 5; i++) {
    
    
        printf("%d\n",numArr[i]);
    }
    int* newArr = arrDelete(numArr,2,5);
    printf("删除后---------------\n");
    for (int i = 0; i < 4; i++) {
    
    
        printf("%d\n",newArr[i]);
    }
}

打印结果:
删除前---------------
1
2
3
4
5
删除后---------------
1
2
4
5
Program ended with exit code: 0

2.还是原来的数组

//删除数组中的第几个元素
//len:数组长度
//index:要删除第几个元素
 void arrDelete(int* arr,int index,int len){
    
    
    for (int i = 0; i < len-1; i++) {
    
    
        if (i < index) {
    
    
            arr[i] = arr[i];
        }else{
    
    
            arr[i] = arr[i+1];
        }
    }
     arr[len-1] = EOF;
}


int main()
{
    
    
    int arr[5] = {
    
    1,2,3,4,5};
    printf("删除前---------------\n");
    for (int i = 0; i < 5; i++) {
    
    
        printf("%d\n",arr[i]);
    }
    arrDelete(arr,2,5);
    printf("删除后---------------\n");
    for (int i = 0; i < 5; i++) {
    
    
        if (arr[i] == EOF) {
    
    
            break;;
        }
        printf("%d\n",arr[i]);
    }
}

打印结果:
删除前---------------
1
2
3
4
5
删除后---------------
1
2
4
5
Program ended with exit code: 0

猜你喜欢

转载自blog.csdn.net/baidu_40537062/article/details/124276786