陣列 東海大學物理系‧資訊教育 施奇廷.

Slides:



Advertisements
Similar presentations
index 目次 ( 請按一下滑鼠,解答就會出現喔 !) 接續下頁解答 3-1 極限的概念.
Advertisements

夯实教师教育 办好非师范教育 ---- 以外语专业为例 河北师范大学 李正栓. 1. 坚定不移地实施教师教育 A. 关键词:师范院校 师范院校是以培育师资为目的的教育机构,多属于高等教育 层级。 含 “ 师范大学 ” 或 “ 师范学院 ” 。另外,由师专升为本科的院校 多数更名为 “XX 学院 ”
中医内科 陈良金. 目的要求: 熟悉虚劳的证候特征。 了解虚劳的发病与气血阴阳及五脏的关系。 掌握虚劳和肺痨及一般虚证的区别与联系。 掌握虚劳的治疗要点。 熟悉虚劳各个证型的辨证论治。 了解虚劳的预后及调摄护理。
1 語音下單代表號 請輸入分公司代碼 2 位結束請按#字鍵 統一證券您好 ﹗ 請輸入分公司代碼結束請按#字鍵,如不知分公司代碼請按*號。 請輸入您的帳號後 7 位 結束請按#字鍵 請在聽到干擾音時輸入您的密碼結束請按#字鍵 主選單一覽表 委託下單請按 1 ; 取消下單請按 2 成交回報請按.
人權教育融入教學與 法治教育 彭巧綾 蔡永棠 閱讀理解 六頂思考帽 以概念圖整理閱讀理解 指導學生運用關鍵詞,繪製概 念圖,並分享修正。
义务教育课程标准实验教材 四年级下册 语文园地六 词语盘点 习作 口语交际 我的发现 日积月累 展示台.
被 江 泽 民 残 酷 迫 害 致 死 的 法 轮 功 学 员 李竟春,女,1954年3月16日出生,江西省九江市人。于2000年12月18日到北京证实大法,关押在北京市门头沟看守所遭受非人的迫害。在狱中李竟春绝食抗争被管教骗喝一瓶“可疑的豆浆”后一直咳嗽不断,发烧呕吐,吐出白色有强烈异味液体,于2000年1月4日死亡。
目录 如何职位分析调查表 职位分析的目的与意义 职位调查表内容与要点说明 职位分析注意事项 职位分析调查工作计划.
个人简历 制作 天津民族中专 刘冬.
第八编 清代文学 清代文学绪论 第一章 清代诗词文 第二章 《长生殿》与《桃花扇》 第三章 《聊斋志异》 第四章 《儒林外史》
事业单位法人年度报告制度改革 业 务 培 训.
視力不良學(幼)童 篩檢與矯治常見問題 長庚醫院 兒童眼科 楊孟玲 醫師.
性教育教學模組設計 主題:身體自主權 台中市忠明國小 巫偉鈴.
问卷调查法.
整体销售方案 中山市美好物业代理有限公司
二次函数图象特点的应用 结题报告 K-11 班研究性学习小组 李浚滨制作.
第三章 企业主要经济业务核算 学习目的和要求:通过对工业企业的主要经济业务的了解,要求学生掌握、巩固帐户与借贷记帐法的相关知识及其运用,并进一步了解和熟悉会计核算方法。 本章重点与难点问题是:企业在各阶段的业务核算 内容提要:本章首先介绍企业在各不同阶段(企业创立阶段、企业供应阶段、企业生产阶段、企业销售阶段等)的业务内容;然后介绍了各阶段业务核算所需设置的帐户及其帐户的功能与结构;最后举例说明各阶段业务的核算。
校本培训 常州市新北区新桥实验小学 金文英 团体活动助人成长 校本培训 常州市新北区新桥实验小学 金文英
2014年造价员资格考试 建设工程造价管理基础知识 徐建元.
教師權益─ 退撫制度變革修法 吳忠泰 退撫制度變革修法電子檔可在全教總網站下載分享
【 准 备 上 课 啦 】 心 境 —— 快 乐 源 泉 学习 — 悦于心 聚于魂 化于行.
第七章 无形资产.
《幼儿园模拟教学》(第一章 第二章) 呼伦贝尔学院 教育科学学院 学前教育教研室.
公文及公文处理 学校办公室 姚利民.
广州事业单位面试专项练习 主讲:蔡厚佳 微博:腰果公考菜菜爱做梦 2016年04月29日-05月05日.
(某同学作文选段) 这就是我 大家好,我的名字叫XX,我家在XX,但是小学的时候我在XX学校读书,我现在读书在永固中学,我现在说学校变化,但是我回校读书坐单车,还有学校很大,初中学习练几课,老师有很多,学校学生有很多,但是现在很重要学习,但是我家有很多工叫做,没有那么多时间学习。
臺中市頭家國小 生理衛生講座 青春期的奧秘 ‧說到青春期,你會想到? ‧班級表現最好的,有獎徵答有優先權。 葉孟娟老師、黃文玲老師.
校园信息管理系统 河北科技大学网络中心 2000/4/10.
高等学校会计制度的学习体会 (第二次征求意见稿).
房地产开发项目经营情况 (X204-1表).
幼儿园现代管理的思考与实践.
童軍志工服務報告 陽光基金會 愛心捐活動 第2組 報告人:秦惠芬 製作人:江妮錡.
德育导师制基本经验介绍.
面试与面试技术.
函 文种常识 结构写法 注意事项 例文赏析与训练.
学习情境四 旅行社接待业务的管理 【学习目标】 了解旅行社接待业务的性质与特点; 熟悉旅行社门市接待业务与管理;
发生火灾怎么办 后窑镇中心小学 吴琼.
徵收苗栗市福全段147、1588及文心段10、11地號等4筆土地之
太阳能概述   太阳能是由太阳内部热核反应所释放出的光能、热能及辐射能量。它每年辐射到地球上的能量达1813亿吨标准煤,相当于全世界年需要能量总和的5000倍,是地球上最大的能源。 广东工业大学 材料能源学院.
强化。心系.
年金改革的是與非 吳忠泰.
勞保局人員.
第四章:社交礼仪 一、社交礼仪的原则 二、社交礼仪的特点 三、社交礼仪的常识 四、工作面试中的个人礼仪 五、考研复试中的礼仪.
走向对话的地理课堂教学 海盐高级中学 徐海群.
1. 民主社會裡,公民的參與有其重要性,而透過政治參與無法達成下列哪一項目的?
讲 义 大家好!根据局领导的指示,在局会计科和各业务科室的安排下,我给各位简要介绍支付中心的工作职能和集中支付的业务流程。这样使我们之间沟通更融洽,便于我们为预算单位提供更优质的服务。 下面我主要从三方面介绍集中支付业务,一是网上支付系统,二是集中支付业务流程及规定等,
关于学生户口迁移的有关说明 保卫处户籍室.
中国人民公安大学经费管理办法(试行) 第一章总则 第四条:“一支笔” “一支笔”--仅指单位主要负责人。负责对本 单位的经费进行审核审批。
仿写训练 华罗庚实验学校西宁分校 钟卫平.
三、进项转出.
求职信.
102年度「農業旅遊特色商品發展暨行銷活動計畫」研提原則說明
武汉大学总裁46班 舞动青春 有你精彩 化妆舞会活动策划案.
十二章 罪数形态.
任务驱动:请阅读下文思考及完成以下任务 环节一、导入新课,激发兴趣
项目四 出入境计调操作流程.
勞動基準法第二十一條 區別工資內涵之實益及法律效果: 基本工資之意義 工資定義.
名师垂教 阳痿1年余.
(和上个月比较,上个月用电量是单位“1”)
用百分数解决问题(二).
2005年度人事劳动教育统计 年报培训 水利部人才资源开发中心 二○○五年十二月.
“点”击中考 -----破题方法 平昌中学 谢向前.
标点符号的作用 某人外出做生意,给父母写了这样一封信:“儿的生活好痛苦一点儿也没有粮食多病少挣了很多钱。”父母读了这封没有标点的信后,一个笑一个哭。请根据这两位父母的不同理解,加标点。 笑:儿的生活好痛苦一点儿也没有粮食多病少挣了很多钱 哭:儿的生活好痛苦一点儿也没有粮食多病少挣了很多钱.
檔案銷毀、移轉及移交.
第四章 存货 第一节 存货的确认与初始计量 一、概念与确认条件 (一)概念 P95 (二)种类 P95 原材料; 在产品; 自制半成品;
第 7 章 陣列 (Array).
微信商城系统操作说明 色卡会智能门店.
第二章 基本数据类型 ——数据的表示.
大綱 一.受試者之禮券/禮品所得稅規範 二.範例介紹 三.自主管理 四.財務室提醒.
厉害了,我的国! 15会计2班团支部 2018年4月20日.
Presentation transcript:

