> ==>發信人: xfuns.bbs@ptt.cc (星), 信區: programming
> 要問一題題目
> 這一題我是都寫對
> 但總覺得哪裡不太對勁 而且解法不知對不對
> 想請教各位指點一下 謝謝!!
> 如下:
> int *ptr,t1,t2,a[][3]={1,2,3,4,5,6,7,8,9,10,11,12};
^這是 size , C 語言是 Row Majoring 從 0 開始到 2
a[0][0]
\
1 2 3
4 5 6
7 8 9 <---a[2][2]
10 11 12
> ptr=&a[2][2];
> t1=*ptr++; t2=*(ptr-3);
^^^ 先搬完 *ptr 後, ptr 才前進到下一個 element
> 它題目是要問t1、t2=?
> 我的解法:
真是這樣解釋是全錯, 但答案卻應該說是蒙上啦 !
> 因為a沒說是列優先還是行優先
> a陣列會有二種可能性
> 0 1 2 3 0 1 2 3
> 1 2 3 4 1 4 7 10
> ? 5 6 7 8 ? 2 5 8 11
> 9 10 11 12 3 6 9 12
> (列) (行)
> ptr = a[2][2] 會有多種可能性(因為a的列值不確定為何?)
> 在列優先裡因為不知2是哪一列 所以有可能為 3、7、11 的address(第2行所有值)
> 在行... .. ... .. 7、8、9 ... ...
> *ptr = 3、7、11
> 7、8、9
> 而t1=*ptr++ 所以 t1的值有可能為=5、9、13 ; 9、10、11
> 這題是選擇題 (a)7 (b)25 (c)45 (d)9 (e)none of above
> 答案是(d)9 我t1是這樣算出來的
> 而t2=*(ptr-3);
> ptr為指向3、7、11的address即 2、6、10
> 7、8、9 的address即 6、7、8
> 分別-3後 -1、3、7
> 3、4、5
> 所以t2的值可能為 3、4、5、7
> 這題選項和求t1的選項一樣
> 而答案是(a)7
> 到這邊為止
> 這樣解法有沒有什麼地方不妥?還是有其他解法呢?
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234