版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第七章第七章 數組數組第第7 7章章 一維數組和二維數組一維數組和二維數組一、一維數組一、一維數組 1、一維數組的定義、一維數組的定義 2、一維數組元素的引用、一維數組元素的引用 3、一維數組的初始化、一維數組的初始化二、二維數組二、二維數組 1、二維數組的定義和引用、二維數組的定義和引用 2、二維數組的初始化、二維數組的初始化 前幾章使用的變量都屬于基本類型,例前幾章使用的變量都屬于基本類型,例如整型、字符型、浮點型數據,這些都如整型、字符型、浮點型數據,這些都是簡單的數據類型。是簡單的數據類型。 對于有些數據,只用簡單的數據類型是對于有些數據,只用簡單的數據類型是不夠的,難以反映出數據的特
2、點,也難不夠的,難以反映出數據的特點,也難以有效地進行處理。以有效地進行處理。 如果有如果有1000名學生,每個學生有一個名學生,每個學生有一個成績,需要求這成績,需要求這1000名學生的平均成名學生的平均成績??儭?用用s1,s2,s3,s1000表示每個學生的表示每個學生的成績,能體現內在聯系。成績,能體現內在聯系。 C語言為這些數據,提供了一種構造語言為這些數據,提供了一種構造數據類型:數組。所謂數組就是一組具數據類型:數組。所謂數組就是一組具有相同數據類型的數據的有序集合。有相同數據類型的數據的有序集合。 數組中的每一個數稱為數組元素,數數組中的每一個數稱為數組元素,數組中的每一個元素
3、都屬于同一個數據類組中的每一個元素都屬于同一個數據類型。型。一、一維數組一、一維數組一、一維數組一、一維數組1、一維數組的定義、一維數組的定義定義的格式:定義的格式: 類型說明符類型說明符 數組名數組名整常量表達式整常量表達式; 如如: int score80;闡明:闡明:類型說明符:數組元素的類型。類型說明符:數組元素的類型。數組名:即數組的名稱,其命名方法同變量名。數組名:即數組的名稱,其命名方法同變量名。在定義數組時,需要指定數組中元素的個數,方括在定義數組時,需要指定數組中元素的個數,方括弧中的常量表達式用來表示元素的個數,即數組長弧中的常量表達式用來表示元素的個數,即數組長度。度。常
4、量表達式中可以包括常量和符號常量,但不能常量表達式中可以包括常量和符號常量,但不能包含變量。也就是說,包含變量。也就是說,C語言不允許對數組的大小語言不允許對數組的大小作動態(tài)定義,即數組的大小不依賴于程序運行過程作動態(tài)定義,即數組的大小不依賴于程序運行過程中變量的值。中變量的值。例例:float farr30;或或:#define N 10 int aN;但注意但注意: int n=10; int arrn;數組說明中其他常見的錯誤:數組說明中其他常見的錯誤: float a0; /* 數組大小為數組大小為0沒有意義沒有意義 */ int b(2)(3); /* 不能使用圓括號不能使用圓括號
5、*/ int k, ak; /* 不能用變量說明數組大小不能用變量說明數組大小*/ 引用方式:引用方式: 數組名數組名下標下標如如:int a5; a0=1; printf(”%d”,a0); 2、一維數組元素的引用、一維數組元素的引用把把a0的變量賦值為的變量賦值為1a數組中有數組中有5個元素個元素,分別是分別是:a0,a1,a2,a3,a4顯示顯示a0的值的值留意:留意:下標可以是整型常量或整型表達式下標可以是整型常量或整型表達式 例如例如: int i=0,a5;ai=10; 引用引用a5 是錯誤的是錯誤的一維數組元素引用的規(guī)定:一維數組元素引用的規(guī)定:數組必須先定義后使用。數組必須先定
6、義后使用。數組元素只能逐個被引用,不能一次引用整數組元素只能逐個被引用,不能一次引用整個數組。個數組。對數組中所有元素逐個引用時,通??墒褂脤到M中所有元素逐個引用時,通??墒褂醚h(huán)結構。循環(huán)結構。 例例 對對10個數組元素依次賦值為個數組元素依次賦值為0,1, 2,3,4,5,6,7,8,9,要求按逆序輸出。,要求按逆序輸出。解題思路:解題思路:定義一個長度為定義一個長度為10的數組,數組定義為整型的數組,數組定義為整型要賦的值是從要賦的值是從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、一維數組在內存中的存放方式、一維數組在內存中的存放方式 數組定義以后,編譯系統計算機將在內數組定義
8、以后,編譯系統計算機將在內存中開辟一塊連續(xù)的存儲單元用于存放數組元素,存中開辟一塊連續(xù)的存儲單元用于存放數組元素,數組名表示存儲單元的首地址,存儲單元的大小數組名表示存儲單元的首地址,存儲單元的大小由數組的類型和數組的大小決定。由數組的類型和數組的大小決定。例如例如 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é)數組的初始化:定義數組時對數組元素賦以初值。數組的初始化:定義數組時對數組元素賦以初值。4、一維數組的初始化、一維數組的初始化格式:格式: 類型符類型符 數組名數組名表達式表達式初值表初值表;給全部元素賦初值。給全部元素賦初值
9、。 例例 int a8= 0,1,2,3,4,5,6,7 ;給部分元素賦初值。給部分元素賦初值。 例例 int a8= 0,1,2,3,4 ;給全部元素賦初值時可不指定數組的長度。給全部元素賦初值時可不指定數組的長度。 例例 int a = 0,1,2,3,4,5,6,7 ;例例7.2 用數組處理用數組處理Fabonacci數列數列,輸出前輸出前20個數。個數。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個數據。個數據。 例:有6個數,要求對它們按由小到大的順序排列解題思路:排序的規(guī)律有兩種:一種是“升序”,從小到大;另一種是“降序”,從大到小把題目抽象為:“對6個數按升序排序”采用起泡法排序985420895420859420854920854290854209大數沉淀,小數起泡大數沉淀,
11、小數起泡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個整數:個整數: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個整數是:個整數是:n); for (i=0; i5; i+) printf(%d, ,ai); printf(b。n); 二、二維數組二、二維數組1、二維數組的定義和引用、二維數組的定義和引用二維數組的定義格式:二維數組的定義格式:類型說明符類型說明符 數組名數組名整常量表達式整常量表達式1整常量表達式整常量表達式2行數行數元素個數元素個數=行行數數*列數列數列數列數例:例:float a34,b510;二維數組元素的引用格式:二維數組元素的引用格式: 數組名數組名下標下標1下標下標2下標都是從下標都是從0開始開始例:例:int m23; 共有共有6個元素,分別是:個元素
14、,分別是: m00 m01 m02 m10 m11 m12 m03 m21 m23都是錯誤的引用都是錯誤的引用二維數組的存儲方式:二維數組的存儲方式: a00 a02 a10 a12 a20 a22 a01 a03 a11 a13 a21 a23 二維數組在內存中按行存放二維數組在內存中按行存放,例例:int a34;第0行第1行第2行2、二維數組的初始化、二維數組的初始化二維數組初始化通常是按行進行的。二維數組初始化通常是按行進行的。格式:格式:類型符類型符 數組名數組名表達式表達式1表達式表達式2=初值表初值表;給全部元素賦初值。給全部元素賦初值。 例例 int a34=0,1,2,3,4
15、,5,6,7,8,9,10,11; 或寫成或寫成: 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; 或寫成或寫成: int b34=0,1,2,3,4,5,6 ;給二維數組的全部元素賦初值,可以不指定第一給二維數組的全部元素賦初值,可以不指定第一維的長度,但第二維的長度不能省略。維的長度,但第二維的長度不能省略。 例例: int a 4=0,1,2,3,4,5,6,7,8,9,10,11; 或寫成或寫成: 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 矩陣的轉置。矩陣的轉置。分析:將矩陣分析:將矩陣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數組數組b數組數組c數組數組 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大數據分布式課程設計
- 早教課教案大全課程設計
- 抖音ai課程設計
- 工業(yè)自動化控制系統設計與集成合同
- 2024年朝陽區(qū)校園保安服務與校園周邊治安整治合同2篇
- 2024年度辦公自動化系統合同3篇
- 2024版品牌授權合同詳細范本
- 2024年度船舶運輸合同船舶保險與船舶保險理賠范本3篇
- 2024版賓館租賃承包與品牌推廣合作合同3篇
- 2024版二樓商鋪租賃附帶會員積分兌換合同2篇
- 財務共享服務建設方案
- 幕墻工程全面策劃創(chuàng)效指導清單
- 人教版(2019)高中生物選擇性必修2《生物與環(huán)境》全冊考點復習提綱
- 2024年四川省廣安市中考物理試題含答案
- 與信仰對話 課件-2024年入團積極分子培訓
- 北師大版(2019)數學必修第一冊:8.1《走近數學建?!?/a>
- 湖南省岳陽市2023-2024學年高一上學期1月期末聯考物理試題 含解析
- 涉水作業(yè)安全指導手冊
- 北京市道德與法治初二上學期期末試題與參考答案(2024年)
- 人教版數學五年級上冊期末考試試卷附答案
- 世界一流港口綜合評價報告
評論
0/150
提交評論