第1講_二維數(shù)組_第1頁
第1講_二維數(shù)組_第2頁
第1講_二維數(shù)組_第3頁
第1講_二維數(shù)組_第4頁
第1講_二維數(shù)組_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、程序設計基礎程序設計基礎( 下下 )主講:袁寧主講:袁寧計算機軟件教研室計算機軟件教研室郵箱地址郵箱地址: ise_第1講 二維數(shù)組二維數(shù)組復習:一維數(shù)組復習:一維數(shù)組(1) (1) 一維數(shù)組的定義一維數(shù)組的定義(2) (2) 一維數(shù)組的應用一維數(shù)組的應用新內(nèi)容:新內(nèi)容:(1) (1) 二維數(shù)組的定義二維數(shù)組的定義(2) (2) 二維數(shù)組的引用二維數(shù)組的引用(3) (3) 二維數(shù)組的初始化二維數(shù)組的初始化(4) (4) 二維數(shù)組的程序舉例二維數(shù)組的程序舉例二、數(shù)組的概念二、數(shù)組的概念1. 數(shù)組數(shù)組: :由具有相同類型的固定數(shù)量的元素組成的集合由具有相同類型的固定數(shù)量的元素組成的集合2. 數(shù)組元

2、素數(shù)組元素: 每一個數(shù)組元素都是一個變量每一個數(shù)組元素都是一個變量, 為了與為了與 一般的變量相區(qū)別一般的變量相區(qū)別,我們稱數(shù)組元素為我們稱數(shù)組元素為下標變量下標變量3.下標變量在數(shù)組中的位置序號稱下標變量在數(shù)組中的位置序號稱下標下標 下標變量的數(shù)據(jù)類型稱為下標變量的數(shù)據(jù)類型稱為下標類型下標類型(或元素類型或元素類型)7.1 一維數(shù)組的引出及使用一維數(shù)組的引出及使用三、一維數(shù)組的定義三、一維數(shù)組的定義 1. 格式格式 : 類型標識符類型標識符 數(shù)組名數(shù)組名 常量表達式常量表達式 ; 例例: int a10 ; 2. 說明說明 (1) 數(shù)組的類型實際上是指數(shù)組元素的數(shù)組的類型實際上是指數(shù)組元素的

3、 取值類型。取值類型。對于同一個數(shù)組,所有對于同一個數(shù)組,所有 元素的數(shù)據(jù)類型都是相同的。元素的數(shù)據(jù)類型都是相同的。 84 : 66 80 95101010121014 :1028a0a1a2 :a9(2) 數(shù)組名是用戶定義的標識符數(shù)組名是用戶定義的標識符, 數(shù)組名表示了一個存儲區(qū)的首地址數(shù)組名表示了一個存儲區(qū)的首地址 (即第一個數(shù)組元素的地址即第一個數(shù)組元素的地址) 例例: 一個變量一個變量x的地址可以用的地址可以用&x來表示來表示 一個數(shù)組一個數(shù)組a的地址就用數(shù)組名的地址就用數(shù)組名a來表示來表示, a等價于等價于&a07.1 一維數(shù)組的引出及使用一維數(shù)組的引出及使用2. 說

4、明說明(3) 數(shù)組長度數(shù)組長度 : 指數(shù)組中元素的個數(shù)指數(shù)組中元素的個數(shù)(4) 數(shù)組元素的數(shù)組元素的下標由零開始下標由零開始 例例: int a10 中中 a 有有10個元素個元素, 所以數(shù)組長度為所以數(shù)組長度為10, 數(shù)組元素分別是數(shù)組元素分別是: a0 , a1 a8, a9(5) 常量表達式中不能包含變量常量表達式中不能包含變量, 其值也不能是實數(shù)其值也不能是實數(shù)int n;scanf(%d,&n);int an; int n=6;int an; int b8.5; #define SIZE 8int a2+3;float bSIZE;對對錯錯7.1 一維數(shù)組的引出及使用一維數(shù)組

