譚浩強C程序設(shè)計課件第6章_第1頁
譚浩強C程序設(shè)計課件第6章_第2頁
譚浩強C程序設(shè)計課件第6章_第3頁
譚浩強C程序設(shè)計課件第6章_第4頁
譚浩強C程序設(shè)計課件第6章_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、,6,利用數(shù)組處理批量數(shù)據(jù),第,章,為什么需要循環(huán)控制,(1) 數(shù)組是一組有序數(shù)據(jù)的集合。數(shù)組中各數(shù)據(jù)的排列是有一定規(guī)律的,下標(biāo)代表數(shù)據(jù)在數(shù)組中的序號。 (2) 用數(shù)組名和下標(biāo)即可唯一地確定數(shù)組中的元素。 (3) 數(shù)組中的每一個元素都屬于同一個數(shù)據(jù)類型。,數(shù)組,用50個float型簡單變量表示學(xué)生的成績 煩瑣,如果有1000名學(xué)生怎么辦呢? 沒有反映出這些數(shù)據(jù)間的內(nèi)在聯(lián)系,實際上這些數(shù)據(jù)是同一個班級、同一門課程的成績,它們具有相同的屬性。,要向計算機輸入全班50個學(xué)生一門課程的成績,解決 方法,定義一維數(shù)組,類型說明符 數(shù)組名常量表達式,(1) 數(shù)組名的命名規(guī)則和變量名相同,遵循標(biāo)識符命名規(guī)則

2、。 (2) 在定義數(shù)組時,需要指定數(shù)組中元素的個數(shù),方括號中的常量表達式用來表示元素的個數(shù),即數(shù)組長度。 (3) 常量表達式中可以包括常量和符號常量,不能包含變量。,int a10;,整型數(shù)組,即數(shù)組中的元素均為整型,數(shù)組名為a,數(shù)組包含10個整型元素,相當(dāng)于定義了10個簡單的整型變量,引用一維數(shù)組元素,數(shù)組名下標(biāo),只能引用數(shù)組元素而不能一次整體調(diào)用整個數(shù)組全部元素的值。 數(shù)組元素與一個簡單變量的地位和作用相似。 “下標(biāo)”可以是整型常量或整型表達式。,int a10; /前面有int,這是定義數(shù)組,指定數(shù)組包含10個元素 t=a6; /這里的a6表示引用a數(shù)組中序號為6的元素,引用一維數(shù)組元素

3、,【例6.1】對10個數(shù)組元素依次賦值為0,1,2,3,4,5,6,7,8,9,要求按逆序輸出。,#include int main() int i,a10; for(i=0; i=0;i-) /輸出a9a0共10個數(shù)組元素 printf(%d ,ai); printf(n); return 0; ,一維數(shù)組的初始化,(1) 在定義數(shù)組時對全部數(shù)組元素賦予初值。 將數(shù)組中各元素的初值順序放在一對花括號內(nèi),數(shù)據(jù)間用逗號分隔?;ɡㄌ杻?nèi)的數(shù)據(jù)就稱為“初始化列表”。 (2) 可以只給數(shù)組中的一部分元素賦值。 定義a數(shù)組有10個元素,但花括號內(nèi)只提供5個初值,這表示只給前面5個元素賦初值,系統(tǒng)自動給后5

4、個元素賦初值為0。 (3) 給數(shù)組中全部元素賦初值為0。 (4) 在對全部數(shù)組元素賦初值時,由于數(shù)據(jù)的個數(shù)已經(jīng)確定,因此可以不指定數(shù)組長度。 但是,如果數(shù)組長度與提供初值的個數(shù)不相同,則方括號中的數(shù)組長度不能省略。,為了使程序簡潔,常在定義數(shù)組的同時給各數(shù)組元素賦值,這稱為數(shù)組的初始化。,int a10=0,1,2,3,4,5,6,7,8,9;,int a10=0,1,2,3,4;,int a10=0, 0, 0, 0, 0, 0, 0, 0, 0, 0;,int a10=0; /未賦值的部分元素自動設(shè)定為0,或,int a5=1,2,3,4,5;,int a =1,2,3,4,5;,或,一維

