2020年5月5日 星期二

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

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


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

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

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


    解析:

    • 直接run結果建立直觀:
    • local variable vs. global varibale。

    #include <iostream>
    using namespace std;


    void add(int a) {
    int s=3;

    for (; a>=0; --a) {
    cout<<s;
    s++;
    cout<<s;
    }
    }

    int main() {
    cout<<s;

    add(s);
    cout<<s;

    s=5;
    cout<<s<<endl;

    return 0;
    }

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

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

    C/ C++,科園實中資科教甄109,A1&2


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

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

    [題組] :下面為某一程式執行的結果及其程式碼片段,請據此回答1、2 題。


    1. 請問上方程式的空格(i)與(j)應分別填入?
      (A)d、b (B)d、a (C)b、a (D)b、d
    2. 承上題,若將while 迴圈的判斷條件改為「d<=200」,則最後一個輸出的數字為何?
      (A)144 (B)200 (C)233 (D)程式出現錯誤無法輸出

      解析:
      1. 
      A. 直接run結果建立直觀:,蛋,有沒4層相4?那個Fxxx序列(這題我應該拿分的啊!)
      B.
      1A:
         d<-a b="" div="" nbsp="">
         a<-d a="" b="" div="">
         => d=d+b => 每次都加1。
      1B:
         d<-a b="" div="">
         a<=d=a+b
         b<-a a="" b="" div="">
         => d<-2 a="" b=""> 每次都乘2
      1C:
         a<-b div="">
         b<-a div="">
         =>d<-a b="2(永遠a=b=1)"> 呈式永遠不會停


      2
      1若选A,則答案為201
      1若选B,則答案為256
      1若选D,則答案為233

      ∴implement Fib #的algorithm為:

      a b d
      n 1 2 3 4 5
      Fib(n) 1 1 2 3 5
      a b d
      n 1 2 3 4 5
      Fib(n) 1 1 2 3 5


      #include <iostream>
      using namespace std;

      int main() {
      int a=1, b=1, d=0;
      cout<<a<<endl;
      cout<<b<<endl;
      while (d<=200) {
      d=a+b;
      a=b;
      b=d;
      cout<<d<<endl;
      }
      return 0;
      }

      著名演算法要背!

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