2020年5月7日 星期四

[程式設計工法] C/ C++,科園實中資科教甄109,B7

C/ C++,科園實中資科教甄109,B7


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.7, 2020
88x31.png[1]

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

7. 下列程式碼執行後的輸出結果為(7)


    解析:

    • 直接run結果建立直觀:
    • Linked list數目追蹤。
    • 陣列內容變化:
    • 題意图解:

    #include <iostream>
    #include <iomanip>
    using namespace std;

    #define ARY_LENGTH 10

    void print_array(int fri[]) {
    int i = 0;

    cout <<fri[] = ";

    for (i = 0; i < ARY_LENGTH; i++) {
    cout << fri[i] << " ";
    }

    cout << endl;
    }

    void find(int fri[], int n) {
    int group=0;
    int i;

    for (i = 0; i < n; ++i) { //整個陣列掃一輪
    if (fri[i] != -1) { //開追完串列
    ++group; //串列數
    int j = i;

    while (fri[j] != -1) { //根据當前索引位置的陣列內容跳至那個item
    int next = fri[j];
    fri[j] = -1;
    j = next;

    print_array(fri);
    }
    }
    }

    cout << group << endl;
    }

    int main(void) {
    int fri[10]={4, 7, 2, 9, 6, 0, 8, 1, 5, 3};

    print_array(fri);
    find(fri, 10);

    return 0;
    }

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