5、數(shù)組程序舉例,【例6.2】用數(shù)組來處理求Fibonacci數(shù)列問題。,#include int main() int i; int f20=1,1; /對最前面兩個元素f0和f1賦初值1 for(i=2;i20;i+) fi=fi-2+fi-1; /先后求出f2f19的值 for(i=0;i20;i+) if(i%5=0) printf(n); /控制每輸出5個數(shù)后換行 printf(%12d,fi); /輸出一個數(shù) printf(n); return 0; ,一維數(shù)組程序舉例,【例6.3】有10個地區(qū)的面積,要求對它們按由小到大的順序排列。,9,8,5,4,2,0,8,5,4,2,0,9,5

6、,4,2,0,8,9,4,2,0,5,8,9,2,0,4,5,8,9,第一趟,第二趟,第三趟,第四趟,第五趟,一維數(shù)組程序舉例,【例6.3】有10個地區(qū)的面積,要求對它們按由小到大的順序排列。,#include int main() int a10; int i,j,t; printf(input 10 numbers :n); for (i=0;iai+1) /相鄰兩個數(shù)比較 t=ai;ai=ai+1;ai+1=t; printf(the sorted numbers :n); for(i=0;iai+1,定義和引用二維數(shù)組,有3個小分隊,每隊有6名隊員,要把這些隊員的工資用數(shù)組保存起來以備

7、查。,小例子,如果建立一個數(shù)組pay,它應(yīng)當(dāng)是二維的,第一維用來表示第幾分隊,第二維用來表示第幾個隊員。例如用pay2,3表示2分隊第3名隊員的工資,它的值是1725。 二維數(shù)組常稱為矩陣(matrix)。把二維數(shù)組寫成行(row)和列(column)的排列形式,可以有助于形象化地理解二維數(shù)組的邏輯結(jié)構(gòu)。,定義二維數(shù)組,類型說明符 數(shù)組名常量表達式常量表達式,二維數(shù)組可被看作一種特殊的一維數(shù)組: 它的元素又是一個一維數(shù)組。 例如,float a34;可以把a看作一個一維數(shù)組,它有3個元素:a0, a1, a2,每個元素又是一個包含4個元素的一維數(shù)組: a0 a00 a01 a02 a03 a1

8、 a10 a11 a12 a13 a2 a20 a21 a22 a23,float pay36;,float型二維數(shù)組,數(shù)組名為pay,數(shù)組第二維有6個元素,數(shù)組第一維有3個元素,float a34, b510; /定義a為34(3行4列)的數(shù)組,b為510(5行10列)的數(shù)組,float a3, 4, b5, 10; /在一對方括號內(nèi)不能寫兩個下標(biāo),二維數(shù)組的存儲,C語言中,二維數(shù)組中元素排列的順序是按行存放的。,float a34,第0行元素 第1行元素 第2行元素,多維數(shù)組,多維數(shù)組元素在內(nèi)存中的排列順序為: 第1維的下標(biāo)變化最慢,最右邊的下標(biāo)變化最快。,float a2, 3, 4;

9、/定義三維數(shù)組a,它有2頁,3行,4列,float a2, 3, 4;在內(nèi)存中的排列順序為: a000 a001 a002 a003 a010 a011 a012 a013 a020 a021 a022 a023 a100 a101 a102 a103 a110 a111 a112 a113 a120 a121 a122 a123,引用二維數(shù)組元素,數(shù)組名下標(biāo) 下標(biāo),“下標(biāo)”可以是整型常量或整型表達式。 數(shù)組元素可以出現(xiàn)在表達式中,也可以被賦值,如:b12=a23/2;,int a34; /定義a為34的二維數(shù)組 a34=3; /不存在a34元素 /數(shù)組a可用的“行下標(biāo)”的范圍為02,“列下標(biāo)

10、”的范圍為03,引用一維數(shù)組元素,【例6.1】對10個數(shù)組元素依次賦值為0,1,2,3,4,5,6,7,8,9,要求按逆序輸出。,#include int main() int i,a10; for(i=0; i=0;i-) /輸出a9a0共10個數(shù)組元素 printf(%d ,ai); printf(n); return 0; ,二維數(shù)組的初始化,(1)分行給二維數(shù)組賦初值。(最清楚直觀) (2)可以將所有數(shù)據(jù)寫在一個花括號內(nèi),按數(shù)組元素在內(nèi)存中的排列順序?qū)Ω髟刭x初值。 (3)可以對部分元素賦初值。 (4)如果對全部元素都賦初值(即提供全部初始數(shù)據(jù)),則定義數(shù)組時對第1維的長度可以不指定,

