Microsoft Word - Chap06.doc



Similar documents
6-1-1極限的概念

<4D F736F F D20B3E6A4B830312D2D2DBCC6BD75BB50BEE3BCC6AABAA55BB4EEB942BAE22E646F6378>

章節

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

Microsoft Word - 第四章.doc

Microsoft Word doc

第 6. 節 不 定 積 分 的 基 本 公 式 我 們 可 以 把 已 經 知 道 反 導 函 數 之 所 有 函 數 都 視 為 不 定 積 分 的 基 本 公 式 基 本 公 式 涵 蓋 的 範 圍 愈 大, 我 們 求 解 積 分 就 愈 容 易, 但 有 記 憶 不 易 的 情 事 研 讀

所 3 學 分 課 程, 及 兩 門 跨 領 域 課 程 共 6 學 分 以 上 課 程 學 生 在 修 課 前, 必 須 填 寫 課 程 修 課 認 定 表, 經 班 主 任 或 指 導 教 授 簽 名 後 始 認 定 此 課 程 學 分 ) 10. 本 規 章 未 盡 事 宜, 悉 依 學 位

Microsoft PowerPoint - 資料庫正規化(ccchen).ppt

奇 妙 的 24 摘 要 從 撲 克 牌 中 隨 機 抽 取 4 張 牌 可 以 有 1820 種 牌 組, 在 這 1820 種 牌 組 中, 有 1362 組 可 經 由 四 則 運 算 的 方 式, 算 出 24 點, 有 458 組 無 解 快 速 求 解 的 方 法 有 相 加 法 因 數

肆 研 究 方 法 進 行 本 研 究 前, 我 們 首 先 對 研 究 中 所 用 到 名 詞 作 定 義 定 義 : 牌 數 : 玩 牌 時 所 使 用 到 撲 克 牌 數 次 數 : 進 行 猜 心 術 遊 戲 時, 重 複 分 牌 次 數 數 : 進 行 猜 心 術 遊 戲 時, 每 次 分

NCKU elearning Manual

研究一:n人以『剪刀、石頭、布』猜拳法猜拳一次,決定一人勝

Microsoft Word - 全華Ch2-05.doc


證 券 簡 易 下 單 :2121 證 券 簡 易 下 單 1. 主 工 具 列 的 視 窗 搜 尋 器 直 接 輸 入 點 擊 主 選 單 證 券 專 區 下 單 特 殊 下 單 2121 證 券 簡 易 下 單 畫 面 說 明 1. 下 單 區 2. 個 股 行 情 資 訊 與

內 政 統 計 通 報

<4D F736F F D20B2C433B3B92020B971B8F4A4C0AA52A7DEA5A9>

CONTENTS 訓 練 內 容 設 計 法 056 淡 季 期 的 訓 練 058 旺 季 期 的 訓 練 060 針 對 爬 坡 賽 的 訓 練 內 容 062 賽 後 的 資 料 分 析 PART4/ 鏑 木 毅 先 生 的 建 言 活 用 於 越 野 路 跑 的 心 跳 訓

投影片 1

目 錄 項 目 內 容 頁 數 1 手 機 要 求 3 2 登 記 程 序 3 3 登 入 程 序 4 4 輸 入 買 賣 指 示 6 5 更 改 指 示 14 6 取 消 指 示 18 7 查 詢 股 票 結 存 21 8 查 詢 買 賣 指 示 23 9 更 改 密 碼 查 詢 股

C CH4.tpf

五 四 五 說 ( 代 序 ) 李 澤 厚 劉 再 復 I I II IV V VII 第 一 篇 五 四 新 文 化 運 動 批 評 提 綱 附 論 一 中 國 貴 族 精 神 的 命 運 ( 提 綱 )

寫 作 背 景 導 讀 [98] L Lyman Frank Baum

e-Submission System Quick Reference Guide for Publication Related Matters (Chinese version)

國中數學基本學習內容補救教材 第二冊

本 題 各 點 彼 此 均 有 相 互 關 聯, 作 答 不 完 整, 將 影 響 各 評 分 點 之 得 分, 請 注 意 檔 名 儲 存 錯 誤, 該 題 一 律 0 分 計 算 深 淺 圖 表.xlsx 請 依 下 方 題 目 敘 述 操 作 ( 佔 總 分 :) 儲 存 格 範

128 提 示 樞 紐 分 析 表 的 用 途 樞 紐 分 析 表 是 指 可 以 用 來 快 速 合 併 和 比 較 大 量 資 料 的 互 動 式 表 格, 透 過 它 可 以 詳 細 分 析 數 值 資 料, 特 別 適 用 於 下 列 情 況 : 需 要 從 含 有 大 量 資 料 的 清

(Microsoft Word \245\277\244\361\273P\244\317\244\361.doc)

(Microsoft Word - MOODLE990201\266i\266\245\244\342\245U )