5、的引出及使用四、數(shù)組元素的引用四、數(shù)組元素的引用1. 引用形式引用形式 : 數(shù)組名數(shù)組名 下標下標 注意注意: 如果出現(xiàn)如果出現(xiàn) a5 = 72 ; 編譯時不會編譯時不會指出錯誤指出錯誤, 系統(tǒng)會將系統(tǒng)會將a4后下一個后下一個存儲單元存儲單元 賦值為賦值為72, 但這樣可能但這樣可能會破壞數(shù)組以外其他變量的值會破壞數(shù)組以外其他變量的值 84 75 66 80 9510101012101410161018a0a1a2a3a472a51020假設這個存儲空間是變量假設這個存儲空間是變量x的的, 實際上實際上a5是不存在的是不存在的, 如果執(zhí)行了如果執(zhí)行了a5=72, 會將會將x原有的正確數(shù)據(jù)覆蓋掉

6、原有的正確數(shù)據(jù)覆蓋掉2. 說明說明(1) 下標可以是整型常量或整型表達式下標可以是整型常量或整型表達式 如如: a1 , a2*3(2) 數(shù)組定義為數(shù)組定義為 int a5 , 數(shù)組長度為數(shù)組長度為5 而下標在而下標在0 - 4之內(nèi)之內(nèi), 即即a0 - a47.1 一維數(shù)組的引出及使用一維數(shù)組的引出及使用五、五、 一維數(shù)組的初始化一維數(shù)組的初始化1. 概念概念 : 在定義一維數(shù)組時對各元素指定初始值稱為在定義一維數(shù)組時對各元素指定初始值稱為 數(shù)組的初始化數(shù)組的初始化int a5 = 1 , 3 , 5 , 7 , 9 ;2. 說明說明 (1) 對數(shù)組的全體元素指定初值對數(shù)組的全體元素指定初值,

7、 初值用初值用 括起來括起來, 數(shù)據(jù)之間用數(shù)據(jù)之間用 逗號分開。這種情況下逗號分開。這種情況下, 可以不指明數(shù)組的長度可以不指明數(shù)組的長度, 系統(tǒng)會根據(jù)系統(tǒng)會根據(jù) 內(nèi)數(shù)據(jù)的個數(shù)確定數(shù)組的長度內(nèi)數(shù)據(jù)的個數(shù)確定數(shù)組的長度 int a = 1 , 3 , 5 , 7 , 9 ;(2) 對數(shù)組中部分元素指定初值對數(shù)組中部分元素指定初值 ( 這時不能省略數(shù)組長度這時不能省略數(shù)組長度 ) int a5 = 1 , 3 , 5 ; (3) 使數(shù)組中的全部元素初始值都為使數(shù)組中的全部元素初始值都為 0 int a5 = 0, 0, 0, 0, 0 ; 簡單的寫法簡單的寫法: int a5= 0 ;7.1 一維

8、數(shù)組的引出及使用一維數(shù)組的引出及使用1357913500 逆序逆序#include#define N 10void main( ) int i, t; int aN=5,8,0,1,9,2,6,3,7,4 for(i=0; iN/2; i+) t=ai; ai=aN-1-i; aN-1-i=t; for( i=0; i=9; i+) printf(%3d , ai);例例: 使數(shù)組元素使數(shù)組元素a0a9的值逆序再輸出的值逆序再輸出7.1 一維數(shù)組的引出及使用一維數(shù)組的引出及使用 5 8 0 1 9 2 6 3 7 4a0a1a2a3a4a5a6a7a8a9a0a9457830a1a8a2a7

9、7.2.1 二維數(shù)組的定義二維數(shù)組的定義 1、概念、概念: 可以將二維數(shù)組看成一種特殊的一維數(shù)組可以將二維數(shù)組看成一種特殊的一維數(shù)組, 它它 的每一個元素都是類型相同的一維數(shù)組的每一個元素都是類型相同的一維數(shù)組, 這樣這樣 就形成一個二維數(shù)組就形成一個二維數(shù)組 。2、定義形式、定義形式 : 類型標識符類型標識符 數(shù)組名數(shù)組名 常量表達式常量表達式1 常量表達式常量表達式2 如如: int a34 ; a0a1a2a00a01a02 a037.2 二維數(shù)組的定義和引用二維數(shù)組的定義和引用3、存儲形式、存儲形式 : 數(shù)組的元素在內(nèi)存中是連續(xù)存放的數(shù)組的元素在內(nèi)存中是連續(xù)存放的 int a33 ;