11、但第2維的長度不能省。 在定義時也可以只對部分元素賦初值而省略第1維的長度,但應(yīng)分行賦初值。,可以用“初始化列表”對二維數(shù)組初始化。,int a34=1,2,3,4,5,6,7,8,9,10,11,12;,int a34=1,2,3,4,5,6,7,8,9,10,11,12;,int a34=1,5,9; ,int a34=1,0,6,0,0,11; ,int a34=1,5,6; , 1 0 0 0 5 0 0 0 9 0 0 0, 1 0 0 0 0 6 0 0 0 0 11 0, 1 0 0 0 5 6 0 0 0 0 0 0,int a34=1,9; , 1 0 0 0 0 0 0 0

12、 9 0 0 0,int a34=1,2,3,4,5,6,7,8,9,10,11,12;,int a4=1,2,3,4,5,6,7,8,9,10,11,12;,int a4=0,0,3,0,10;,二維數(shù)組程序舉例,【例6.4】將一個二維數(shù)組行和列的元素互換,存到另一個二維數(shù)組中。,#include int main() int a23=1,2,3,4,5,6; int b32,i,j; printf(array a:n); for(i=0;i=1;i+) /處理a數(shù)組中的一行中各元素 for (j=0;j=2;j+) /處理a數(shù)組中某一列中各元素 printf(%5d,aij); /輸出a數(shù)

13、組的一個元素 bji=aij; /將a數(shù)組元素的值賦給b數(shù)組相應(yīng)元素 printf(n); printf(array b:n); /輸出b數(shù)組各元素 for(i=0;i=2;i+) /處理b數(shù)組中一行中各元素 for(j=0;jmax,先思考一下在打擂臺時怎樣確定最后的優(yōu)勝者。先找出任一人站在臺上,第2人上去與之比武,勝者留在臺上。再上去第3人,與臺上的人(即剛才的得勝者)比武,勝者留臺上,敗者下臺。以后每一個人都是與當(dāng)時留在臺上的人比武。直到所有人都上臺比過為止,最后留在臺上的就是冠軍。,字符數(shù)組,定義字符數(shù)組,用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組。在字符數(shù)組中的一個元素內(nèi)存放一個字符。,cha

14、r c10; c0=I; c1= ;c2=a;c3=m;c4= ;c5=h;c6=a;c7=p;c8=p;c9=y;,由于字符型數(shù)據(jù)是以整數(shù)形式(ASCII代碼)存放的,因此也可以用整型數(shù)組來存放字符數(shù)據(jù)。,int c10; c0=a; /合法,但浪費存儲空間,字符數(shù)組的初始化,如果在定義字符數(shù)組時不進行初始化,則數(shù)組中各元素的值是不可預(yù)料的。 如果花括號中提供的初值個數(shù)(即字符個數(shù))大于數(shù)組長度,則出現(xiàn)語法錯誤。 如果初值個數(shù)小于數(shù)組長度,則只將這些字符賦給數(shù)組中前面那些元素,其余的元素自動定為空字符(即0)。 如果提供的初值個數(shù)與預(yù)定的數(shù)組長度相同,在定義時可以省略數(shù)組長度,系統(tǒng)會自動根據(jù)

15、初值個數(shù)確定數(shù)組長度。 也可以定義和初始化一個二維字符數(shù)組。,對字符數(shù)組初始化,最容易理解的方式是用“初始化列表”,把各個字符依次賦給數(shù)組中各元素。,char c10=I, ,a,m, ,h,a,p,p,y; /把10個字符依次賦給c0c9這10個元素,char c10=c, ,p,r,o,g,r,a,m;,char diamond55= , ,*, ,*, ,*,*, , , ,*, ,*, ,*, , ,*;,char c=I, ,a,m, ,h,a,p,p,y; /數(shù)組c的長度自動定為10,* * * * * * * *,引用字符數(shù)組中的元素,【例6.6】輸出一個已知的字符串。,#include int main() ch

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論