期中考沒考好怎麼辦呢?
這個問題每年都有人問! 現在開始奮發圖強還來得及!
就算期中考只有個位數, 仍有機會這學期拿到 80 分以上!
因為雖然期中考佔30%~35%, 但我們會有進步加分, 進步越多加越多!
其實, 現在你再看看期中考考題..
你該發現只要上課和演習課都有來都有聽進去, 要考100分並不難!
因為, 滿分是 125, 且全部是上課或習題演習課講過的,
考試時間有110分鐘, 很多題目是 1 分鐘內就可得到 3分!
例如, (V)-(b) 有 3 分, 要生出 [5, 31] 放到 ans, 就
ans = 5 + rand%(31-5+1); // 當然也可把 31-5+1 算好
這樣不用一分鐘吧?
再來看看 (II) 這題有 13分, 這送分題不到 5 分鐘就可寫完ㄟ ..
4%(a)Consider the following C program:
int x;
static int y;
int main( ) {
int a=38;
static int b;
b = x + y + a; return b;
}
請指出哪些變數是 Global 變數? 答: x, y
哪些是 Local 變數? 答: a, b
哪些是Auto變數? 答: a
哪些是 static Local變數? 答: b
3%(b)Auto variables 會被安排在記憶體的何處? ==> 在堆疊區
何以 Auto variable 若是 array 則它的 size 不可以太大?
答: 因為一般安排給堆疊區的記憶體很小, 幾 k 到幾十 k,
所以 auto 變數 array 若太大會爆掉!
3%(c)What is the purpose of static Global variable?
Explain it with example.
答: static Global 變數只有在同檔案 (file)內的 functions 才可以使用它!
具有類似C++ information hiding (資訊隱藏) 的概念!
例子就上課講過的隨便拿一個來寫就可:-)
例如 rand( ) 和 srand( ) 共用的 seed 就是 static Global;
還有, getch( ) 與 ungetch( ) 共用的 buffer 也是 ! (K&R 和我們投影片)
3%(d)已知 x, y, k 都是 short 變數, 令 y = -x; 結果 y 與 x 相等,
已知 x 不是 0, 請問 x 是多少?
答: x 是 -32768 (上課講過)
若令 k = x+x; 則 k 是多少?
答: k 是 0
因為 -32768 是二進位的 10000....000 (只有 sign bit 是 1)
就是 -32768 + (-32768) = (100...000)bin + (100...000)bin = 0
==>說明: 最左邊的 1 相加後 變 0, 進位到 暫存器的 Carry;
所以結果是 0 (雖然這上課沒講, 但等同小學生把兩數相加ㄟ)
因為上課有講到: short 最大就是 0111...111 == 32767
此時加上 1 後變成 1000...000 == -32768 (最左 1 其他 0)
兩個 1000...000 相加只留下 16 bit 當然是 0000...000
(*考慮電腦使用二的補數表示法 2's complement)
再看 (VII) 也是上課講過 N 次的,
例如 (VII)-(a) 一看就知道答案,
主要是注意 x 是 double, y 是 float,
而 float 的 1234567.2 和 1234567.3 都會存 1234567.25
且 1234567.25 + 0.0001 仍是 1234567.25
因為 float 實數的 significand 只有 23 bits,
加上 1 bit 的 hidden bit 只有24bit,
所以二進位 24 位的有效位等同十進位 7.2位 (24*0.3010=7.2)
所有化成二進位後無窮盡的存入電腦就會有不準確的現象!
過去的已經過去(逝者已矣), 子曰人必自棄而後人棄之!
所以, 現在開始用功還來得及,
那就從這週的演習課開始努力吧!
當然, 週四的上課也要起得來不要遲到姍姍來遲!
還有, 請注意以後的考試都不可以再帶任何參考資料喔!
因為到現在很多東西都應該已經不小心記起來(不用背!)
至於那些這次運氣好剛好把考古題答案寫在 A4 memo 上且有賺到的同學,
在慶幸自己狗屎運之外, 當然也該更用功上課和做習題!
前一信中我們說過研究一些小函數如何寫可以使功力增強!
現在再來看看 isupper(int) 與 islower(int) 程式如何寫?
注意程式庫中的這些 yes/no 函數不一定用 1 當作 yes
不過那並不重要, 通常程式庫這樣分類:
字母 1, 大寫 1, 小寫 2, 數字 4, 廣義空白 8, ...
但這些對我們並沒有意義, 我們要的是 yes or no
不是 0 就代表 yes; 只有 0 代表 no
現在就看看這已經幫你跑出答案的小程式吧!
==============OK
計概程設期中考沒考好怎麼辦呢?
這個問題每年都有人問! 現在開始奮發圖強還來得及!
就算期中考只有個位數, 仍有機會這學期拿到 80 分以上!
因為雖然期中考佔30%~35%, 但我們會有進步加分, 進步越多加越多!
其實, 現在你再看看期中考考題..
你該發現只要上課和演習課都有來都有聽進去, 要考100分並不難!
因為, 滿分是 125, 且全部是上課或習題演習課講過的,
考試時間有110分鐘, 很多題目是 1 分鐘內就可得到 3分!
例如, (V)-(b) 有 3 分, 要生出 [5, 31] 放到 ans, 就
ans = 5 + rand%(31-5+1); // 當然也可把 31-5+1 算好
這樣不用一分鐘吧? (這上課有講過喔! 習題範例內也有)
再來看看 (II) 這題有 13分, 這"送分題"不到 5 分鐘就可寫完ㄟ ..
4%(a)Consider the following C program:
int x;
static int y;
int main( ) {
int a=38;
static int b;
b = x + y + a; return b;
}
請指出哪些變數是 Global 變數? 答: x, y
哪些是 Local 變數? 答: a, b
哪些是Auto變數? 答: a
哪些是 static Local變數? 答: b
3%(b)Auto variables 會被安排在記憶體的何處? ==> 在堆疊區
何以 Auto variable 若是 array 則它的 size 不可以太大?
答: 因為一般安排給堆疊區的記憶體很小, 幾 k 到幾十 k,
所以 auto 變數 array 若太大會爆掉!
3%(c)What is the purpose of static Global variable?
Explain it with example.
答: static Global 變數只有在同檔案 (file)內的 functions 才可以使用它!
具有類似C++ information hiding (資訊隱藏) 的概念!
例子就上課講過的隨便拿一個來寫就可:-)
例如 rand( ) 和 srand( ) 共用的 seed 就是 static Global;
還有, getch( ) 與 ungetch( ) 共用的 buffer 也是 ! (K&R 和我們投影片)
3%(d)已知 x, y, k 都是 short 變數, 令 y = -x; 結果 y 與 x 相等,
已知 x 不是 0, 請問 x 是多少?
答: x 是 -32768 (上課講過)
若令 k = x+x; 則 k 是多少?
答: k 是 0
因為 -32768 是二進位的 10000....000 (只有 sign bit 是 1)
就是 -32768 + (-32768) = (100...000)bin + (100...000)bin = 0
==>說明: 最左邊的 1 相加後 變 0, 進位到 暫存器的 Carry;
所以結果是 0 (雖然這上課沒講, 但等同小學生把兩數相加ㄟ)
因為上課有講到: short 最大就是 0111...111 == 32767
此時加上 1 後變成 1000...000 == -32768 (最左 1 其他 0)
兩個 1000...000 相加只留下 16 bit 當然是 0000...000
(*考慮電腦使用二的補數表示法 2's complement)
再看 (VII) 也是上課講過 N 次的,
例如 (VII)-(a) 一看就知道答案,
主要是注意 x 是 double, y 是 float,
而 float 的 1234567.2 和 1234567.3 都會存 1234567.25
且 1234567.25 + 0.0001 仍是 1234567.25
因為 float 實數的 significand 只有 23 bits,
加上 1 bit 的 hidden bit 只有24bit,
所以二進位 24 位的有效位等同十進位 7.2位 (24*0.3010=7.2)
所有化成二進位後無窮盡的存入電腦就會有不準確的現象!
過去的已經過去(逝者已矣), 子曰人必自棄而後人棄之!
所以, 現在開始用功還來得及,
那就從這週的演習課開始努力吧!
當然, 週四的上課也要起得來不要遲到姍姍來遲!
還有, 請注意以後的考試都不可以再帶任何參考資料喔!
因為到現在很多東西都應該已經不小心記起來(不用背!)
至於那些這次運氣好剛好把考古題答案寫在 A4 memo 上且有賺到的同學,
在慶幸自己狗屎運之外, 當然也該更用功上課和做習題!
***
前一信中我們說過研究一些小函數如何寫可以使功力增強!
現在再來看看 isupper(int) 與 islower(int) 程式如何寫?
注意程式庫中的這些 yes/no 函數不一定用 1 當作 yes
不過那並不重要, 通常程式庫這樣分類:
字母 1, 大寫 1, 小寫 2, 數字 4, 廣義空白 8, ...
但這些對我們並沒有意義, 我們要的是 yes or no
不是 0 就代表 yes; 只有 0 代表 no
現在就看看這已經幫你跑出答案的小程式吧!