10、數(shù)組數(shù)組a的存放形式如下的存放形式如下 : a10a11a12a20a21a22a00a01a02a00a01a02a10a11a12a20a21a22101010121014101610181020102210241026 7.2.2 二維數(shù)組的引用二維數(shù)組的引用 數(shù)組元素的表示形式數(shù)組元素的表示形式 : 數(shù)組名數(shù)組名 下標下標1 下標下標2 注意注意 : (1) 每個下標都要用每個下標都要用 括起來括起來 如如 a 2 1 不能寫成不能寫成 a 2,1 (2) 下標不要超過定義的范圍下標不要超過定義的范圍7.2 二維數(shù)組的引出及使用二維數(shù)組的引出及使用 1 2 3 4 5 6 7 8 9

11、10 11 127.2.3 二維數(shù)組的初始化二維數(shù)組的初始化 1、分行初始化、分行初始化 int a34= 1, 2, 3, 4 , 5, 6, 7, 8 , 9, 10, 11, 12 ; 第第1對對 內(nèi)的數(shù)據(jù)賦給第內(nèi)的數(shù)據(jù)賦給第1行數(shù)組元素行數(shù)組元素, 以此類推,以此類推,此方法較直觀此方法較直觀2、按數(shù)據(jù)的排列順序對數(shù)組元素賦初值、按數(shù)據(jù)的排列順序對數(shù)組元素賦初值 int a34=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12; 將數(shù)據(jù)依次賦給元素將數(shù)據(jù)依次賦給元素 a00 , a01 a23 注意注意: 此方法數(shù)據(jù)沒有明顯的界限此方法數(shù)據(jù)沒有明顯的界限, 當

12、數(shù)據(jù)較多時容易出錯當數(shù)據(jù)較多時容易出錯7.2 二維數(shù)組的引出及使用二維數(shù)組的引出及使用3、對數(shù)組的部分元素賦初值、對數(shù)組的部分元素賦初值 int a34=1, 2,3,0, 4; int a34=1,2,3,4,5,6;120030000400123456000000注意注意: 此方法對非此方法對非0元素較少時比較方便,不必將所有的元素較少時比較方便,不必將所有的0都都寫出來,只需輸入少量數(shù)據(jù)。寫出來,只需輸入少量數(shù)據(jù)。也可以只對某幾行元素賦也可以只對某幾行元素賦初初值值:int a34=1,5,6; int a34=1, ,9;1000560000001000000090004、對數(shù)組的全部

13、元素賦初值時、對數(shù)組的全部元素賦初值時可以省略第一維的長度可以省略第一維的長度 系統(tǒng)會根據(jù)數(shù)據(jù)的個數(shù)和第二維的長度自動求出系統(tǒng)會根據(jù)數(shù)據(jù)的個數(shù)和第二維的長度自動求出 第一維的長度第一維的長度數(shù)組數(shù)組a第一維長度為第一維長度為 3 數(shù)組數(shù)組b第一維長度為第一維長度為 4 int b 2= 1, 2, 3, 4, 5, 6, 7, 8 ;定義時也可以只對部分元素賦初值,而省略第一維定義時也可以只對部分元素賦初值,而省略第一維的長度,但應分行賦初值。的長度,但應分行賦初值。int a 4= 1, 2, 0, 3, 4 , 5 ;數(shù)組數(shù)組 int b42= 1, 2, 3, 4, 5, 6, 7, 8

14、 ; 等價于等價于120003405000#include void main( ) int i , j, row=0, col=0, max ; int a34=5,2,0,9,3,7,12,6,10,4,1,8; max=a00; for ( i=0; i3; i+ ) for ( j=0; jmax ) max=aij ; row=i ; col=j ; printf(“max=%dn”, max); printf(“max=a%d%dn”, row , col);例例: 找出矩陣中最大的數(shù)找出矩陣中最大的數(shù),并輸出其行號和列號并輸出其行號和列號max0row0col59301212輸出

15、輸出:max=12max=a1252093712610418a00 a01 a02 a03a0a1a27.2.4 二維數(shù)組的應用二維數(shù)組的應用#includevoid main( ) int a34, b43 , i , j ; for ( i=0 ; i3 ; i+ ) for ( j=0 ; j4 ; j+ ) scanf(“%d”, &aij ) ;37126104185209例例: 將一個矩陣進行轉置將一個矩陣進行轉置(即原來的行變?yōu)榱屑丛瓉淼男凶優(yōu)榱?52093712610418輸入數(shù)組輸入數(shù)組a進行矩陣轉置進行矩陣轉置a02b20a21b12輸出數(shù)組輸出數(shù)組bfor ( i

