2020年6月4日 星期四

[程式設計工法] C,北市国中資科教甄109,54

C,北市国中資科教甄109,54


FB2http://gg.gg/TedLeeMicrobitFB/
URL2http://gg.gg/TedLeeMicrobit/

Line:ted2016.kpvs
Email:Lct4246@gmail.com
FB1http://gg.gg/TedLeeFB/
Bloghttp://gg.gg/TedLeeBlog/
URL1http://gg.gg/TedLeeURL/

May. 24, 2020
88x31.png[1]

問題解決(Problem Solving之逻輯思維 =
心法: 程式設計哲思(Philosophical Thinking for Programming) +
技法:程式設計工法(Skills for Programming)

11. 若 num 陣列元素值為 40、60、30、10,則以 abc(num,0,3)呼叫執行下列函式 abc 後 num 陣列元素值為何? 
(A)40、10、30、60
(B)10、40、30、60
(C)40、30、10、60
(D)40、60、30、10 

    解析:
    • 直接run結果建立直觀
    • 图解

    #include <iostream>
    using namespace std;

    int num[]={40, 60, 30, 10};

    void abc(int d[], int first, int last) {
    int i, j, k, l;
    i=k=first; //拿d[k]當基準
    j=last;

    while (i<j) {
    while (d[i]<=d[k]&&i<last) //往右找大的(>)
    i++;
    while (d[j]>d[k]) //往左找小的(?)
    j--;
    if (i<j) { //沒交錯前交換之
    l=d[i];
    d[i]=d[j];
    d[j]=l;
    }
    }
    }

    void show(void) {
    for (int i=0; i<4 i="" span="">
    cout << num[i] >> ", ";
    }

    cout << endl;
    }

    int main(void) {
    show();
    abc(num, 0, 3);

    show();
    return 0;
    }

    参考資料
    1. 六種授權條款

    沒有留言: