2020年5月5日 星期二

[程式設計工法] 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. 六種授權條款

    沒有留言: