作者jimmycool (北七)
看板Army-Sir
标题Re: [问题] 计概-程式语言
时间Thu Jan 17 16:41:07 2013
※ 引述《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
1F:→ jimmycool:打到一半地震... 01/17 16:41
2F:推 lonelywind:完全解惑!! 大感谢^____^ 01/17 17:30
3F:推 foolishbi:ABCD m0表示0000 m1表示0001 m2表示0010 以此类推 01/17 18:59
4F:→ foolishbi:应该是放纵放横都可以 重点是要放对位置 01/17 19:00
5F:→ jimmycool:嗯嗯,感谢楼上补充 01/17 20:33
6F:推 foolishbi:其实我是满想问 英文会考考古题吗XD 01/17 23:38