C語言實現刪除某一個數組值的方法

C語言數組——刪除數組中的某個值

1、前言

在傢裡閑著還是閑著,這幾天見證瞭Python各種數據結構的強大。Python中的數據類型如:列表、元組、字典等都具有其的特點。列表無需要設定其的長度,我們可以隨機插入元素,同時元素的類型也是隨意的。

或許這就是面向對象語言的強大,C語言做為面向過程的語言自然沒有如同Python一般強大的功能。學習C語言不會指針和結構體確實玩不出什麼東西,就例次CCF考試的字符串處理題使用C語言難度都很大,但是使用諸如C++一樣面向對象的語言都是能輕而易舉地解決問題的。

不過為瞭讓以後處理C語言更加方便,個人打算今後在這記錄一些使用的函數,大傢可以自取。

2、刪除數組中的元素

python中我們可以輕易地使用如下的方法刪除特定的元素:

lang = ["Python", "C++", "Java", "PHP", "Ruby", "MATLAB"]

#使用正數索引

del lang[2]
print(lang)

然而C語言一切東西都得靠自己搭建。在學習數據結構時第一個實驗就是與順序表處理相關的內容,這裡介紹的就是其中一個操作。

我們在這邊就可以先定義一個函數,參數分別是數組名和數組長度:

void del_element(int arr[],int n) //n為數組的元素個數

數組的長度雖然需要我們自己給定,但是我們不必要直接寫出其具體的元素個數,而直接先向數組中賦值。

int arr[]={1,4,5,7};

既然要刪除數組中的元素,我們就必須得先知道數組中有哪些元素。同時還要定義一個變量,並將需要刪除的元素賦值給那個變量。

  

  int delect=0;

    printf("刪除操作前的數組:\n");
    for(int k = 0;k<n;k++)
    {
        printf("%4d",arr[k]);
    }
    printf("\n");

    printf("請輸入你要刪除的數:");
    scanf("%d",&delect);

下面就是重中之中,刪除這個元素的操作:

將要刪去的元素後面的元素往前移,那個要刪除的函數自然而然就被覆蓋掉瞭。

函數源代碼:

void del_element(int arr[],int n) //n為數組的元素個數
{
    int delect=0;

    printf("刪除操作前的數組:\n");
    for(int k = 0;k<n;k++)
    {
        printf("%4d",arr[k]);
    }
    printf("\n");

    printf("請輸入你要刪除的數:");
    scanf("%d",&delect);

    for(int i=0;i<=n-1;i++)
    {
        if(delect==arr[i])
        {
            for(int j=i;j<=n-2;j++)
            {
                arr[j]=arr[j+1];//覆蓋
            }
        }
    }
}

下面我們在主函數中調用該函數:

int main()
{
    int arr[]={1,4,5,7};
    int length_arr = sizeof(arr)/sizeof(int);
    del_element(arr,length_arr);
    printf("完成操作後的數組:\n");
    for(int i=0;i<length_arr-1;i++)
    {
        printf("%4d",arr[i]);
    }
    return 0;
}


我們可以不需去計算數組元素個數,而是使用sizeof(arr)/sizeof(int)的方式計算數組長度。

操作過程與結果:

C語言雖然較為麻煩,但是我們仍然可以用一些簡單的方法實現。

到此這篇關於C語言數組中刪除數組中某個值的方法的文章就介紹到這瞭,更多相關C語言數組中刪除數組中某個值內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: