作者WenSky (橡皮擦)
看板TransCSI
標題[問題] 元智83年考古
時間Sun Jun 26 18:02:03 2005
定義int a[4][5]
若a=1000
問(a+2)+3 = ?
(a)1024 (b)1026 (c)1028 (d)1030 (e)1036
請各位幫忙一下 請附解說 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.217.230.89
> -------------------------------------------------------------------------- <
作者: E9E7 (early!) 看板: TransCSI
標題: Re: [問題] 元智83年考古
時間: Mon Jun 27 21:54:35 2005
※ 引述《WenSky (橡皮擦)》之銘言:
: 定義int a[4][5]
: 若a=1000
: 問(a+2)+3 = ?
: (a)1024 (b)1026 (c)1028 (d)1030 (e)1036
: 請各位幫忙一下 請附解說 謝謝
我的見解是這樣
用row major下來算
這裡的a,還有(a+2)+3應該都是指"記憶體的位置"
假使每個integer需要兩個cell來存的話
那麼(a+2)+3應該只的是第二個row還有第三個col(兩者皆從零開始數起)
所以我想應該這麼算吧...
(a+2)=a + (2 * (5) + 3) * (2 Cell/int)
^ ^ ^ ^每個integer需要兩個Cell
^ ^ ^第三個column
^ ^每個row都有五個column
^再第二個row,表示跳過了兩個row(分別為第0還有第1row)了
= 1000 + 13*2 = 1026
請指教^^"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.168.30.50
※ 編輯: E9E7 來自: 61.231.27.136 (06/28 14:40)
> -------------------------------------------------------------------------- <
作者: WenSky (橡皮擦) 看板: TransCSI
標題: Re: [問題] 元智83年考古
時間: Tue Jun 28 01:28:55 2005
※ 引述《E9E7 (early!)》之銘言:
: 我的見解是這樣
: 用row major下來算
: 這裡的a,還有(a+2)+3應該都是指"記憶體的位置"
: 假使每個integer需要兩個cell來存的話
: 那麼(a+2)+3應該只的是第二個row還有第三個col(兩者皆從零開始數起)
: 所以我想應該這麼算吧...
: (a+2)=a + (2 * (5+1) + 3) * (2 Cell/int)
: ^ ^^^ ^ ^每個integer需要兩個Cell
: ^ ^^^ ^第三個column
: ^ ^^^每個row都有六個column
: ^再第二個row,表示跳過了兩個row(分別為第0還有第1row)了
: = 1000 + 15*2 = 1030
: 請指教^^"
謝謝!! 我也是這樣想的!!
但是你跟我最後一個地方還是不同..
你是由row開始算 可是我是從column開始算
也就是說 ******
******
***@**
******
****** (@是所問的)我是先把第一排column數完才數下一排 妳是先數row
而我的結果就是1036
這個二維陣列的東西感覺是很直觀的東西
帶公式感覺怪怪的@_@ 不過還是謝謝各位先輩的幫忙~~ <(_ _)>
不然我也不知道有這公式的存在 = =
但是解答是寫1026
再一個但是..但是這解答是"頗出名"的鍾天的書提供的.. (萬惡?)
有人可以很確定的告訴我正確答案是什麼嗎?
不想存有一絲疑惑去應考..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.203.113
※ 編輯: WenSky 來自: 61.224.203.113 (06/28 03:10)
推 hicoy:1026是用C的ARRAY算的140.121.140.134 06/28
→ hicoy:int a[4][5]表ROW有4個COL有5個140.121.140.134 06/28
> -------------------------------------------------------------------------- <
作者: hhg4092 (losy connect) 看板: TransCSI
標題: Re: [問題] 元智83年考古
時間: Tue Jun 28 10:24:47 2005
※ 引述《WenSky (橡皮擦)》之銘言:
: ※ 引述《E9E7 (early!)》之銘言:
: 也就是說 ******
: ******
: ***@**
: ******
: ****** (@是所問的)我是先把第一排column數完才數下一排 妳是先數row
: 而我的結果就是1036
: 這個二維陣列的東西感覺是很直觀的東西
: 帶公式感覺怪怪的@_@ 不過還是謝謝各位先輩的幫忙~~ <(_ _)>
: 不然我也不知道有這公式的存在 = =
: 但是解答是寫1026
: 再一個但是..但是這解答是"頗出名"的鍾天的書提供的.. (萬惡?)
: 有人可以很確定的告訴我正確答案是什麼嗎?
: 不想存有一絲疑惑去應考..
rom=start+((r-1)*c+c-1)*c
這個公式中的減1是假設一開始是(1,1),..
如不減一的話就是從(0.0)開始...
1,1 1,2 1,3
2,1 2,2 2,3
...還是要看題目有沒有給起始是0,0還1,1..
像我之前解就是用1,1的方式去解
如果平常沒說..那應該是用0,0
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.162.118.245
→ WenSky:用0 0沒錯 59.112.239.58 06/28
> -------------------------------------------------------------------------- <
作者: hicoy () 站內: TransCSI
標題: Re: [問題] 元智83年考古
時間: Tue Jun 28 12:04:22 2005
※ 引述《WenSky (橡皮擦)》之銘言:
: 定義int a[4][5]
: 若a=1000
: 問(a+2)+3 = ?
: (a)1024 (b)1026 (c)1028 (d)1030 (e)1036
: 請各位幫忙一下 請附解說 謝謝
po一下我的想法
如果是以C來宣告的話
int a[4][5]的圖應該是這樣
*****
*****
**@**
*****
我是以row為主來計算(之前好像有聽說80X86是以ROW來編排ARRAY的不過我不確定)
(a+2)+3應該是第3個ROW的第3個
所以應該是1000+2*(5*2)+3*2=1026
我想原PO說解答給的答案應該是這樣算的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.213.170
推 E9E7:恩,應該是這樣,我一時粗心了^^" 61.231.27.136 06/28
推 WenSky:正確 謝謝 59.112.239.58 06/28