《程序設(shè)計(jì)ch》PPT課件.ppt_第1頁(yè)
《程序設(shè)計(jì)ch》PPT課件.ppt_第2頁(yè)
《程序設(shè)計(jì)ch》PPT課件.ppt_第3頁(yè)
《程序設(shè)計(jì)ch》PPT課件.ppt_第4頁(yè)
《程序設(shè)計(jì)ch》PPT課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第6章 利用數(shù)組處理批量數(shù)據(jù),6,8,9章講數(shù)據(jù)注重MEM,相對(duì)于第三章的“單獨(dú)”的簡(jiǎn)單數(shù)據(jù)類型,更關(guān)注“組合”、更關(guān)注“數(shù)據(jù)塊”、 “內(nèi)存塊,目標(biāo)與知識(shí)點(diǎn),熟練掌握一維數(shù)組 一維數(shù)組的定義 一維數(shù)組的引用 一維數(shù)組的初始化 掌握二維數(shù)組 二維數(shù)組的定義 二維數(shù)組的引用 二維數(shù)組的初始化,了解多維數(shù)組 掌握字符數(shù)組 字符數(shù)組的定義 字符數(shù)組的引用 字符數(shù)組的初始化,復(fù)習(xí)回顧,第三章,有了常量,為什么還要變量? 給“量”一個(gè)“名份”,使我們可以方便地訪問(wèn)它、改寫它、控制它 第七章,有了三種邏輯控制結(jié)構(gòu),為什么還要函數(shù)? 給“邏輯控制”一個(gè)“名份”,使我們可以方便地訪問(wèn)它、組織它、利用它 今天我們

2、講:有了變量,為什么還要數(shù)組? 同樣的原因,給“一組變量”一個(gè)更細(xì)的“名份”,使我們可以更方便地訪問(wèn)它 馮諾依曼計(jì)算機(jī)是基于存儲(chǔ)結(jié)構(gòu)的,“名份”是和存儲(chǔ)地址相關(guān)的,地址是與“內(nèi)存”相關(guān)的概念。 內(nèi)存是程序員的“戰(zhàn)場(chǎng)” ,打仗要懂得地圖,為什么要用數(shù)組,cs_c,問(wèn)題: 1.如何用c語(yǔ)言把100個(gè)同學(xué)的成績(jī)存儲(chǔ)到計(jì)算機(jī)中? 2.如何從這100個(gè)學(xué)生的成績(jī)中查找最大值和最小值,int score1; int score2; int core100,計(jì)算機(jī)中的,我們看到的,按照以前的知識(shí),我們會(huì)這樣做,為什么要用數(shù)組,cs_c,此類問(wèn)題的特點(diǎn): 1.在一個(gè)表中,具有共同的表名; 2.他們的學(xué)號(hào)是相鄰

3、的,從1到100; 3.根據(jù)學(xué)號(hào)就能區(qū)別開(kāi)不同的成績(jī); 4.數(shù)據(jù)類型相同,看到同類性質(zhì)的數(shù)據(jù),同類性質(zhì)的操作,我們自然而然想到用循環(huán)來(lái)處理問(wèn)題 自然而然想到:如果有一種變量是和一個(gè)序號(hào)相關(guān)的 ,那將會(huì)產(chǎn)生很多很神奇的代碼 抽象!把分立的數(shù)據(jù)抽象成一個(gè)內(nèi)部有序的整體,cs_c,int score1; int score2; int core100,for (i=1;i=100;i+) 變量名,循環(huán)控制變量,一維數(shù)組的定義,一維數(shù)組定義的一般形式,類型符 數(shù)組名常量表達(dá)式,int cs_c100,cs_c99,cs_c2,cs_c1,cs_c0,數(shù)組元素的表示,69,82,85,93,計(jì)算機(jī)里的,

