分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
返回:賀老師課程教學鏈結
專案要求
【專案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個元素的值 ...