目 錄 壹 題 目 1: 新 增 商 品 ( 商 品 名 稱 為 玉 井 芒 果 乾 禮 盒 )... 3 貳 題 目 2: 新 增 商 品 ( 商 品 名 稱 為 紅 磚 布 丁 精 選 禮 盒 )... 5 參 題 目 3: 新 增 商 品 ( 商 品 名 稱 為 晶 鑽 XO 醬 禮 盒 ).

Microsoft Word - Draft circular on Sub Leg Apr (chi)_Traditional

16

55202-er-ch03.doc

PowerPoint 簡報

第一章 緒論

二 兒 歌 選 用 情 形 ( ) 2 ( ) ( )


目 錄 頁 1. 歡 迎 使 用 網 上 預 約 面 談 訪 問 系 統 新 用 戶 新 用 戶 登 入 帳 戶 程 序 啟 動 網 上 預 約 面 談 訪 問 帳 戶 核 對 帳 戶 的 地 址 資 料

支 持 機 構 : 社 會 文 化 司 主 辦 機 構 : 澳 門 學 聯 澳 門 青 年 研 究 協 會 電 話 : 傳 真 : 網 址 : 報 告 主 筆 : 李 略 博 士 數 據 錄

九 -2 國 中 數 學 基 本 學 習 內 容 補 救 教 材 第 六 冊 主 題 二 機 率 的 計 算 二 機 率 怎 麼 算? 想 一 想 : (1) 投 擲 一 枚 公 正 硬 幣 一 次, 會 出 現 哪 幾 種 情 形? 這 些 情 形 各 自 發 生 的 機 率 是 多 少? 會 不

實德證券網上交易系統示範

1

包 裝 維 生 素 礦 物 質 類 之 錠 狀 膠 囊 狀 食 品 營 養 標 示 應 遵 行 事 項 一 本 規 定 依 食 品 安 全 衛 生 管 理 法 第 二 十 二 條 第 三 項 規 定 訂 定 之 二 本 規 定 所 稱 維 生 素 礦 物 質 類 之 錠 狀 膠 囊 狀 食 品, 指

《數學奠基活動模組示例》

目 錄 一 系 統 登 入... 2 ( 一 ) 系 統 登 入 畫 面... 2 ( 二 ) 首 次 登 入 請 先 註 冊... 3 ( 三 ) 忘 記 單 位 帳 號... 8 ( 四 ) 忘 記 密 碼 ( 五 ) 健 保 卡 更 換 ( 六 ) 重 寄 確 認 信.

四 修 正 幼 兒 園 師 資 類 科 應 修 學 分 數 為 四 十 八 學 分, 並 明 定 學 分 數 抵 免 之 相 關 規 定 及 規 範 修 習 幼 兒 園 教 育 專 業 課 程 之 最 低 年 限 ( 修 正 條 文 第 五 條 ) 五 發 給 修 畢 師 資 職 前 教 育 證 明

<4D F736F F D20AB6EAAF9B0EAA470BCC6BEC7ACEC2E646F63>

BSP 烤箱 - 封面-2

Microsoft PowerPoint - chap5

會 員 專 區 使 用 手 冊 目 錄 一 基 本 介 紹 會 員 專 區 登 入 位 置 主 畫 面 與 網 站 架 構 : 功 能 導 覽 列 說 明 :... 3 二 DOI 查 詢 與 維 護... 4 三 DOI 註 冊 期 刊 類 型...

瑞興銀行

HSBC Holdings plc Interim Report Chinese

sle cover 1


授 課 老 師 章 節 第 一 章 教 學 教 具 間 3 分 鐘 粉 筆 CNC 銑 床 教 學 內 容 CNC 銑 床 之 基 本 操 作 教 材 來 源 數 值 控 制 機 械 實 習 Ⅰ 1. 了 解 CNC 銑 床 的 發 展 2. 了 解 CNC 銑 床 刀 具 的 選 用 3. 了 解