陣列 東海大學物理系‧資訊教育 施奇廷

使用陣列的時機: 在科學運算中,我們經常要處理大量性質相同的資料,如果逐一宣告處理會,程式的編寫與維護都很麻煩。利用陣列變數處理這些資料,將會方便許多。 程式中有大量性質相同的資料,若逐一命名、宣告資料型態十分不便。 這些資料值在程式中被使用不止一次 經常需要使用多個這些資料

程式中要用到 10 個學號, 就要宣告 10 個變數來儲存: C 語言提供了一種特殊的資料結構:陣列 (Array)。宣告一個陣列, 可以取代宣告多個變數, 讓程式更容易撰寫和閱讀。像上述 10 個學號的例子, 改用陣列的語法來撰寫會方便許多, 如下:

陣列的意義 陣列可說是一組同型別與同性質變數的集合, 一個陣列等於一串連續的變數 當我們宣告一個陣列時, 就等於宣告了多個變數 我們可以根據所需變數的多寡, 自由的設定陣列的大小 陣列也可以如變數一樣, 當成引數在函式間的傳遞, 是一種非常方便的資料儲存空間。

一維陣列的宣告 格式: 範例: 宣告方式與一般變數類似,只是要宣告這個陣列中有幾個元素

陣列的 Index 在上面的例子中,ID[n] 表示 ID 這個陣列有十個元素,其編號分別是 ID[0], ID[1], ID[2]……ID[n-1] 陣列內的每個元素可視為同一型別的 n 個變數,不同資料型別的變數無法塞進同一個陣列內

