C語言及程式設計 實踐參考 刪除陣列元素

2021-08-31 07:47:34 字數 1442 閱讀 4624

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

返回:賀老師課程教學鏈結

專案要求

【專案2 - 刪除陣列元素】

del函式的作用是刪除陣列a中的指定元素x,n為陣列a的元素個數。函式的返回值,為刪除元素後的有效元素個數(陣列中可能有重複元素)。函式的原型為:

int del (int a[10],int n,int x)

(1)請實現這個函式,並完成測試。

[參考解答]

#include

intdel

(int a,int n, int x)

;int

main

( );    int i, n;    n = del(a, 20, 77);    printf("剩餘 %d 個:\n", n);    for(i=0; iprintf("%d ", a[i]);    printf("\n");    return

0;}int

del(int a,int n, int x)

//刪除長度為n的a陣列中值為x的元素

q++;       }   //最後的效果,等於x的元素都沒有「搬」過來,它們被「覆蓋」了,也即被刪除了

return p; //p代表的,就是刪除後的元素個數}

(2)如果在函式呼叫時,要求陣列中的元素呈公升序排列呢?

[參考解答]

思路:例如在下面main函式中的測試,刪除77時,分三個階段:①先找到77;②跨過若干個77後,找到了80;③從80開始,將資料逐個地搬到前面合適的位置(「覆蓋」了77及隨後的位置)。

#include

intdel

(int a,int n, int x)

;int

main

( );    int i, n;    n = del(a, 20, 77);    printf("剩餘 %d 個:\n", n);    for(i=0; iprintf("%d ", a[i]);    printf("\n");    return

0;}int

del(int a,int n, int x)

//刪除長度為n的a陣列中值為x的元素

後記:實際上,對於本專案中涉及問題,利用好這個有序的特徵,反倒使處理變得複雜了,同時也沒有帶來效率上的提高——和對於無序陣列一樣,都要「掃瞄」整個陣列。但是,這樣的問題如果在工程中,尤其是當n很大時,階段①的工作可以用二分法完成,這是改進思路之一。另外,儲存結構不一定用陣列這種順序儲存的結構。總之,這一段程式,作為學習過程中「活動」腦瓜的乙個遊戲,玩玩也挺好。

給我老師的人工智慧教程打call!

《C語言及程式設計》實踐參考 刪除陣列元素

專案要求 專案2 刪除陣列元素 del函式的作用是刪除陣列a中的指定元素x,n為陣列a的元素個數。函式的返回值,為刪除元素後的有效元素個數 陣列中可能有重複元素 函式的原型為 int del int a 10 int n,int x 1 請實現這個函式,並完成測試。參考解答 includeint d...

《C語言及程式設計》實踐參考 陣列的排序

返回 賀老師課程教學鏈結 專案要求 專案3 陣列的排序 1 編寫函式,完成氣泡排序 要求不能改變下面的main函式。兩個函式bubble sort和output array的宣告 int main int b 15 bubble sort a,20 用冒泡法按降序排序a中元素 output arra...

《C語言及程式設計》實踐參考 陣列大折騰

返回 賀老師課程教學鏈結 專案要求 專案1 陣列大折騰 1 建立乙個有20個元素的整型陣列,通過初始化,為陣列中的前10個元素賦初值,然後通過鍵盤輸入後10個元素的值,從前往後 從第0個到第19個 輸出陣列中元素的值,每5個元素換一行。int main 初始化前10個元素 鍵盤輸入後10個元素的值 ...