[課業] 105高考-程式設計考古題

看板Examination作者 (閒來無事)時間4年前 (2020/04/09 18:26), 編輯推噓1(103)
留言4則, 2人參與, 4年前最新討論串1/1
請問下列C語言程式碼執行後輸出結果為何? int main(void) { double d[10][20][30][40]; printf("%d\n", (int)(d-&d[3])); printf("%d\n", (int)(d[3][4]-d[5][8])); } 用C run過 答案分別是 -3 -1320 --------------- 我的理解是在考"位址" 所以假設 初始位址Lo=d[0][0][0][0]是0 元素大小d是8 (因為是double型態) 1. d-&d[3] 首先,d[3]的偏移是3*20*30*40=72000 則位址是 Lo+72000*d=0+72000*8=576000 所以,d-&d[3] = &d[0]-&d[3] = 0-576000 = -576000 2. d[3][4]-d[5][8] d[3][4]的偏移是 3*20*30*40 + 4*30*40 = 72000+4800 = 76800 則位址是 Lo+76800*d = 0+76800*8 = 614400 d[5][8]的偏移是 5*20*30*40 + 8*30*40 = 120000+9600 = 129600 則位址是 Lo+129600*d = 0+129600*8 = 1036800 所以,d[3][4]-d[5][8] = 614400-1036800 = -422400 ------------- 我有看過高上的解答,但還是看不懂上面的說明, 所以想請教各位大大,我的想法哪邊有錯誤? 這一題要如何解呢?(希望可以有詳細一點的過程^^) 感謝!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.141.181.14 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Examination/M.1586427984.A.6CE.html

04/09 18:39, 4年前 , 1F
有把答案貼給你了,還有文中pi 題目是錯的
04/09 18:39, 1F

04/09 18:40, 4年前 , 2F
內文po 的題目是錯的,所以也不會有正確的答案
04/09 18:40, 2F

04/09 21:36, 4年前 , 3F
是指高考的題目是錯的嗎?答案在?
04/09 21:36, 3F

04/09 22:06, 4年前 , 4F
我弄錯了,請原諒我,文中答案正解
04/09 22:06, 4F
文章代碼(AID): #1UZlXGRE (Examination)