範例

陣列初值給定 int x[10]; → 沒有給定初值 int x[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; → 表示 x[0]=1, x[1]=2……x[9]=10 int x[10] = {0}; → 表示 x[0] = x[1] = x[2] = …… = x[10]=0 int x[10] = {0,1,2,3,4,5,6,7,8,9,10}; → 會出現錯誤,因為 x 只有十個元素,但是初值集合 { } 內有十一個數

矩陣大小宣告較好的方式 把矩陣大小用「define」指令定義,程式本體內全部此取代,若要改變其值時,只要在 define 指令中修改即可

練習 將上一章(函式)的範例(輸入八個整數後找出其最大值)改寫,用陣列來儲存輸入的變數。找最大值的方法有二: 用原來的方法:自訂函數compare兩兩比出較大者 將biggest這個變數初值設為很小,保證不會比輸入數字中最大者還大。然後用一迴圈,將所有陣列中的元素(即輸入之值)跟biggest相比,只碰到比biggest大的元素,就將biggest的值更新為該元素的值

範例:陣列元素排序 所謂排序, 就是將一個隨意排列的數列, 經過一連串『比較大小』和『調換次序』的處理後, 使數列中的每個數字都依由小到大的升冪或者由大到小的降冪方式排列。 一維陣列元素排序法, 稱為汽泡排序法 (Bubble Sort)。在迴圈配合條件式執行過程, 較大的數值位置會漸漸的往前面移動, 感覺就好像一個氣泡由水底浮到水面, 因為壓力減小, 氣泡的體積會慢慢變大, 這就是其名稱的由來。

陣列內所有數值的排序 以下程式是由一個包含 5 個元素的字元陣列, 利用氣泡排序法, 將 5 個字母由大到小排列, 程式如下:

將陣列中的資料降冪排序 從螢幕輸出

將陣列中的資料降冪排序 從螢幕輸出

將陣列中的資料降冪排序 從螢幕輸出

執行結果

程式執行說明 氣泡排序法會先取第 1 個陣列元素, 與所有陣列元素比較後, 如果第 1 個陣列元素比第 2 個小, 則交換位置, 反之則不換。 i=0 時, 字元大小的比較, 就是在比較其 ASCII 碼, s、c、i、o、n 的 ASCII 碼分別為 115、99、105、111、110:

程式執行說明

程式執行說明 接著 i=1 時, 取第 2 個陣列元素與其後的所有元素比較:

程式執行說明 以此類推, 排序直到完成為止:

練習:資料的平均值以及標準差 若有一組資料 {x1, x2, ……, xN},其平均值 標準差為: 試寫作一程式,由鍵盤讀入 5 個數字,計算其平均值與標準差

練習:記票 寫作一程式,要求輸入 0~9 的數字,計算每個數字出現的次數以及出現率,若輸入 0~9 以外的數字或字元則結束程式,並輸出統計結果,以及計算各數字出現的比率

二維陣列 二維陣列的宣告語法如下: 例如: 注意:與一維陣列相同,index 是由 0 開始計算,以上例而言,為 a[0~4][0~5] 資料型別 陣列名稱[列數][行數] 例如: int a[5][6]; ← 宣告一陣列 a,一共有五列、六行,共三十個元素,皆為整數 注意:與一維陣列相同,index 是由 0 開始計算,以上例而言,為 a[0~4][0~5]

二維陣列 宣告完成後, 會產生一個如下圖的空間:

二維陣列之初值宣告方式 宣告含有初始值的二維陣列時, 我們需以先行後列的順序, 填入初始值。 假設有一個二維陣列的初始值如下: int a[3][2] = {1,2,3,4,5,6}; 表示 a[0][0]=1, a[0][1]=2, a[1][0]=3, a[1][1]=4, a[2][0]=5, a[2][1]=6 宣告亦可寫為: int a[3][2]={{1,2},{3,4},{5,6}};

以初始值個數決定二維陣列容量 宣告二維陣列時也可用空的中括號, 讓初始值決定其容量。但是, 只有列數可使用空的中括號。因為, 要先知道每一列的長度, 編譯器才知何時該將資料填到下一列:

以初始值個數決定二維陣列容量 如果我們未註明行數, 只註明列數, 則會產生以下的情形: 當然, 列數與行數都未註明, 一定也是錯誤的。

陣列在函式間的傳遞 陣列也可當成引數可以在函式間傳遞。但由於陣列變數和一般變數不同, 所以要用陣列當引數的函式, 其原型宣告、函式定義的方法, 都與傳遞一般數值的引數略有不同。 一維陣列的傳遞 只傳遞一個陣列元素 傳遞整個陣列到函式中 傳遞二維陣列

一維陣列的傳遞 利用原型宣告與函式定義中, 不同的引數宣告方式。我們可以選擇一次只傳一個陣列元素, 或者一次將整個陣列傳遞到函式中。 只傳遞一個陣列元素 傳遞整個陣列到函式中

只傳遞一個陣列元素 只傳遞一個陣列元素與傳遞單一數值的方法相同。唯一不同的是, 在呼叫函式時, 我們必須註明想要傳遞的是哪一個陣列元素。比如說, 有一陣列儲存了一個學生 5 次數學模擬考的成績, 如下:

只傳遞一個陣列元素 要將其中一次的成績傳遞給函式, 只需指明要傳遞的元素編號, 用它來呼叫函式即可: 在上例中,x 的值即為√2。 double a[2]={1.0,2.0}; double x=sqrt(a[2]);

傳遞整個陣列到函式中 將整個陣列傳遞到函式中, 函式宣告、呼叫、定義的語法如下:

傳遞整個陣列到函式中 在原型宣告與定義函式處, 只需加上一個中括號 ( [ ] ) 即可: 其餘均與變數在函式間的傳遞相同, 我們將整個陣列的資料傳到函式判斷出最大值後, 再傳回 main ( ) 中輸出, 程式如下:

求一數列的最大值

求一數列的最大值

執行結果 注意以上的傳值方式為 call by address,亦即是主函式將陣列的記憶體位址傳到被呼叫的函式中,因此若在函式中修改了陣列中的值,主函式內的陣列值也會因此而改變

傳遞二維陣列 要傳遞二維陣列時, 函式原型宣告處的引數要加上兩個中括號。像傳遞一維陣列一樣, 讓第 1 個中括號為空白, 但是之後的陣列容量一定要填上, 否則會出現 "Size of the type 'int [ ]' is unknown or zero" 的編譯錯誤, 表示無法判斷陣列的大小。 #define SIZE 10 函式型別 函式名(陣列型別[][SIZE]); int main(void) {……} 函式型別 函式名(陣列型別 陣列名稱[][SIZE])

作業 寫作一程式,可以做矩陣相乘之計算