4、一維數(shù)組的引用,int cs_c100,for (i=1;i=100;i+) cs_ci,include void main() int i, cs_c100; printf(input scores: n); for(i = 0; i 100; i+) scanf(%d,問(wèn)題1:如何用c語(yǔ)言把100個(gè)同學(xué)的成績(jī)存儲(chǔ) 到計(jì)算機(jī)中,82,69,93,85,再把它們打印出來(lái),include void main() int cs_c100; printf(input scores: n); for(int i = 0; i 100; i+) scanf(%d,include int i, iMax,

5、 iMin, cs_c100; printf(input 100 scores: n); for(i = 0; i iMax) iMax = cs_ci; if(cs_ci iMin) iMin = cs_ci; printf(iMax=%dn iMin=%dn,iMax,iMin);,82,93,69,0,73,iMax=cs_c0,iMin=cs_c 0,82,82,82,82,處理兩者復(fù)雜些: 問(wèn)題2:如何從這100個(gè)學(xué)生成績(jī)中查找最大值和最小值,include int i, iMax, iMin, cs_c100; printf(input 100 scores: n); for(i

6、= 0; i iMax) iMax = cs_ci; if(cs_ci iMin) iMin = cs_ci; printf(iMax=%dn iMin=%dn,iMax,iMin);,82,93,69,0,73,iMax=82,iMin=82,cs_c0=82,iMax=82,iMin=82,82,82,0,include int i, iMax, iMin, cs_c100; printf(input 100 scores: n); for(i = 0; i iMax) iMax = cs_ci; if(cs_ci iMin) iMin = cs_ci; printf(Max=%dn Mi

7、n=%dn,iMax,iMin);,82,93,69,0,73,iMax=93,iMin=0,cs_c99=73,iMax=93,iMin=0,93,0,99,Input 100 scores: 82 93 69 0 73 max=93 min=0,100,作用,引入數(shù)組,加強(qiáng)了我們處理(內(nèi)存中的)數(shù)據(jù)的能力,“增加了計(jì)算機(jī)的功能”。 計(jì)算機(jī)是工具,我們學(xué)習(xí)計(jì)算機(jī)是為了“掌握它的功能” 這種數(shù)據(jù)相對(duì)我們以前講的數(shù)據(jù),區(qū)別在于它們是“數(shù)據(jù)塊”,而非簡(jiǎn)單、獨(dú)立的,在定義數(shù)組的同時(shí),給各數(shù)組元素賦值 int a10=0,1,2,3,4,5,6,7,8,9; int a10=0,1,2,3,4;相當(dāng)于

8、 int a10=0,1,2,3,4,0,0,0,0,0; int a10=0,0,0,0,0,0,0,0,0,0;相當(dāng)于 int a10=0; int a5=1,2,3,4,5;可寫為 int a =1,2,3,4,5,一維數(shù)組的初始化,易出現(xiàn)的問(wèn)題,1. 定義時(shí)易出現(xiàn)的問(wèn)題,類型符 數(shù)組名常量表達(dá)式,常量表達(dá)式:表示數(shù)組元素的個(gè)數(shù)。可以是整型常量或符號(hào)常量,不允許使用變量,例如: int a5; (下標(biāo)是整型常量) int a2*3 (下標(biāo)是整型表達(dá)式,define M 6 void main() int aM; .,下標(biāo)是符號(hào)常量,易出現(xiàn)的問(wèn)題,2. 引用時(shí)易出現(xiàn)的問(wèn)題,元素的表示: 數(shù)

9、組名 下標(biāo),數(shù)組要先定義后引用,定義數(shù)組時(shí),內(nèi)要使用常量表達(dá)式;不能使用變量;引用數(shù)組元素時(shí),內(nèi)的整型表達(dá)式可以是已經(jīng)賦值的整型變量,下標(biāo)都是從零開(kāi)始,都不能越界,int i=0,a10; a6; a10; ai,說(shuō)明,如果在被調(diào)用的函數(shù)(不包括主函數(shù))中定義數(shù)組,其長(zhǎng)度可以是變量或非常量表達(dá)式。如: void func (int n) int a2*n; /合法,n的值從實(shí)參傳來(lái) 如果指定數(shù)組為靜態(tài)(static)存儲(chǔ)方式,則不能用“可變長(zhǎng)數(shù)組”。如: static int a2*n; /不合法,a數(shù)組指定為static,易出現(xiàn)的問(wèn)題,3. 初始化時(shí),對(duì)所有元素賦初值,可以不指定數(shù)組的長(zhǎng)度,

10、例如: int class5=20,30,40,50,60; 省略數(shù)組長(zhǎng)度 int class =20,30,40,50,60,兩種方式賦值后,數(shù)組元素的值分別是: class0=20, class1=30, class2=40, class3=50, class4=60,對(duì)數(shù)組中部分元素賦初值,數(shù)組長(zhǎng)度不能省略,易出現(xiàn)的問(wèn)題,3. 初始化時(shí),對(duì)數(shù)組中部分元素賦初值,數(shù)組長(zhǎng)度不能省略。 對(duì)所有元素賦初值,可以不指定數(shù)組的長(zhǎng)度,例如:(未賦值的部分元素自動(dòng)設(shè)為0) int class5=20,30,40 ; 省略數(shù)組長(zhǎng)度 int class =20,30,40; /花括號(hào)中有3個(gè)數(shù),確定a數(shù)組有

11、3個(gè)元素,兩種方式賦值后,數(shù)組元素的值分別是: class0=20, class1=30, class2=40, class3=0, class4=0,下面程序的輸出結(jié)果是_。 main() int a=1,8,2,8,3,8,4,8,5,8; printf(%d,%dn,a4+3,a4+3); A) 6,6 B)8,8 C) 6,8 D)8,6,一些材料來(lái)自其他同行,在此感謝,B,int main() int p8=11,12,13,14,15,16,17,18, i=0,j=0; while(i+7) if(pi%2) j+=pi; printf(%dn,j); 程序運(yùn)行后的輸出結(jié)果是_。

