




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第七章第七章 數(shù)組數(shù)組第第7 7章章 一維數(shù)組和二維數(shù)組一維數(shù)組和二維數(shù)組一、一維數(shù)組一、一維數(shù)組 1、一維數(shù)組的定義、一維數(shù)組的定義 2、一維數(shù)組元素的引用、一維數(shù)組元素的引用 3、一維數(shù)組的初始化、一維數(shù)組的初始化二、二維數(shù)組二、二維數(shù)組 1、二維數(shù)組的定義和引用、二維數(shù)組的定義和引用 2、二維數(shù)組的初始化、二維數(shù)組的初始化 前幾章使用的變量都屬于基本類型,例前幾章使用的變量都屬于基本類型,例如整型、字符型、浮點型數(shù)據(jù),這些都如整型、字符型、浮點型數(shù)據(jù),這些都是簡單的數(shù)據(jù)類型。是簡單的數(shù)據(jù)類型。 對于有些數(shù)據(jù),只用簡單的數(shù)據(jù)類型是對于有些數(shù)據(jù),只用簡單的數(shù)據(jù)類型是不夠的,難以反映出數(shù)據(jù)的特
2、點,也難不夠的,難以反映出數(shù)據(jù)的特點,也難以有效地進行處理。以有效地進行處理。 如果有如果有1000名學生,每個學生有一個名學生,每個學生有一個成績,需要求這成績,需要求這1000名學生的平均成名學生的平均成績。績。 用用s1,s2,s3,s1000表示每個學生的表示每個學生的成績,能體現(xiàn)內(nèi)在聯(lián)系。成績,能體現(xiàn)內(nèi)在聯(lián)系。 C語言為這些數(shù)據(jù),提供了一種構造語言為這些數(shù)據(jù),提供了一種構造數(shù)據(jù)類型:數(shù)組。所謂數(shù)組就是一組具數(shù)據(jù)類型:數(shù)組。所謂數(shù)組就是一組具有相同數(shù)據(jù)類型的數(shù)據(jù)的有序集合。有相同數(shù)據(jù)類型的數(shù)據(jù)的有序集合。 數(shù)組中的每一個數(shù)稱為數(shù)組元素,數(shù)數(shù)組中的每一個數(shù)稱為數(shù)組元素,數(shù)組中的每一個元素
3、都屬于同一個數(shù)據(jù)類組中的每一個元素都屬于同一個數(shù)據(jù)類型。型。一、一維數(shù)組一、一維數(shù)組一、一維數(shù)組一、一維數(shù)組1、一維數(shù)組的定義、一維數(shù)組的定義定義的格式:定義的格式: 類型說明符類型說明符 數(shù)組名數(shù)組名整常量表達式整常量表達式; 如如: int score80;闡明:闡明:類型說明符:數(shù)組元素的類型。類型說明符:數(shù)組元素的類型。數(shù)組名:即數(shù)組的名稱,其命名方法同變量名。數(shù)組名:即數(shù)組的名稱,其命名方法同變量名。在定義數(shù)組時,需要指定數(shù)組中元素的個數(shù),方括在定義數(shù)組時,需要指定數(shù)組中元素的個數(shù),方括弧中的常量表達式用來表示元素的個數(shù),即數(shù)組長弧中的常量表達式用來表示元素的個數(shù),即數(shù)組長度。度。常
4、量表達式中可以包括常量和符號常量,但不能常量表達式中可以包括常量和符號常量,但不能包含變量。也就是說,包含變量。也就是說,C語言不允許對數(shù)組的大小語言不允許對數(shù)組的大小作動態(tài)定義,即數(shù)組的大小不依賴于程序運行過程作動態(tài)定義,即數(shù)組的大小不依賴于程序運行過程中變量的值。中變量的值。例例:float farr30;或或:#define N 10 int aN;但注意但注意: int n=10; int arrn;數(shù)組說明中其他常見的錯誤:數(shù)組說明中其他常見的錯誤: float a0; /* 數(shù)組大小為數(shù)組大小為0沒有意義沒有意義 */ int b(2)(3); /* 不能使用圓括號不能使用圓括號
5、*/ int k, ak; /* 不能用變量說明數(shù)組大小不能用變量說明數(shù)組大小*/ 引用方式:引用方式: 數(shù)組名數(shù)組名下標下標如如:int a5; a0=1; printf(”%d”,a0); 2、一維數(shù)組元素的引用、一維數(shù)組元素的引用把把a0的變量賦值為的變量賦值為1a數(shù)組中有數(shù)組中有5個元素個元素,分別是分別是:a0,a1,a2,a3,a4顯示顯示a0的值的值留意:留意:下標可以是整型常量或整型表達式下標可以是整型常量或整型表達式 例如例如: int i=0,a5;ai=10; 引用引用a5 是錯誤的是錯誤的一維數(shù)組元素引用的規(guī)定:一維數(shù)組元素引用的規(guī)定:數(shù)組必須先定義后使用。數(shù)組必須先定
6、義后使用。數(shù)組元素只能逐個被引用,不能一次引用整數(shù)組元素只能逐個被引用,不能一次引用整個數(shù)組。個數(shù)組。對數(shù)組中所有元素逐個引用時,通常可使用對數(shù)組中所有元素逐個引用時,通常可使用循環(huán)結(jié)構。循環(huán)結(jié)構。 例例 對對10個數(shù)組元素依次賦值為個數(shù)組元素依次賦值為0,1, 2,3,4,5,6,7,8,9,要求按逆序輸出。,要求按逆序輸出。解題思路:解題思路:定義一個長度為定義一個長度為10的數(shù)組,數(shù)組定義為整型的數(shù)組,數(shù)組定義為整型要賦的值是從要賦的值是從0到到9,可以用循環(huán)來賦值,可以用循環(huán)來賦值用循環(huán)按下標從大到小輸出這用循環(huán)按下標從大到小輸出這10個元素個元素#include int main()
7、 int i,a10; for (i=0; i=0; i-) printf(%d ,ai); printf(n); return 0; 使使a0a9的值為的值為090123456789a0a1a2a3a4a5a6a7a8a9#include int main() int i,a10; for (i=0; i=0; i-) printf(%d ,ai); printf(n); return 0; 先輸出先輸出a9,最,最后輸出后輸出a00123456789a0a1a2a3a4a5a6a7a8a93、一維數(shù)組在內(nèi)存中的存放方式、一維數(shù)組在內(nèi)存中的存放方式 數(shù)組定義以后,編譯系統(tǒng)計算機將在內(nèi)數(shù)組定義
8、以后,編譯系統(tǒng)計算機將在內(nèi)存中開辟一塊連續(xù)的存儲單元用于存放數(shù)組元素,存中開辟一塊連續(xù)的存儲單元用于存放數(shù)組元素,數(shù)組名表示存儲單元的首地址,存儲單元的大小數(shù)組名表示存儲單元的首地址,存儲單元的大小由數(shù)組的類型和數(shù)組的大小決定。由數(shù)組的類型和數(shù)組的大小決定。例如例如 int a5;aa 4 a 3 a 2 a 1 a 0 2字節(jié)字節(jié)2字節(jié)字節(jié)2字節(jié)字節(jié)2字節(jié)字節(jié)2字節(jié)字節(jié)數(shù)組的初始化:定義數(shù)組時對數(shù)組元素賦以初值。數(shù)組的初始化:定義數(shù)組時對數(shù)組元素賦以初值。4、一維數(shù)組的初始化、一維數(shù)組的初始化格式:格式: 類型符類型符 數(shù)組名數(shù)組名表達式表達式初值表初值表;給全部元素賦初值。給全部元素賦初值
9、。 例例 int a8= 0,1,2,3,4,5,6,7 ;給部分元素賦初值。給部分元素賦初值。 例例 int a8= 0,1,2,3,4 ;給全部元素賦初值時可不指定數(shù)組的長度。給全部元素賦初值時可不指定數(shù)組的長度。 例例 int a = 0,1,2,3,4,5,6,7 ;例例7.2 用數(shù)組處理用數(shù)組處理Fabonacci數(shù)列數(shù)列,輸出前輸出前20個數(shù)。個數(shù)。1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, F1 = 1F2 = 1F3 = F2 + F1Fn = Fn - 1 + Fn - 2#incl
10、ude void main()int i;int f20=1,1;for(i=2;i20;i+) fi=fi-1+fi-2;for(i=0;i20;i+)if(i%5=0) printf(“n”);printf(“%12d”,fi); return;if語句用來控語句用來控制換行,每行制換行,每行輸出輸出5個數(shù)據(jù)。個數(shù)據(jù)。 例:有6個數(shù),要求對它們按由小到大的順序排列解題思路:排序的規(guī)律有兩種:一種是“升序”,從小到大;另一種是“降序”,從大到小把題目抽象為:“對6個數(shù)按升序排序”采用起泡法排序985420895420859420854920854290854209大數(shù)沉淀,小數(shù)起泡大數(shù)沉淀,
11、小數(shù)起泡a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 854209584209548209542809542089a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 542089452089425089420589a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 420589240589204589a0a1a2a3a4a5for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; 204589024589a0a1a2a3a4a5for(i=0;
12、iai+1) t=ai;ai=ai+1;ai+1=t; for(i=0;iai+1) for(i=0;iai+1) for(i=0;iai+1) for(i=0;iai+1) for(j=0;j5;j+)程序:程序: void main( ) int a6, i, j, k; printf(請任意輸入請任意輸入6個整數(shù):個整數(shù):n); for ( i=0 ; i5 ; i+) scanf(%d, &ai) ; printf(n) ; for ( i=0; i5; i+) for ( j=0; jaj+1) k=aj;aj=aj+1;aj+1=k; printf(按由小到大的順序輸出按由
13、小到大的順序輸出10個整數(shù)是:個整數(shù)是:n); for (i=0; i5; i+) printf(%d, ,ai); printf(b。n); 二、二維數(shù)組二、二維數(shù)組1、二維數(shù)組的定義和引用、二維數(shù)組的定義和引用二維數(shù)組的定義格式:二維數(shù)組的定義格式:類型說明符類型說明符 數(shù)組名數(shù)組名整常量表達式整常量表達式1整常量表達式整常量表達式2行數(shù)行數(shù)元素個數(shù)元素個數(shù)=行行數(shù)數(shù)*列數(shù)列數(shù)列數(shù)列數(shù)例:例:float a34,b510;二維數(shù)組元素的引用格式:二維數(shù)組元素的引用格式: 數(shù)組名數(shù)組名下標下標1下標下標2下標都是從下標都是從0開始開始例:例:int m23; 共有共有6個元素,分別是:個元素
14、,分別是: m00 m01 m02 m10 m11 m12 m03 m21 m23都是錯誤的引用都是錯誤的引用二維數(shù)組的存儲方式:二維數(shù)組的存儲方式: a00 a02 a10 a12 a20 a22 a01 a03 a11 a13 a21 a23 二維數(shù)組在內(nèi)存中按行存放二維數(shù)組在內(nèi)存中按行存放,例例:int a34;第0行第1行第2行2、二維數(shù)組的初始化、二維數(shù)組的初始化二維數(shù)組初始化通常是按行進行的。二維數(shù)組初始化通常是按行進行的。格式:格式:類型符類型符 數(shù)組名數(shù)組名表達式表達式1表達式表達式2=初值表初值表;給全部元素賦初值。給全部元素賦初值。 例例 int a34=0,1,2,3,4
15、,5,6,7,8,9,10,11; 或?qū)懗苫驅(qū)懗? int a34=0,1,2,3,4,5,6,7,8,9,10,11;給部分元素賦初值。給部分元素賦初值。 例例: int a34=0,1,4,5,6,8,9,10,11; 或?qū)懗苫驅(qū)懗? int b34=0,1,2,3,4,5,6 ;給二維數(shù)組的全部元素賦初值,可以不指定第一給二維數(shù)組的全部元素賦初值,可以不指定第一維的長度,但第二維的長度不能省略。維的長度,但第二維的長度不能省略。 例例: int a 4=0,1,2,3,4,5,6,7,8,9,10,11; 或?qū)懗苫驅(qū)懗? int a 4=0,1,2,3,4,5,6,7,8,9,10,11
16、;0 1 0 04 5 6 08 9 10 110 1 2 34 5 6 00 0 0 0例例7.4 矩陣的轉(zhuǎn)置。矩陣的轉(zhuǎn)置。分析:將矩陣分析:將矩陣Am*n行列互換后,得一新矩陣為行列互換后,得一新矩陣為Bn*m。 它們的元素對應關系為:它們的元素對應關系為: bj, i = ai, j程序:程序:void main( ) int a23=1,2,3,4,5,6, b32, i, j; printf(array a:n); for(i=0;i=1;i+) for(j=0;j=2;j+) printf(%5d,aij); printf(n); for(i=0;i=1;i+) for( j=0;
17、j=2;j+) bji=aij; printf(array b:n); for(i=0;i=2;i+) for(j=0;j=1;j+) printf(%5d,bij); printf(n); 例例7.5有一個有一個34的矩陣,編程求出其中值最大的那的矩陣,編程求出其中值最大的那個元素,以及其所在的行號和列號。個元素,以及其所在的行號和列號。(最大值唯一最大值唯一) 1 2 3 4 9 8 7 10 -10 6 -5 2a1maxi ji ji j2i j34 9i ji ji ji ji j10i ji ji j#include void main( ) int i,j,row,colum,m
18、ax; int a34=1,2,3,4,9,8,7,10,-10,6,-5,2; max=a00; row=colum=0; for(i=0;i=2;i+) for(j=0;jmax) max=aij;row=i;colum=j; printf(max=%d,row=%d,colum=%dn,max,row,colum); for(j=0;j3;j+) cj=a0j; for(i=1;i2;i+) if(aijcj) cj=aij; a數(shù)組數(shù)組b數(shù)組數(shù)組c數(shù)組數(shù)組 void main( ) int a23,b2,c3,i, j; for(i=0;i2;i+) for(j=0;j3;j+) scanf(%d,&ai j)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年03月國家審計署審計干部教育學院公開招聘國內(nèi)高等學校應屆畢業(yè)生2人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 汽車功率轉(zhuǎn)換器項目風險分析和評估報告
- 凝血分析儀器試劑項目風險評估報告
- 湖南工業(yè)大學《文化產(chǎn)業(yè)法》2023-2024學年第二學期期末試卷
- 新疆建設職業(yè)技術學院《國學經(jīng)典選講》2023-2024學年第二學期期末試卷
- 成都銀杏酒店管理學院《英漢語言對比研究》2023-2024學年第一學期期末試卷
- 中國智能駕駛商業(yè)化發(fā)展白皮書
- 游戲產(chǎn)業(yè)VRAR技術發(fā)展與應用考核試卷
- 2025成都購房合同范本
- 2025最終額房產(chǎn)抵押擔保合同
- 高速公路服務區(qū)服務規(guī)范
- 300MW300MWh源網(wǎng)荷儲一體化儲能電站項目可行性研究報告模板-立項備案
- 外研版(三起點)小學英語三年級下冊全冊同步練習(含答案)
- 激光雷達產(chǎn)品商業(yè)計劃書
- 代炒股票分成協(xié)議
- 網(wǎng)課智慧樹知道《老年醫(yī)學概論(浙江大學)》章節(jié)測試答案
- (高清版)JTGT 6420-2024 公路交通應急裝備物資儲備中心技術規(guī)范
- DZ∕T 0227-2010 地質(zhì)巖心鉆探規(guī)程(正式版)
- 2023北京朝陽區(qū)高一下學期期末語文試題及答案
- 湖南省張家界市慈利縣2023-2024學年八年級下學期期中考試數(shù)學試題
- 江蘇省南京市六合區(qū)多校2023-2024學年五年級下學期期中測試語文試題+
評論
0/150
提交評論