C語言程序設(shè)計(jì):第6章 數(shù)組.ppt
《C語言程序設(shè)計(jì):第6章 數(shù)組.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《C語言程序設(shè)計(jì):第6章 數(shù)組.ppt(55頁珍藏版)》請(qǐng)?jiān)趨R文網(wǎng)上搜索。
1、1第第6 6章數(shù)組章數(shù)組 6.1 6.1 一維數(shù)組一維數(shù)組 6.2 6.2 二維數(shù)組二維數(shù)組 6.3 6.3 字符數(shù)組與字符串字符數(shù)組與字符串 編寫程序時(shí)經(jīng)常會(huì)碰到需要存儲(chǔ)大量數(shù)據(jù)的情況,例如,某編寫程序時(shí)經(jīng)常會(huì)碰到需要存儲(chǔ)大量數(shù)據(jù)的情況,例如,某個(gè)班有個(gè)班有3030名學(xué)生,要求輸入名學(xué)生,要求輸入3030個(gè)學(xué)生的考試成績(jī)并計(jì)算平均個(gè)學(xué)生的考試成績(jī)并計(jì)算平均成績(jī),找出有多少個(gè)學(xué)生的成績(jī)高于平均成績(jī)。程序需要先成績(jī),找出有多少個(gè)學(xué)生的成績(jī)高于平均成績(jī)。程序需要先輸入這些數(shù)據(jù)并存儲(chǔ)起來,計(jì)算平均值后,然后用每個(gè)成績(jī)輸入這些數(shù)據(jù)并存儲(chǔ)起來,計(jì)算平均值后,然后用每個(gè)成績(jī)與平均值比較,統(tǒng)計(jì)大于平均值的數(shù)
2、的個(gè)數(shù)。如果直接使用與平均值比較,統(tǒng)計(jì)大于平均值的數(shù)的個(gè)數(shù)。如果直接使用前面的知識(shí),那么需要定義前面的知識(shí),那么需要定義3030個(gè)變量。從實(shí)際角度出發(fā),這個(gè)變量。從實(shí)際角度出發(fā),這是不可行的,所以需要有一種好的方式去管理和存儲(chǔ)大量數(shù)是不可行的,所以需要有一種好的方式去管理和存儲(chǔ)大量數(shù)據(jù)。據(jù)。包括包括C C語言在內(nèi)的高級(jí)語言都提供語言在內(nèi)的高級(jí)語言都提供數(shù)組數(shù)組來存儲(chǔ)大量數(shù)據(jù)。來存儲(chǔ)大量數(shù)據(jù)。(1 1)數(shù)組是一組有序數(shù)據(jù)的集合,這組數(shù)據(jù)擁有同一個(gè)名字,)數(shù)組是一組有序數(shù)據(jù)的集合,這組數(shù)據(jù)擁有同一個(gè)名字,稱為稱為數(shù)組名數(shù)組名。(2 2)數(shù)組中的一個(gè)數(shù)據(jù)稱為一個(gè)數(shù)組元素,每個(gè)元素都有唯)數(shù)組中的一個(gè)
3、數(shù)據(jù)稱為一個(gè)數(shù)組元素,每個(gè)元素都有唯一的編號(hào),稱為一的編號(hào),稱為下標(biāo)下標(biāo)。通過數(shù)組名和下標(biāo)可以唯一確定一個(gè)。通過數(shù)組名和下標(biāo)可以唯一確定一個(gè)元素。元素。(3 3)數(shù)組中所有元素的數(shù)據(jù)類型是相同的。不能把不同類型)數(shù)組中所有元素的數(shù)據(jù)類型是相同的。不能把不同類型的數(shù)據(jù)放在同一個(gè)數(shù)組中。的數(shù)據(jù)放在同一個(gè)數(shù)組中。6.1 6.1 6.1 6.1 一維數(shù)組一維數(shù)組一維數(shù)組一維數(shù)組一維數(shù)組是數(shù)組中最簡(jiǎn)單的,只需要數(shù)組名與一個(gè)下標(biāo)就能唯一維數(shù)組是數(shù)組中最簡(jiǎn)單的,只需要數(shù)組名與一個(gè)下標(biāo)就能唯一地確定數(shù)組元素。定義一維數(shù)組時(shí)需要說明:數(shù)組名、數(shù)組一地確定數(shù)組元素。定義一維數(shù)組時(shí)需要說明:數(shù)組名、數(shù)組元素的類型和
4、數(shù)組元素的個(gè)數(shù)。其一般形式如下:元素的類型和數(shù)組元素的個(gè)數(shù)。其一般形式如下:數(shù)據(jù)類型說明符數(shù)據(jù)類型說明符 數(shù)組名數(shù)組名 整型表達(dá)式整型表達(dá)式;例:例:int a10int a10說明:說明:(1)(1)數(shù)據(jù)類型說明符指定了數(shù)組中存放數(shù)據(jù)的數(shù)據(jù)類型。數(shù)據(jù)類型說明符指定了數(shù)組中存放數(shù)據(jù)的數(shù)據(jù)類型。(2)(2)數(shù)組名的命名規(guī)則與變量名相同,遵循標(biāo)識(shí)符命名規(guī)則。數(shù)組名的命名規(guī)則與變量名相同,遵循標(biāo)識(shí)符命名規(guī)則。(3)(3)數(shù)組名后面方括號(hào)中說明了數(shù)組可以存放的元素的個(gè)數(shù),數(shù)組名后面方括號(hào)中說明了數(shù)組可以存放的元素的個(gè)數(shù),通常是整型常量表達(dá)式。部分編譯器也允許整型變量,但要求通常是整型常量表達(dá)式。部分編
5、譯器也允許整型變量,但要求變量有確定的值。變量有確定的值。(4)(4)數(shù)組定義后,其下標(biāo)范圍也就確定了。起始下標(biāo)是數(shù)組定義后,其下標(biāo)范圍也就確定了。起始下標(biāo)是0 0,最大,最大下標(biāo)是數(shù)組元素個(gè)數(shù)減下標(biāo)是數(shù)組元素個(gè)數(shù)減1 1。一維數(shù)組的存儲(chǔ)一維數(shù)組的存儲(chǔ)例如語句:例如語句:int a10;int a10;定義了一個(gè)數(shù)組名為定義了一個(gè)數(shù)組名為a a的數(shù)組,其中可以存放的數(shù)組,其中可以存放1010個(gè)個(gè)intint類型數(shù)據(jù)。類型數(shù)據(jù)。通過定義,在內(nèi)存中分配了一段連續(xù)的內(nèi)存空間,這段內(nèi)存空通過定義,在內(nèi)存中分配了一段連續(xù)的內(nèi)存空間,這段內(nèi)存空間的起始地址存放在數(shù)組名中,內(nèi)存空間有間的起始地址存放在數(shù)組名
6、中,內(nèi)存空間有1010個(gè)存儲(chǔ)單元,每個(gè)存儲(chǔ)單元,每個(gè)存儲(chǔ)單元可以存放個(gè)存儲(chǔ)單元可以存放1 1個(gè)個(gè)intint類型數(shù)據(jù),該數(shù)組的下標(biāo)范圍是從類型數(shù)據(jù),該數(shù)組的下標(biāo)范圍是從0 0到到9 9。一維數(shù)組的引用一維數(shù)組的引用定義一維數(shù)組后就可以在程序中使用。定義一維數(shù)組后就可以在程序中使用。C C語言規(guī)定:只能引用數(shù)語言規(guī)定:只能引用數(shù)組的元素而不能一次引用整個(gè)數(shù)組和全部元素。組的元素而不能一次引用整個(gè)數(shù)組和全部元素。引用數(shù)組元素的一般形式如下:引用數(shù)組元素的一般形式如下:數(shù)組名數(shù)組名 下標(biāo)下標(biāo) 說明:說明:(1)(1)下標(biāo)是整型表達(dá)式,如果是浮點(diǎn)數(shù),則系統(tǒng)自動(dòng)去掉小數(shù)下標(biāo)是整型表達(dá)式,如果是浮點(diǎn)數(shù),則
7、系統(tǒng)自動(dòng)去掉小數(shù)部分。部分。(2)(2)下標(biāo)必須在合法的范圍之內(nèi),即在下標(biāo)必須在合法的范圍之內(nèi),即在0 0到元素個(gè)數(shù)減到元素個(gè)數(shù)減1 1之間。之間。如果下標(biāo)超出了合法范圍,稱為如果下標(biāo)超出了合法范圍,稱為下標(biāo)越界下標(biāo)越界,有可能會(huì)導(dǎo)致程序,有可能會(huì)導(dǎo)致程序運(yùn)行過程中發(fā)生錯(cuò)誤。運(yùn)行過程中發(fā)生錯(cuò)誤。(3)(3)一個(gè)數(shù)組元素的使用方式與同類型的簡(jiǎn)單變量相同。一個(gè)數(shù)組元素的使用方式與同類型的簡(jiǎn)單變量相同。例例6-16-1:從鍵盤輸入:從鍵盤輸入1010個(gè)整數(shù)存放到數(shù)組中,然后將該數(shù)組中元個(gè)整數(shù)存放到數(shù)組中,然后將該數(shù)組中元素進(jìn)行逆序排列,最后輸出數(shù)組的全部數(shù)據(jù)。素進(jìn)行逆序排列,最后輸出數(shù)組的全部數(shù)據(jù)。
8、思路分析:在程序定義一個(gè)能夠存放思路分析:在程序定義一個(gè)能夠存放1010個(gè)整數(shù)的數(shù)組,使用循個(gè)整數(shù)的數(shù)組,使用循環(huán)語句依次輸入每一個(gè)元素。對(duì)數(shù)組元素進(jìn)行逆序可以對(duì)數(shù)組環(huán)語句依次輸入每一個(gè)元素。對(duì)數(shù)組元素進(jìn)行逆序可以對(duì)數(shù)組的前一半元素進(jìn)行循環(huán),每次將第的前一半元素進(jìn)行循環(huán),每次將第i i個(gè)元素與其對(duì)應(yīng)的第個(gè)元素與其對(duì)應(yīng)的第9-i9-i個(gè)個(gè)元素進(jìn)行交換。最后再使用循環(huán)語句依次輸出所有元素。元素進(jìn)行交換。最后再使用循環(huán)語句依次輸出所有元素。#include#include#define N 10 /#define N 10 /數(shù)組元素的個(gè)數(shù)數(shù)組元素的個(gè)數(shù) int main()int main()in
9、t i,temp;int i,temp;int aN;/int aN;/定義數(shù)組定義數(shù)組 for(i=0;iN;i+)/for(i=0;iN;i+)/循環(huán)輸入循環(huán)輸入N N個(gè)整數(shù)個(gè)整數(shù) scanf(%d,&ai);/scanf(%d,&ai);/輸入第輸入第i i個(gè)元素個(gè)元素 for(i=0;i=(N-1)/2;i+)/for(i=0;i=(N-1)/2;i+)/循環(huán)進(jìn)行交換循環(huán)進(jìn)行交換 temp=ai;temp=ai;ai=aN-1-i;ai=aN-1-i;aN-1-i=temp;aN-1-i=temp;for(i=0;iN;i+)/for(i=0;iN;i+)/循環(huán)輸入循環(huán)輸入N N個(gè)整數(shù)
10、個(gè)整數(shù) printf(%d,ai);/printf(%d,ai);/輸出第輸出第i i個(gè)元素個(gè)元素 return 0;return 0;1 2 3 4 5 6 7 8 9 101 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 110 9 8 7 6 5 4 3 2 1一維數(shù)組的初始化一維數(shù)組的初始化定義數(shù)組的同時(shí)可以給數(shù)組的各個(gè)元素賦值,稱為數(shù)組的初始定義數(shù)組的同時(shí)可以給數(shù)組的各個(gè)元素賦值,稱為數(shù)組的初始化。對(duì)一維數(shù)組進(jìn)行初始化可以有以下幾種形式?;?。對(duì)一維數(shù)組進(jìn)行初始化可以有以下幾種形式。(1)(1)在定義數(shù)組時(shí),為數(shù)組全部元素賦予初值。例如:在定義數(shù)組時(shí),為數(shù)
11、組全部元素賦予初值。例如:int a10=1,2,3,4,5,6,7,8,9,10;int a10=1,2,3,4,5,6,7,8,9,10;(2)(2)定義數(shù)組時(shí),可以給數(shù)組的部分元素賦值。例如:定義數(shù)組時(shí),可以給數(shù)組的部分元素賦值。例如:int a10=1,2,3,4,5;int a10=1,2,3,4,5;(3)(3)對(duì)數(shù)組的全部元素賦初值時(shí),可以省略數(shù)組定義中的數(shù)組對(duì)數(shù)組的全部元素賦初值時(shí),可以省略數(shù)組定義中的數(shù)組長(zhǎng)度。例如:長(zhǎng)度。例如:int a=1,2,3,4,5,6,7,8,9,10;int a=1,2,3,4,5,6,7,8,9,10;例例6-26-2:使用數(shù)組存放:使用數(shù)組存
12、放FibonacciFibonacci數(shù)列的前數(shù)列的前2020項(xiàng),輸出時(shí)每行輸項(xiàng),輸出時(shí)每行輸出出5 5個(gè)數(shù)。個(gè)數(shù)。思路分析:使用數(shù)組來存儲(chǔ)處理思路分析:使用數(shù)組來存儲(chǔ)處理FibonacciFibonacci數(shù)列,在概念上要更數(shù)列,在概念上要更加簡(jiǎn)潔和清晰,計(jì)算過程也更加容易理解。首先定義一個(gè)可以加簡(jiǎn)潔和清晰,計(jì)算過程也更加容易理解。首先定義一個(gè)可以存放存放2020個(gè)整數(shù)的數(shù)組,令該數(shù)組的前個(gè)整數(shù)的數(shù)組,令該數(shù)組的前2 2個(gè)元素值為個(gè)元素值為1 1,然后循環(huán),然后循環(huán)計(jì)算后面的每個(gè)數(shù)就可以了。計(jì)算后面的每個(gè)數(shù)就可以了。#include#include int main()int main()i
13、nt i;int i;int fib20=1,1;/int fib20=1,1;/定義數(shù)組并初始化前定義數(shù)組并初始化前2 2項(xiàng)項(xiàng) for(i=for(i=2 2;i;i2020;i+)/;i+)/循環(huán)計(jì)算數(shù)列的每循環(huán)計(jì)算數(shù)列的每1 1項(xiàng)項(xiàng) fibi=fibi-2+fibi-1;fibi=fibi-2+fibi-1;for(i=for(i=0 0;i;i2020;i+)/;i+)/循環(huán)輸出數(shù)列的每循環(huán)輸出數(shù)列的每1 1項(xiàng)項(xiàng) printf(%6d,fibi);printf(%6d,fibi);if(i+1)%5=0)printf(n);if(i+1)%5=0)printf(n);return 0;
14、return 0;1 1 2 3 5 1 1 2 3 5 8 13 21 34 55 8 13 21 34 55 89 144 233 377 610 89 144 233 377 610 987 1597 2584 4181 6765 987 1597 2584 4181 6765例例6-36-3:從鍵盤輸入:從鍵盤輸入1010個(gè)整數(shù),統(tǒng)計(jì)其中最大值出現(xiàn)次數(shù)。個(gè)整數(shù),統(tǒng)計(jì)其中最大值出現(xiàn)次數(shù)。思路分析:解決該問題首先要從鍵盤上輸入多個(gè)數(shù)據(jù)并存儲(chǔ)到思路分析:解決該問題首先要從鍵盤上輸入多個(gè)數(shù)據(jù)并存儲(chǔ)到數(shù)組中。接下來需要解決兩個(gè)問題,第一是要數(shù)組中。接下來需要解決兩個(gè)問題,第一是要找到數(shù)組中的最找
15、到數(shù)組中的最大值大值是什么;第二是是什么;第二是統(tǒng)計(jì)該最大值共出現(xiàn)了多少次統(tǒng)計(jì)該最大值共出現(xiàn)了多少次。假設(shè)法假設(shè)法:先假設(shè)下標(biāo)為:先假設(shè)下標(biāo)為0 0的元素是最大值,然后循環(huán)依次比較每的元素是最大值,然后循環(huán)依次比較每個(gè)元素與最大值的關(guān)系,如果當(dāng)前元素的值更大,把最大值更個(gè)元素與最大值的關(guān)系,如果當(dāng)前元素的值更大,把最大值更新為當(dāng)前數(shù)組元素。循環(huán)結(jié)束后,就得到了數(shù)組的最大值。新為當(dāng)前數(shù)組元素。循環(huán)結(jié)束后,就得到了數(shù)組的最大值。尋尋找數(shù)組的最小值的方法是類似的。找數(shù)組的最小值的方法是類似的。統(tǒng)計(jì)在數(shù)組中與變量統(tǒng)計(jì)在數(shù)組中與變量valuevalue的值相同的元素的個(gè)數(shù),從下標(biāo)為的值相同的元素的個(gè)數(shù),
16、從下標(biāo)為0 0數(shù)組元素開始循環(huán),依次比較每個(gè)元素是否與數(shù)組元素開始循環(huán),依次比較每個(gè)元素是否與valuevalue相等,每找相等,每找到一個(gè)相同的元素,計(jì)數(shù)變量就增加到一個(gè)相同的元素,計(jì)數(shù)變量就增加1 1。#include#include int main()int main()int i,max,count;int i,max,count;int a10;int a10;for(i=0;i10;i+)for(i=0;i10;i+)scanf(%d,&ai);scanf(%d,&ai);max=a0;/max=a0;/設(shè)設(shè)a0a0是當(dāng)前最大值是當(dāng)前最大值 for(i=1;i10;i+)for(
- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
30 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- C語言程序設(shè)計(jì):第6章 數(shù)組 語言程序設(shè)計(jì)