作者james732 (好人超)
看板C_and_CPP
標題Re: [問題] 關於函數、陣列 互換問題
時間Mon May 2 02:52:34 2011
你已經知道交換兩個數字是這樣寫了
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)