(DP_MFP_Training

Microsoft Word - ch07

中華民國 第51屆中小學科學展覽會

時間問題

(Microsoft Word - \244\361\301\311\263W\253h\244\316\255p\244\300\257\ \(1\))

大學甄選入學委員會

101年度社會福利方案 網路線上操作手冊

中華民國 第51屆中小學科學展覽會

life930106

教育實習問與答:

1

PROSPECT EXPLORATION 壹 前 言 第 9 卷 第 2 期 中 華 民 國 100 年 2 月

配 對 奇 跡 / 機 -SET 遊 戲 的 探 討 與 變 型 摘 要 以 探 討 SET 遊 戲 紙 牌 配 對 的 所 有 組 合 情 形 為 研 究 起 點, 分 析 歸 納 而 窮 盡 出 15 種 配 對 類 型 針 對 如 何 不 剩 牌 的 目 標, 進 行 猜 想 並 驗 證 在

課 程 簡 介 第 一 章 基 本 電 路 理 論 第 二 章 半 導 體 物 理 與 pn 接 面 二 極 體 元 件 分 析 第 三 章 二 極 體 電 路 分 析

數 學 教 育 第 三 十 四 期 (2/202) 整 數 這 個 名 稱, 避 免 混 淆 例 如 : 我 們 可 以 說, 對 於 一 切 的 完 整 數, 以 下 的 等 式 成 立 : + r + r r = r r, 其 中 r 不 講 不 知, 生 活 在 現 代 社 會 的

作 品 名 稱 : 永 遠 都 是 一 條 龍 摘 要 本 文 的 研 究 是 根 據 特 定 規 則 下, 如 何 將 撲 克 牌 翻 出 一 條 龍? 的 問 題, 進 行 不 同 方 法 的 研 究, 以 不 同 解 題 方 式 觀 察 問 題 解 決 問 題 壹 研 究 動 機 每 隔 一

Microsoft Word - 小論文-變性狗問卷調查.doc

268 別 行 政 區 所 以, 全 國 人 民 代 表 大 會 根 據 憲 法 第 31 條 規 定 設 立 了 特 別 行 政 區 沒 有 憲 法 第 31 條 的 規 定, 就 沒 有 特 別 行 政 區 制 度 存 在 的 合 法 性 基 礎 62 正 如 上 述, 憲 法 為 特 別 行

2016年中國語文科試卷三聆聽及綜合能力考核樣本試卷示例及說明

前 項 第 三 款 所 定 有 機 農 產 品 及 有 機 農 產 加 工 品 驗 證 基 準, 如 附 件 一 第 七 條 驗 證 機 構 受 理 有 機 農 產 品 及 有 機 農 產 加 工 品 之 驗 證, 應 辦 理 書 面 審 查 實 地 查 驗 產 品 檢 驗 及 驗 證 決 定 之

Microsoft Word - SIM

目 錄

國中數學基本學習內容補救教材 第四冊

題組一 文書排版

(Microsoft Word -

(Microsoft Word - \246\250\301Z\272\336\262z.doc)

骨 折 別 日 數 表 1. 鼻 骨 眶 骨 ( 含 顴 骨 ) 14 天 11. 骨 盤 ( 包 括 腸 骨 恥 骨 坐 骨 薦 骨 ) 40 天 2. 掌 骨 指 骨 14 天 12. 臂 骨 40 天 3. 蹠 骨 趾 骨 14 天 13. 橈 骨 與 尺 骨 40 天 4. 下 顎 ( 齒

題 目 : 箭 在 弦 上 -- 弓 箭 祕 密 再 探 究 摘 要 在 上 的 研 究 之 中, 我 們 列 舉 出 仍 未 探 討 的 題 目 及 問 題, 利 用 這 的 研 究 課 程 加 以 驗 證 在 實 驗 結 果 中 發 現, 加 入 箭 頭 有 助 於 落 點 的 集 中, 而 加

認可人士、註冊結構工程師及註冊岩土工程師作業備考 ADM-6

1

如何正確使用自己所擁有的正版音樂光碟?


Microsoft Word - BM900HD-2F電腦設定.doc

Microsoft Word - 立法會十四題附件.doc

龍騰100-B5-習作-CH3.doc

二零零六至零七年施政報告

1 小 學 中 年 級 卷 參 解 答 9 圖 形 (A) 有 一 條 對 稱 軸 其 餘 的 圖 形 都 沒 有 對 稱 軸, 這 是 因 為 對 於 每 一 個 圖 形, 其 反 射 過 後 的 圖 形 為 都 無 法 與 原 圖 形 重 合 答 : (A) 6 小 貝 在 計 算 器 上 鍵

0. 解 題 期 間 內, 考 生 可 以 由 系 統 進 行 多 次 傳 送 但 出 於 系 統 穩 定 性 與 負 載 考 量, 得 另 行 限 制 最 大 傳 送 次 數 與 最 小 傳 送 間 隔. 請 勿 使 用 系 統 相 關 指 令, 如 C 語 言 中 system( PAUSE )

進 入 系 統 1. 請 於 首 頁 右 側 使 用 者 登 入 輸 入 帳 號 密 碼 驗 證 碼 後, 點 選 登 入 進 入 系 統 2. 直 接 點 選 右 側 的 進 入 系 統, 直 接 進 入 題 目 檢 索 頁 面 直 接 進 入 系 統 後, 您 仍 可 瀏 覽 選 擇 您 所 需

Layout 1

關 於 教 育 部 學 習 拍 立 得 教 育 部 於 (103) 年 度 整 合 各 縣 市 政 府 部 屬 機 構 大 學 及 民 間 的 數 位 資 源 與 服 務, 依 不 同 類 型, 分 別 匯 集 於 教 育 大 市 集 教 育 百 科 教 育 媒 體 影 音 教 育 部 學 習 拍

長跨距暨挑高建築特殊結構系統之調查分析

Microsoft Word - LongCard_Promo_2013_FAQ_tc_pdf.doc

Microsoft Word - ch01.doc

Transcription:

6-3 二 維 陣 列 二 維 陣 列 (two dimension array) 表 示 法 與 一 維 陣 列 類 似, 是 由 兩 個 中 括 號 所 組 成 的, 如 下 一 敘 述 : int j[2][3]; 表 示 j 是 陣 列 名 稱, 且 是 由 2 列 (rows) 與 3 行 (columns) 所 組 成 的 二 維 陣 列 二 維 陣 列 可 視 為 是 一 平 面 的 圖 形, 其 示 意 圖 如 下 所 示 : 行 列 j[0][0] j[0][1] j[0][2] j[1][0] j[1][1] j[1][2] 當 然, 也 可 以 設 定 初 值, 如 : int j[2][3] = 0, 1, 2, 3, 4, 5; 與 上 圖 陣 列 元 素 對 應 如 下 : 0 1 2 3 4 5 在 二 維 陣 列 的 初 值 設 定 上, 除 了 上 述 的 表 示 法 之 外, 也 可 以 使 用 大 括 號 來 限 制 每 一 列 的 初 值, 如 下 所 示 : int j[2][3] = 0, 1, 2, 3, 4, 5 ; 6-12

第 6 章 陣 列 因 此, 若 有 一 敘 述 如 下 : int j[2][3] = 0, 1, 2, 3, 4; 其 示 意 圖 表 示 如 下 : 0 1 2 3 4? 表 示 j[1][2] 未 設 定 其 初 值, 但 下 一 敘 述 int j[2][3] = 0, 1, 3, 4, 5 ; 表 示 j[0][2] 未 設 定 其 初 值, 其 示 意 圖 如 下 所 示 : 0 1? 3 4 5 以 此 類 推 若 有 一 敘 述 如 下 : int j[2][3] = 0, 1, 3, 4 ; 則 表 示 j[0][2] 和 j[1][2] 皆 未 設 定 其 初 值 0 1? 3 4? 二 維 陣 列 若 有 設 定 初 值 時, 則 可 省 略 列 的 註 標, 但 行 的 註 標 不 可 省 略, 因 為 它 須 依 據 每 一 列 有 多 少 行, 以 便 用 來 計 算 列 的 個 數 因 此, 下 一 敘 述 是 正 確 的 int j[ ][3] = 0, 1, 2, 3, 4, 5; 6-13

而 下 一 個 敘 述 int j[ ][ ] = 0, 1, 2, 3, 4, 5; 則 是 錯 誤 的, 因 為 沒 有 設 定 行 的 註 標 在 二 維 陣 列 中, 若 有 設 定 初 始 值, 其 中 列 的 註 標 可 省 略, 但 行 的 註 標 不 可 省 略 利 用 巢 狀 的 for 迴 圈 處 理 二 維 陣 列 是 最 方 便 的, 以 外 迴 圈 的 for 控 制 二 維 陣 列 中 列 的 註 標, 而 以 內 迴 圈 的 for 控 制 行 的 註 標, 即 可 存 取 二 維 陣 列 中 所 有 元 素 我 們 來 看 幾 個 範 例, 並 加 以 說 明 之 先 從 範 例 6-3a 看 起 範 例 6-3a /* ex6-3a.c */ int num[2][3] = 0, 1, 2, 3, 4, 5; int i, j; for(i = 0; i < 2; i++) for(j = 0; j < 3; j++) printf("num[%d][%d] = %d\n", i, j, num[i][j]); system("pause"); 6-14

第 6 章 陣 列 輸 出 結 果 num[0][0] = 0 num[0][1] = 1 num[0][2] = 2 num[1][0] = 3 num[1][1] = 4 num[1][2] = 5 範 例 6-3a 定 義 一 個 二 維 陣 列, 並 設 定 其 初 值, 之 後 利 用 巢 狀 的 for 迴 圈, 將 陣 列 每 個 元 素 的 值 印 出 也 可 以 使 用 另 一 種 方 式 定 義 之, 如 範 例 6-3b 所 示 : 範 例 6-3b /* ex6-3b.c */ int num[2][3] = 10, 11, 13, 14; int i, j; for(i = 0; i < 2; i++) for(j = 0; j < 3; j++) printf("num[%d][%d] = %d\n", i, j, num[i][j]); system("pause"); 輸 出 結 果 num[0][0] = 10 num[0][1] = 11 num[0][2] = 0 num[1][0] = 13 num[1][1] = 14 num[1][2] = 0 6-15

範 例 6-3b 使 用 另 一 種 方 式 設 定 二 維 陣 列 初 值, 從 輸 出 結 果 可 以 發 現, 若 陣 列 中 有 設 定 初 值, 但 某 些 元 素 沒 有 被 設 定, 則 其 初 值 將 被 設 為 0, 如 程 式 中 的 num[0][2] 及 num[1][2] 若 沒 有 初 始 陣 列 的 話, 陣 列 的 元 素 值 將 是 垃 圾 值 請 參 閱 範 例 6-3c 範 例 6-3c /* ex6-3c.c */ int num[2][3]; int i, j; for(i = 0; i < 2; i++) for(j = 0; j < 3; j++) printf("num[%d][%d] = %d\n", i, j, num[i][j]); system("pause"); 輸 出 結 果 num[0][0] = 2009118740 num[0][1] = 4007040 num[0][2] = 4006960 num[1][0] = 8 num[1][1] = 2009116333 num[1][2] = 62716964 此 範 例 所 得 到 的 輸 出 結 果, 您 是 否 嚇 了 一 大 跳, 因 為 這 些 全 是 記 憶 體 中 的 殘 餘 值 這 也 給 我 們 一 個 警 示, 要 將 陣 列 的 元 素 初 始 化 二 維 陣 列 的 記 憶 體 位 址 計 算, 與 一 維 陣 列 類 似, 假 設 有 一 陣 列 為 int j[2][3]; 6-16

第 6 章 陣 列 假 設 陣 列 初 始 的 位 址 為 1010, 則 &j[0][0] 的 位 址 為 1010 由 於 陣 列 的 資 料 型 態 是 int, 所 以 &j[0][1] 為 1014 &j[0][2] 為 1018 &j[1][0] 為 1022, 依 此 類 推 由 此 可 知, 二 維 陣 列 的 記 憶 體 空 間 分 配, 是 將 一 列 中 的 各 行 皆 分 配 位 址 完 畢, 再 分 配 下 一 列 二 維 陣 列 每 一 元 素 所 在 的 記 憶 體 位 址 之 計 算 公 式 如 下 : 陣 列 初 始 位 址 + ( 此 元 素 的 列 註 標 )*( 陣 列 行 數 )*( 資 料 型 態 所 佔 的 bytes 數 )+ ( 此 元 素 的 行 註 標 )*( 資 料 型 態 所 佔 的 bytes 數 ) 以 計 算 j[1][2] 元 素 的 位 址 為 例, 陣 列 初 始 位 址 為 1010 此 元 素 的 列 註 標 為 1 此 元 素 的 行 註 標 為 2 陣 列 行 數 為 3 sizeof(int) 為 4, 故 其 所 在 位 址 計 算 如 下 : 1010 + 1 * 3 * 4 + 2 * 4 = 1030 除 了 &j[0][0] 表 示 j[0][0] 元 素 的 記 憶 體 位 址 外, 還 可 以 利 用 j( 此 為 陣 列 名 稱 ) 表 示 j[0][0] 的 元 素 位 址, 而 j+1 是 第 二 列 第 一 個 元 素 的 位 址, 即 &j[1][0] j j[0][0] j[0][1] j[0][2] j + 1 j[1][0] j[1][1] j[1][2] 當 然 二 維 陣 列 的 記 憶 體 和 一 維 陣 列 的 記 憶 體 配 置 一 樣, 是 以 直 線 的 方 式 排 列 的, 二 維 陣 列 將 第 一 列 的 每 一 行 元 素 皆 安 頓 好 之 後, 再 排 第 二 列, 以 此 類 推, 所 以 int j[2][3] = 0, 1, 2, 3, 4, 5; 6-17

其 中 j 是 陣 列 名 稱, 表 示 此 陣 列 第 一 列 第 一 行 元 素 之 位 址, 而 j+1 是 第 二 列 第 一 行 元 素 的 位 址, 如 下 圖 所 示 : j 0 1 2 j+1 3 4 5 除 此 之 外,j[0] 和 j[1] 所 代 表 的 意 思, 如 同 j 和 j+1, 表 示 第 一 列 第 一 行 元 素 和 第 二 列 第 一 行 元 素 的 位 址 如 下 圖 所 示 : j[0] 0 1 2 j[1] 3 4 5 大 家 可 以 想 像, 陣 列 的 第 一 列 都 是 以 j[0] 為 首, 如 :j[0][0],j[0][1],j[0][2], 而 第 二 列 都 是 以 j[1] 為 首, 如 :j[1][0],j[1][1],j[1][2] 雖 然 如 此, 但 其 間 有 一 差 異 在 於,j 和 j[0] 雖 然 表 示 同 一 元 素 的 位 址, 但 兩 者 加 1, 則 有 所 不 同 其 示 意 圖, 如 下 圖 所 示 : j 0 1 2 j+1 3 4 5 j+1 表 示 第 二 列 第 一 行 的 位 址, 而 j[0]+1 則 是 第 一 列 第 二 行 的 位 址, 也 就 是 j 和 j[0] 各 加 1 後, 所 處 理 的 單 位 數 不 一 樣 其 示 意 圖 如 下 所 示 : j[0]+1 j[0] 0 1 2 j[1] 3 4 5 6-18

第 6 章 陣 列 許 多 初 學 者 常 將 j+1 誤 認 為 是 j 的 下 一 個 元 素, 為 j[0][1], 這 在 二 維 陣 列 是 錯 誤 的 觀 念, 而 在 一 維 陣 列 中 是 對 的 如 何 得 知 二 維 陣 列 元 素 的 位 址, 請 參 閱 範 例 6-3d 範 例 6-3d /* ex6-3d.c */ int j[2][3] = 100, 200, 300, 400, 500, 600; printf("j[0][0] = %d\n", j[0][0]); printf("&j[0][0] = %x\n\n", &j[0][0]); printf("j = %x\n", j); printf("j[0] = %x\n\n", j[0]); printf("j+1 = %x\n", j+1); printf("&j[1][0] = %x\n\n", &j[1][0]); printf("j[0]+1 = %x\n", j[0]+1); printf("&j[0][1] = %x\n", &j[0][1]); system("pause"); 輸 出 結 果 j[0][0] = 100 &j[0][0] = 22ff50 j = 22ff50 j[0] = 22ff50 j+1 = 22ff5c &j[1][0] = 22ff5c 6-19

j[0]+1 = 22ff54 &j[0][1] = 22ff54 從 輸 出 結 果 得 知,&j[0][0] j 和 j[0] 是 一 樣 的, 皆 表 示 j[0][0] 元 素 的 位 址 j+1 是 第 二 列 第 一 個 元 素 (j[1][0]) 的 位 址 (&j[1][0]), 其 為 22ff5c, 而 j[0]+1 是 第 一 列 第 二 行 元 素 (j[0][1]) 的 位 址 (&j[0][1]), 其 為 22ff54 你 所 得 到 的 輸 出 結 果 也 許 和 我 不 相 同, 因 為 我 們 所 使 用 的 電 腦 不 是 同 一 台 若 要 計 算 二 維 陣 列 每 一 列 的 總 和 及 陣 列 所 有 元 素 的 和, 則 需 藉 助 巢 狀 迴 圈 請 參 閱 範 例 6-3e 範 例 6-3e /* ex6-3e.c */ int x[2][3] = 100, 200, 300, 400, 500, 600; int i, j, totrow[2], total=0; totrow[0]=0; totrow[1]=0; /* 加 總 陣 列 每 一 列 及 陣 列 所 有 元 素 的 總 和 */ for (i=0; i<2; i++) for(j=0; j<3; j++) totrow[i] += x[i][j]; total += x[i][j]; /* 印 出 陣 列 每 一 列 的 總 和 */ for(i=0; i<2; i++) for(j=0; j<3; j++) printf("%5d ", x[i][j]); printf(" %5d\n", totrow[i]); /* 印 出 陣 列 所 有 元 素 的 總 和 */ printf("%23d\n", total); system("pause"); 6-20

第 6 章 陣 列 輸 出 結 果 100 200 300 600 400 500 600 1500 2100 此 程 式 的 重 點 如 下 : /* 加 總 陣 列 每 一 列 及 陣 列 所 有 元 素 的 總 和 */ for (i=0; i<2; i++) for(j=0; j<3; j++) totrow[i] += x[i][j]; total += x[i][j]; 其 中 totrow[i] += x[i][j]; 表 示 將 陣 列 中 的 每 一 列 的 元 素 加 總 起 來 而 total += x[i][j]; 則 表 示 將 陣 列 中 的 所 有 元 素 加 總 1. 試 問 下 列 兩 個 陣 列 所 配 置 的 元 素 個 數 一 樣 嗎? int arr1[2000]; int arr2[20][100]; 2. 試 問 範 例 6-3d,j+2 j[0]+2 及 &j[0][0]+1 各 為 多 少? 6-21

6-4 字 串 陣 列 欲 將 "computer" "printer" "monitor" 三 個 字 串 存 放 到 陣 列 中, 可 利 用 下 列 其 中 一 個 方 法 char str[3][10] = "computer", "printer", "monitor"; - 或 char str[][10] = "computer", "printer", "monitor"; - 方 法 和 皆 是 利 用 字 元 的 二 維 陣 列 構 成 字 串 陣 列, 其 中 char str[][10] 表 示 一 個 字 串 最 多 10 個 字 元 列 的 註 標, 則 因 有 設 定 初 值 字 串 而 省 略, 從 初 始 的 字 串 得 知, 列 的 個 數 是 3 要 如 何 印 出 字 串 呢? 第 一 個 字 串 可 利 用 str[0] 或 str, 以 %s 格 式 輸 出, 第 二 個 字 串 則 使 用 str[1] 或 str+1, 以 %s 格 式 輸 出, 依 此 類 推 請 參 閱 範 例 6-4a 範 例 6-4a /* ex6-4a.c */ char str[][10] = "computer", "printer", "monitor"; printf("str = %s\n", str[0]); printf("str+1 = %s\n", str+1); printf("str+2 = %s\n", str+2); printf("\n"); printf("str[0] = %s\n", str[0]); printf("str[1] = %s\n", str[1]); printf("str[2] = %s\n", str[2]); system("pause"); 6-22

第 6 章 陣 列 輸 出 結 果 str = computer str + 1 = printer str + 2 = monitor str[0] = computer str[1] = printer str[2] = monitor 程 式 以 字 元 的 二 維 陣 列 定 義 字 串 陣 列, 並 利 用 %s 印 出 陣 列 中 的 字 串 其 中 str 陣 列 表 示 如 下 : str[0], str c o m p u t e r \0 \0 str[1], str+1 p r i n t e r \0 \0 \0 str[2], str+2 m o n i t o r \0 \0 \0 1. 試 問 下 列 片 段 程 式 在 做 什 麼? for(i = 0; i <= 15; i++) for(j = 0; j <= 15; j++) z[i][j] = x[i][j] + y[i][j]; 6-5 多 維 陣 列 二 維 以 上 的 陣 列 皆 稱 為 多 維 陣 列 (multi-dimension array) 多 維 陣 列 的 表 示 法 如 同 一 維 二 維 表 示 法, 有 幾 個 [] 即 代 表 它 是 多 少 維, 如 有 三 個 [], 則 表 示 三 維 陣 列, 四 個 [], 則 為 四 維 陣 列, 以 此 類 推, 所 以 下 一 敘 述 int k[2][3][4]; 6-23

是 三 維 陣 列, 可 視 為 它 是 由 二 個 二 維 陣 列 所 組 成 的 一 立 體 圖 形 每 一 個 二 維 陣 列 有 三 列 四 行 因 此, 此 三 維 陣 列 共 有 24 個 元 素 由 於 多 維 的 陣 列 使 用 率 不 高, 因 此, 在 此 不 加 以 贅 述 之 一 般 來 說, 陣 列 最 常 用 的 是 一 維 和 二 維 陣 列, 最 多 用 到 三 維, 表 示 三 度 空 間 三 維 以 上 的 陣 列 就 比 較 少 用 了 1. 有 一 陣 列 如 下 : char arr4[20][8][12][98]; 試 問 arr4 陣 列 共 有 多 少 個 元 素, 如 何 表 示 第 一 個 元 素 和 最 後 一 個 元 素 6-6 摘 要 陣 列 乃 是 由 一 群 相 同 資 料 型 態 的 變 數 所 組 成 的 集 合 陣 列 的 註 標 ( 或 索 引 ) 是 從 0 開 始 算 起, 所 以 陣 列 的 最 後 一 個 元 素 是 註 標 減 1 陣 列 的 名 稱 表 示 此 陣 列 第 一 個 元 素 的 位 址 如 同 變 數 一 般, 只 要 在 每 一 元 素 的 前 面 加 上 &, 就 可 表 示 此 元 素 的 位 址 一 維 陣 列 的 初 始 個 數 不 可 以 大 於 陣 列 所 定 義 的 個 數 若 將 一 維 陣 列 看 成 是 一 線 性 的 圖 形, 則 二 維 陣 列 可 視 為 一 平 面 的 圖 形, 是 由 多 個 一 維 陣 列 所 組 成 的 字 串 可 視 為 是 由 字 元 所 組 成 的 一 維 陣 列, 而 字 串 陣 列 則 可 看 成 是 二 維 陣 列 在 二 維 陣 列 中, 如 int j[2][3] 6-24

第 6 章 陣 列 j 與 j[0] 都 可 以 表 示 為 陣 列 第 一 列 第 一 個 元 素 的 位 址 (&j[0][0]), 但 這 兩 者 各 加 1 是 不 同 的 位 址 j+1 是 第 二 列 第 一 個 元 素 的 位 址 (&j[1][0]), 而 j[0]+1 則 為 陣 列 第 一 列 第 二 行 的 位 址 (&j[0][1]) 三 維 陣 列 可 看 成 是 一 立 體 的 空 間, 它 是 由 三 個 [] 所 組 成 的 四 維 以 上 的 陣 列 就 很 少 用 了 6-7 關 鍵 字 陣 列 (array) 一 維 陣 列 (one dimension array) 字 串 (string) 字 元 (character) 空 字 元 (null character) 二 維 陣 列 (two dimension array) 6-8 問 題 演 練 1. 請 根 據 下 列 的 題 意, 寫 出 其 正 確 的 C 語 言 宣 告 (a) digits 是 一 由 10 個 整 數 型 態 的 元 素 所 組 成 的 陣 列 (b) rates 是 一 由 6 個 double 資 料 型 態 的 元 素 所 組 成 的 陣 列 (c) mat 是 一 個 二 維 陣 列, 其 共 有 3 列 5 行 的 整 數 型 態 的 元 素 2. 有 一 含 有 10 個 元 素 的 一 維 陣 列, 試 問 其 註 標 (subscript) 由 至 3. 試 回 答 下 列 問 題 : (a) 定 義 一 個 一 維 陣 列, 此 陣 列 有 6 個 整 數 型 態 的 元 素, 初 值 分 別 為 1, 2, 4, 8, 16, 32 (b) 如 何 擷 取 此 陣 列 的 第 三 個 元 素 (c) 如 何 擷 取 陣 列 第 三 個 元 素 的 位 址 6-25

6-26 4. 請 寫 出 下 一 程 式 的 輸 出 結 果 int arr[] = 4, 5, 6; int j; for(j = 0; j < 3; j++) printf("%d ", arr[j]); system("pause"); 5. 有 一 陣 列 宣 告 如 下 : int arr[2][3] = 10, 11, 12, 13, 14, 15 ; 試 問 如 何 擷 取 14 6. 有 一 陣 列 如 下 : int k[] = 100, 200, 300, 400, 500; 假 設 &k[0] 等 於 1010, 試 回 答 下 列 問 題 (a) k =? (b) k + 2 =? (c) &k[2] =? (d) k[2] =? (e) k + 2 和 &k[0] + 2 意 義 一 樣 嗎? (f) k[6] =? 7. 有 一 個 二 維 陣 列 如 下 : float k[][3] = 111.1, 222.2, 333.3, 444.4, 555.5, 666.6; 假 設 &k[0][0] = 1010, 試 回 答 下 列 問 題 ( 若 為 位 址, 請 以 十 進 位 方 式 表 示 之 )

第 6 章 陣 列 (a) k + 1 =? (b) &k[0][0] + 1 =? (c) k[0] + 1 =? (d) k[0][0] + 1 =? (e) k 和 k[0] 所 代 表 的 意 義 一 樣, 那 k+1 和 k[0]+1 所 代 表 的 意 義 也 一 樣 嗎? 6-9 大 家 一 起 來 找 碴 1. // arrdebug1.c // int arr[] = 10, 20, 30, 40, 50, 60; int i, total; for (i=1; i<=6; i++) total += arr[i]; printf("total=%d\n", total); system( PAUSE ); 2. // arrdebug2.c // int arr[5] = 210, 120, 30, 40, 50; int i, pos, max; 6-27

for (i=1; i<5; i++) if (arr[i] > max) max = arr[i]; ; printf(" 陣 列 中 第 %d 個 元 素 是 最 大 值 為 %d\n", pos, max); system( PAUSE ); 3. // arrdebug3.c // int arr[5]; int i, pos, max; for (i=0; i<5; i++) printf(" 請 輸 入 arr[%d]: "); scanf("%d", arr[i]); max=arr[0]; for (i=0; i<5; i++) if (arr[i] > max) max = arr[i]; pos = i; ; printf(" 陣 列 中 第 %d 個 元 素 是 最 大 值 為 %d\n", pos+1, max); system( PAUSE ); 4. // arrdebug4.c // 6-28

第 6 章 陣 列 int arr2[3][2]=10, 202, 301, 140, 505, 260; int i, j, row, col, max; max=arr[0][0]; for (i=0; i<3; i++) for (j=0; j<=2; j++) if (arr[i][j] > max) max = arr[i][j]; row = i; printf(" 陣 列 中 第 %d 列 第 %d 行 的 值 是 最 大 為 %d\n", row+1, col+1, max); system( PAUSE ); 5. // arrdebug5.c // int arr2[3][2]; int i, j, row, col, max; for (i=0; i<3; i++) for (j=0; j<2; j++) printf(" 請 輸 入 arr2[%d][%d]: ", i, j); scanf("%d", arr2[i][j]); max=arr2[0][0]; for (i=0; i<3; i++) for (j=0; j<2; j++) if (arr2[i][j] > max) max = arr2[i][j]; 6-29

printf(" 陣 列 中 第 %d 列 第 %d 行 的 值 是 最 大 為 %d\n", row+1, col+1, max); system( PAUSE ); 6-10 程 式 實 作 1. 輸 入 20 個 整 數 存 放 於 一 陣 列, 然 後 輸 出 此 20 個 整 數 中 最 大 者, 並 且 將 此 數 在 陣 列 中 的 位 置 印 出 2. 試 利 用 二 維 陣 列 記 錄 4 個 禮 拜 中 每 天 的 平 均 氣 溫, 並 印 出 哪 幾 天 的 平 均 氣 溫 高 於 30 度 以 上 請 參 考 範 例 6-3b 3. 輸 入 一 整 數, 並 將 它 轉 換 為 二 進 位 的 數 字 後 印 出 4. 修 改 程 式 實 作 第 3 題, 讓 使 用 者 決 定 是 否 要 繼 續 執 行 6-30