12、 A)42 B)45 C)56 D)60,一些材料來(lái)自其他同行,在此感謝,B,程序舉例 1,一些材料來(lái)自其他同行,在此感謝,查找,排序,插入,程序舉例,查找某個(gè)數(shù)在一個(gè)一維數(shù)組(長(zhǎng)度為5)中的位置,題目,include int i, a5, iNumber; printf(請(qǐng)輸入要查找的數(shù)字:); scanf(%d,查找算法的實(shí)現(xiàn),4,3,67,56,90,56,a0 = iNumber,56,4,不相等,include int i, a5, iNumber; printf(請(qǐng)輸入要查找的數(shù)字:); scanf(%d,4,3,67,56,90,56,a1 = iNumber,56,3,不相等,

13、查找算法的實(shí)現(xiàn),include int i, a5, iNumber; printf(請(qǐng)輸入要查找的數(shù)字:); scanf(%d,4,3,67,56,90,56,a2 = iNumber,56,67,不相等,查找算法的實(shí)現(xiàn),include int i, a5, iNumber; printf(請(qǐng)輸入要查找的數(shù)字:); scanf(%d,4,3,67,56,90,56,a3 = iNumber,56,56,相等,i = 3) 5,在數(shù)組的第4個(gè)位置找到了數(shù)字56,查找算法的實(shí)現(xiàn),用冒泡法對(duì)任意輸入的5個(gè)數(shù)字按照從小到大的順序排序輸出,題目,排序算法的實(shí)現(xiàn),程序舉例 2,查找,排序,插入,程序舉例

14、,用冒泡法對(duì)任意輸入的5個(gè)數(shù)字按照從小到大的順序排序輸出,題目,include int i, j, k, a5; printf(請(qǐng)任意輸入5個(gè)整數(shù):); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(輸出排序后的整數(shù): ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,排序算法的實(shí)現(xiàn),i = 0,j = 0,78,23,a0,a1,a2,a3,a4,6,10,48,include int i, j, k, a5; printf(請(qǐng)任意輸入5個(gè)整數(shù):); for(i = 0;

15、 i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(輸出排序后的整數(shù): ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 0,j = 1,a0,a1,a2,a3,a4,78,23,6,10,48,排序算法的實(shí)現(xiàn),include int i, j, k, a5; printf(請(qǐng)任意輸入5個(gè)整數(shù):); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(輸出排序后的整數(shù): ); for(i = 0; i 5; i+) print

16、f(%d ,ai); printf(n);,i = 0,j = 2,6,23,a0,a1,a2,a3,a4,78,10,48,排序算法的實(shí)現(xiàn),include int i, j, k, a5; printf(請(qǐng)任意輸入5個(gè)整數(shù):); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(輸出排序后的整數(shù): ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 0,j = 3,6,23,a0,a1,a2,a3,a4,78,48,10,排序算法的實(shí)現(xiàn),include int i, j

17、, k, a5; printf(請(qǐng)任意輸入5個(gè)整數(shù):); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(輸出排序后的整數(shù): ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 1,j = 0,48,a0,a1,a2,a3,a4,23,6,10,78,排序算法的實(shí)現(xiàn),include int i, j, k, a5; printf(請(qǐng)任意輸入5個(gè)整數(shù):); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf

18、(輸出排序后的整數(shù): ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 1,j = 1,48,a0,a1,a2,a3,a4,23,6,10,78,排序算法的實(shí)現(xiàn),include int i, j, k, a5; printf(請(qǐng)任意輸入5個(gè)整數(shù):); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(輸出排序后的整數(shù): ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 1,j = 2,a0,a1,a2,a3,a4

19、,23,48,78,10,6,排序算法的實(shí)現(xiàn),include int i, j, k, a5; printf(請(qǐng)任意輸入5個(gè)整數(shù):); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(輸出排序后的整數(shù): ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 2,j = 0,10,6,a0,a1,a2,a3,a4,23,48,78,排序算法的實(shí)現(xiàn),include int i, j, k, a5; printf(請(qǐng)任意輸入5個(gè)整數(shù):); for(i = 0; i aj+1)

20、k = aj; aj = aj + 1; aj + 1 = k; printf(輸出排序后的整數(shù): ); for(i = 0; i 5; i+) printf(%d ,ai); printf(n);,i = 2,j = 1,10,6,a0,a1,a2,a3,a4,23,48,78,排序算法的實(shí)現(xiàn),include int i, j, k, a5; printf(請(qǐng)任意輸入5個(gè)整數(shù):); for(i = 0; i aj+1) k = aj; aj = aj + 1; aj + 1 = k; printf(輸出排序后的整數(shù): ); for(i = 0; i 5; i+) printf(%d ,ai)

21、; printf(n);,i = 3,j = 0,10,6,a0,a1,a2,a3,a4,23,48,78,請(qǐng)任意輸入5個(gè)整數(shù):23 78 6 10 48 輸出排序后的整數(shù):6 10 23 48 78,排序算法的實(shí)現(xiàn),題目,程序舉例 3,查找,排序,插入,程序舉例,向一個(gè)數(shù)組按從小到大的順序輸入5個(gè)數(shù),再將另外一個(gè)數(shù)字插入到這個(gè)數(shù)組中,使得插入后的數(shù)組元素依然保持有序,題目,define N 5 int i, j, aN + 1, x; printf(請(qǐng)從小到大輸入5個(gè)整數(shù):); for(i = 0; i x) break; for(j = N; j i; j-) aj = aj - 1; a

22、i = x; printf(n 插入后的數(shù)組元素:n); for(i = 0; i N + 1; i+) printf(%d ,ai); printf(n,插入算法的實(shí)現(xiàn),五個(gè)整數(shù)存放到數(shù)組中,查找第一個(gè)大于要插入數(shù)的位置,將要插入的數(shù)保存到該位置,問(wèn)題: 1.如何用c語(yǔ)言把這個(gè)矩陣存儲(chǔ)到計(jì)算機(jī)中? 2.如何用c語(yǔ)言實(shí)現(xiàn)該矩陣的轉(zhuǎn)置,2 3 4 5 6,a,為什么要用二維數(shù)組,int a1; int a2; int a3; int a4; int a5; int a6,1 2 3 4 5 6,為什么要用二維數(shù)組,int a3=1,2,3,int b3=4,5,6,1 2 3 4 5 6,為什么

23、要用二維數(shù)組,特點(diǎn): 1.多個(gè)值,一個(gè)矩陣名; 2.行列按順序排列; 3.根據(jù)行列號(hào)就能區(qū)別開(kāi)不同的值; 4.數(shù)據(jù)類型相同,2 3 4 5 6,a,為什么要用二維數(shù)組,二維數(shù)組的定義,二維數(shù)組定義的一般形式,類型符 數(shù)組名常量表達(dá)式常量表達(dá)式,int a23,a01,a02,a10,a11,a12,a00,a01,a00,a02,a10,a11,a12,二維數(shù)組的引用,計(jì)算機(jī)中的,第1列 第2列 第3列,第1行 第2行,二維數(shù)組元素的存放順序:按行序優(yōu)先,二維數(shù)組元素的表示形式為: 數(shù)組名下標(biāo)下標(biāo),int a34=1,2,3,4,5,6,7,8,9,10,11,12; int a34=1,2,

24、3,4,5,6,7,8,9,10,11,12; int a34=1,5,9;等價(jià)于 int a34=1,0,0,0,5,0,0,0, 9,0,0,0; int a34=1,5,6;相當(dāng)于 int a34=1,5,6,0; int a34=1,2,3,4,5,6,7,8,9,10,11,12;等價(jià)于 int a 4=1,2,3,4,5,6,7,8,9,10,11,12; int a 4=0,0,3, ,0,10;合法,二維數(shù)組的初始化,include void main() int i, j, a23; printf(input array: n); for(i = 0; i 2; i+) fo

25、r(j = 0; j3; i+) scanf(%d,問(wèn)題1:如何用c語(yǔ)言把這個(gè)矩陣存儲(chǔ)到計(jì)算機(jī)中,1 2 3 4 5 6,main( ) int a23=1,2,3,4,5,6; int b32,i,j; printf(“array a:n”); for (i=0;i=1;i+) for(j=0;j=2,j+) printf(“%5d”,aij); bji=aij; printf(“n”); printf(“array b:n”); for (i=0;i=2;i+) for (j=0;j=1;j+) printf(“%5d”,bij); printf(“n”);,1 2 3 45 6,0 0,

26、1,問(wèn)題2:如何用c語(yǔ)言實(shí)現(xiàn)該矩陣的轉(zhuǎn)置,main( ) int a23=1,2,3,4,5,6; int b32,i,j; printf(“array a:n”); for (i=0;i=1;i+) for(j=0;j=2,j+) printf(“%5d”,aij); bji=aij; printf(“n”); printf(“array b:n”); for (i=0;i=2;i+) for (j=0;j=1;j+) printf(“%5d”,bij); printf(“n”);,1 2 3 45 6,0 0,1,問(wèn)題2:如何用c語(yǔ)言實(shí)現(xiàn)該矩陣的轉(zhuǎn)置,4,1 2 3 45 6,0 0,1,問(wèn)題2:如何用c語(yǔ)言實(shí)現(xiàn)該矩陣的轉(zhuǎn)置,4 2 5 3 6,array a: 1 2 3 4 5 6,array b: 1 4 2 5 3 6,易出現(xiàn)的問(wèn)題,1. 定義時(shí)易出現(xiàn)的問(wèn)題,類型符 數(shù)組名常量表達(dá)式常量表達(dá)式,常量表達(dá)式:表示數(shù)組元素的個(gè)數(shù),不允許使用變量,例如: int a56; int aij,易出現(xiàn)的問(wèn)題

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論