天天看點

《C語言及程式設計》實踐項目——數組與函數應用

【項目1-有序數組中插入資料(函數版)】

  有一個足夠“大”的數組a,其中已經存儲了n個呈升序排列的資料。調用函數insert(a, n, m),可以将數m插入到a中的合适位置,使其仍然保持升序,并且傳回值為數組中有效數字的個數(即原先的n加1)。

  例如,若a中資料為1 7 8 17 23 24 59 62 101,n=9,需要插入的數字m為50,調用函數insert(a, n, m)後,a中資料為1 7 8 17 23 24 50 59 62 101,n=10。

  下面給出了調用函數insert的main函數,請寫出insert函數來,實作上述功能。

【項目2 - 删除數組元素】

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

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

(1)請實作這個函數,并完成測試。

(2)如果在函數調用時,要求數組中的元素呈升序排列呢?

【項目3 - 數組的排序】

(1)編寫函數,完成冒泡排序

要求不能改變下面的main函數。

(2)字元數組排序:改造(1)的程式,使其能對字元數組進行排序,其中:

改為

(3)體驗選擇排序:改造(1)的程式,将bubble_sort(...)改為select_sort(...),排序算法由冒泡排序換作為選擇排序,排序結果由降序變為升序,完成類似的任務。

【項目4 - 查成績】

請程式設計式,輸入學号,查找出該同學的成績。

提示1:可以定義兩個int型數組,其中一個n存放學号,另一個s存放成績,可以保證兩個數組中,元素下标相同,對應的是同一位同學。例如n[18]值為3123,s[18]為98,說明學号為3123的同學成績為98。

提示2:因為資料無序,運用順序查找算法,在n數組中依據學号進行查找,在s數組中對應下标的值則為其成績。例如,通過在n中的查找,得出學号為3123的同學的下标為18,則其成績為s[18]。

下面是完成應用的部分代碼,已經能夠輸出成績清單。請在此基礎上實作有關的函數:

(2)在實際工程中,為了讓頻繁執行的查詢更快一些,常要求對資料進行排序,再進行查詢。請改造程式:①在調用readdata(num, score);讀入資料後,立即調用自定義函數sort對兩個數組進行排序(注意在排序需要交換時,應該同時交換兩個數組中對應的值,以保證同一下标,對應的是同一個學生的學号和成績);②這樣,search函數可以實作為二分查找了;③改造main函數,支援多次的查找。

繼續閱讀