Re: [問題] 計概-程式語言
※ 引述《lonelywind (lonelywind)》之銘言:
: 爬過板沒有看到類似的問題
: 想請問板上各位神人
: 1. 若在C語言中宣告下列變數及初值: int i = 1, j = 2, k = 3, m = 4;
: j* = k = m + 5 + i; 則運算結果j等於?
j *= k = m + 5 + i;
因為 + 的執行順序比 = 高,所以m + 5 + i會先算,得到4+5+1=10
這個"10"會被assign給k,最後j *= k -> 因為j本來是2, 乘完以後j == 20
: 2. 下列程式如果參數傳遞的方式為 call-by-reference / call-by-name,其輸出結果
: 為何?
: Sub (x,y,z) {x = y + z; y = z - x}
: main() {a = 1; b = 2; c = 3
: call sub (a, b, a+c);
: print (a, b, c)}
call-by-reference是把變數在記憶體裡面的位置直接傳進去,
z吃的a+c是臨時生出來的一個變數,不是a也不是b也不是c,我們就叫他z吧
把x,y套進a, b, z還是z,Sub裡面就變這樣:
z = a + c; //z == 4 (1 + 3)
a = b + z; //a == 6 (2 + 4)
b = z - a; //b == -2 (4 - 6)
c不變,所以a==6, b==-2, c==3
call-by-name就是直接把x,y,z用a,b,a+c套上去
Sub裡面變這樣:
a = b + a + c; // a == 6 (2 + 1 + 3)
b = a + c - a; // b == 3 (6 + 3 - 6)
c不變,所以a==6, b==3, c==3
: 另外還有1題邏輯的問題,有看到說明但是不太明白
: 3. F = (A,B,C,D) = sigma m(1,3,5,7,9,11,13,15)可化簡為? --> D
: 我會畫卡諾圖,不過我不太懂題目的意思是什麼?
: 是在卡諾圖上將m1,m3,m5,m7,m9,m11,m13,m15都標上1然後化簡嗎?
應該是
: 不過我這樣化簡起來不是D耶
見下
: 再問個更基本的問題
: 卡諾圖的畫法中 1.ABCD的位置和順序 2.m0,m1,m2...標示的順序
: 這兩者有固定嗎? 還是怎麼畫都會一樣呢?
: 先謝謝解答的大大們^^
應該有差
正確是畫
CD
AB \ 00 01 11 10
00 0 1 1 0
01 0 1 1 0
11 0 1 1 0
10 0 1 1 0
則中間的那坨1可以化簡成D (唯一的共同項)
也就是這題的答案
可是比如說你畫成
AB
CD \ 00 01 11 10
00 0 1 1 0
01 0 1 1 0
11 0 1 1 0
10 0 1 1 0
中間那坨就會化簡成B
m0,m1......m15代表的是化成二進位以後,ABCD分別是1還是0,
比如說m6就是1010,就是AB'CD'(A,C是1, B,D是0)
換掉順序自然答案也就不一樣了,所以要記得縱軸先排上AB橫軸再排上CD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.20.113
→
01/17 16:41, , 1F
01/17 16:41, 1F
推
01/17 17:30, , 2F
01/17 17:30, 2F
推
01/17 18:59, , 3F
01/17 18:59, 3F
→
01/17 19:00, , 4F
01/17 19:00, 4F
→
01/17 20:33, , 5F
01/17 20:33, 5F
推
01/17 23:38, , 6F
01/17 23:38, 6F
討論串 (同標題文章)