16、=0 ; i3 ; i+ ) for (j=0 ; j4 ; j+) bji=aij;for ( i=0 ; i4 ; i+ ) for ( j=0 ; j3 ; j+ ) printf(“%5d”, bij) ; printf(“n”); 7.2.4 二維數(shù)組的應用二維數(shù)組的應用例例: 一個學習小組有一個學習小組有5個人個人, 每個人有三門課的考試成績每個人有三門課的考試成績, 求每個人的總分和該學習小組各門課的平均成績。求每個人的總分和該學習小組各門課的平均成績。姓名姓名高數(shù)高數(shù)英語英語C語言語言總分總分Mary857888?John908091?Mike799284?Alex838680

17、?Karry877595?用一個二維數(shù)組用一個二維數(shù)組來存放成績來存放成績 int s54;用一個一維數(shù)組用一個一維數(shù)組來存放來存放各門課各門課的平均的平均成績成績float a3;每個人三門課的成績是輸入的每個人三門課的成績是輸入的總分和各門課的平均成績是計算出來的總分和各門課的平均成績是計算出來的7.2.4 二維數(shù)組的應用二維數(shù)組的應用#includevoid main( ) int i, j, s54, sum; float a3; for(i=0; i5; i+) for(j=0; j3; j+) scanf(% %d, &sij); sij=si0+si1+si2; for(

18、j=0; j3; j+) sum=0; /注意賦初值的位置注意賦初值的位置 for(i=0; i5; i+) sum=sum+sij; aj=sum/5.0; (見下頁見下頁)輸入一個學生輸入一個學生3門課的成績門課的成績計算總分計算總分對每一門課對每一門課(即每一列即每一列)進行處理進行處理: 先將每列的先將每列的5個成績累加求和個成績累加求和; 再再將總和除將總和除5, 得到每門得到每門課的平均分課的平均分數(shù)組數(shù)組a保存每門保存每門課的平均分課的平均分二維數(shù)組二維數(shù)組s存放每個學生的成績存放每個學生的成績#includevoid main( ) for(i=0; i5; i+) for(j

19、=0; j4; j+) printf(%4d, sij); printf( n ); for(i=0; i3; i+) printf( %6.2f , ai); printf( n );控制輸出控制輸出5行行控制每行輸控制每行輸出出4個成績個成績輸出一行的輸出一行的4個個成績后再換行成績后再換行輸出結果輸出結果:_ _85_ _78_ _88_ 251_ _90_ _80_ _91_ 261_ _79_ _92_ _84_ 255_ _83_ _86_ _80_ 249_ _87_ _75_ _95_ 257_84.80_82.20_87.60思考題 假設兩維數(shù)假設兩維數(shù)組組a和和b表示兩個表

20、示兩個44矩陣,要矩陣,要求編寫程序將兩矩陣的乘積存入另一個兩求編寫程序將兩矩陣的乘積存入另一個兩維數(shù)組中并輸出。維數(shù)組中并輸出。 題目分析:題目分析:對于乘積矩陣的元素,有公對于乘積矩陣的元素,有公式式 ,其中的,其中的aik和和bkj分別是兩個分別是兩個被乘矩陣的元素。求出一個元素需要用一被乘矩陣的元素。求出一個元素需要用一個循環(huán),因此完成矩陣乘法需要用一個三個循環(huán),因此完成矩陣乘法需要用一個三重循環(huán)。重循環(huán)。nkkjikijbac1#include void main ( ) int a44=1,2,3,4, 5,6,7,8, 9,10,11,12,13,14,15,16; int b4

21、4=1,3,5,7, 5,8,7,1, 6,2,4,8,7,2,9,11; int c44; int i, j, k; double x; for(i=0; i4; i+) for(j=0; j4; j+) for(cij=0.0, k=0; k4; k+) cij= cij+aik*bkj; for(i=0; i4; i+) for(j=0; j4; j+) printf(”%f%c”, cij , j= =3 ? n : );課后作業(yè)(課本P153) 課后習題課后習題7.3: 求求3*3整型矩陣對角線元素之和。整型矩陣對角線元素之和。 課后習題課后習題7.6 : 輸出楊輝三角形輸出楊輝三角形 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 楊輝三角:楊輝三角: 簡單的說一下就是兩個未知數(shù)和的冪次方運算后的系數(shù)問題,比如(簡單的說一下就是兩個未知數(shù)和的冪次方運算后的系數(shù)問題,比如(x+yx+y)的平方的平方=x=x

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論