看板 C_and_CPP 關於我們 聯絡資訊
你已經知道交換兩個數字是這樣寫了 int temp; temp=arr[0]; arr[0]=arr[1]; arr[1]=temp; 因此你的問題就成了: 如何找出你想交換的兩個數字的位置,只要找出來就可以寫完了 int find_min_odd_index(int *arr) { 從 arr 裡面找出最小奇數的位置,並且回傳 } int find_max_even_index(int *arr) { 從 arr 裡面找出最大偶數的位置,並且回傳 } void MyOddEven(int *arr) { int min_odd_index, max_even_index, temp; min_odd_index = find_min_odd_index(arr); max_even_index = find_max_even_index(arr); temp = arr[min_odd_index]; arr[min_odd_index] = arr[max_even_index]; arr[max_even_index] = temp; } 現在你只需要確定那兩個函式是正確的就可以了 所以你可以準備一個這樣的main來做測試: int main() { int arr[] = {12, 90, 81, 17}; if (find_min_odd_index(arr) == 3) { printf("正確找到最小奇數了"); } if (find_max_even_index(arr) == 1) { printf("正確找到最小偶數了"); } } 只要這個測試通過應該就成功囉 XD -- 實際上不一定要這麼囉嗦,但寫程式本來就是像這樣的流程 (1) 把問題拆解成好幾個小問題:找出兩個要交換數字的位置、交換它 (2) 正確的解決每一個小問題:正確的找出來,正確的交換 (3) 把這些解法合在一起,就可以解決原問題了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.46
VictorTom:睡前推:) 05/02 02:54
※ 編輯: james732 來自: 140.117.171.46 (05/02 02:55)
loveme00835:拍拍推 Q口Q 05/02 03:18
板主人真好 〒△〒
legnaleurc:這就是傳說中的 test-driven 嗎 XD 05/02 03:20
我最近真的在看敏捷開發的書耶,覺得還挺有道理的 XD ※ 編輯: james732 來自: 140.117.171.46 (05/02 03:50)