[理工] 一題 C 陣列

看板Grad-ProbAsk作者時間12年前 (2013/05/19 23:21), 編輯推噓4(4011)
留言15則, 5人參與, 最新討論串1/1
宣告以下陣列 int array[3][2][2] = { 1,2,3,4,5,6,7,8,9,10,11,12 } 試問 array[2][1][0]的值為何? Ans: (2-1)*4 + (1-0)*2 + (0-0)+1 =11 小弟想請問 4 2 1 這怎麼來的 這我完全看不懂 還有最後面為什麼要加 1 ?? 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.237.0.161

05/19 23:45, , 1F
為什麼*4 x應該只有0.1.2 這樣只有3個數字耶
05/19 23:45, 1F
拍謝 題目打錯 不過小弟還是看不懂 謝謝 ※ 編輯: aimax0710 來自: 36.237.0.161 (05/20 00:04)

05/20 00:21, , 2F
你ans應該打錯,是(2-0)*4才對吧 然後你問的問題我建議你
05/20 00:21, 2F

05/20 00:21, , 3F
看一下陣列是怎麼儲存的應該就知道答案了
05/20 00:21, 3F

05/24 23:14, , 4F
[ {{1,2},{3,4}} {{5,6},{7,8}} {{9,10},{11,12}} ]
05/24 23:14, 4F

05/27 17:07, , 5F
我還是覺得等式怪怪的,你應該是(2*4)+(1*2)+(0+1)=11
05/27 17:07, 5F

05/27 17:08, , 6F
首先把陣列位址填寫出來 (2* x )+(1* y )+(0+ z )
05/27 17:08, 6F

05/27 17:08, , 7F
xyz是我自己亂套的未知數 你說為什麼421我是這麼解釋的
05/27 17:08, 7F

05/27 17:09, , 8F
第一個 為什麼是4 因為一個陣列是由2*2構成所以一個陣列是4
05/27 17:09, 8F

05/27 17:12, , 9F
然後第二個2呢就是因為一列有幾個欄位,你看初始陣列是說2個
05/27 17:12, 9F

05/27 17:12, , 10F
所以是2然後至於最後一個為什麼是1那是因為程式陣列是從0開始
05/27 17:12, 10F

05/27 17:13, , 11F
所以要加1作為基底,這樣0時才是1,1才是2
05/27 17:13, 11F

05/27 17:14, , 12F
這是我自己推出來的公式沒有看過書,所以可能不太一樣
05/27 17:14, 12F

05/27 17:14, , 13F
邏輯應該是相同的
05/27 17:14, 13F

05/27 21:17, , 14F
畫個圖不就行了,用算的是哪招....
05/27 21:17, 14F

05/29 09:02, , 15F
樓上 考試如果給變數很大你要畫出來嗎?算的才是正解
05/29 09:02, 15F
文章代碼(AID): #1HcEuCVe (Grad-ProbAsk)