計(jì)算機(jī)程序設(shè)計(jì):第9講數(shù)組(上)_第1頁
計(jì)算機(jī)程序設(shè)計(jì):第9講數(shù)組(上)_第2頁
計(jì)算機(jī)程序設(shè)計(jì):第9講數(shù)組(上)_第3頁
計(jì)算機(jī)程序設(shè)計(jì):第9講數(shù)組(上)_第4頁
計(jì)算機(jī)程序設(shè)計(jì):第9講數(shù)組(上)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1 第9講 數(shù)組(上)2 快速學(xué)習(xí)C+的途徑3 -C+語言數(shù)據(jù)類型語言數(shù)據(jù)類型老子曰:道生一、一生二、二生三、三生萬物老子曰:道生一、一生二、二生三、三生萬物基本類型基本類型構(gòu)造類型構(gòu)造類型指針類型指針類型空類型空類型整型整型 字符型字符型實(shí)型實(shí)型 枚舉類型枚舉類型(浮點(diǎn)型浮點(diǎn)型)單精度型單精度型 雙精度型雙精度型數(shù)組類型數(shù)組類型 結(jié)構(gòu)體類型結(jié)構(gòu)體類型 共用體類型共用體類型數(shù)據(jù)類型數(shù)據(jù)類型4 普遍規(guī)則l學(xué)習(xí)一種新的數(shù)據(jù)類型時(shí),需要問自己問自己如下問題 如何定義 如何初始化 如何引用 為什么要引入該數(shù)據(jù)類型為什么要引入該數(shù)據(jù)類型?5 本講主要內(nèi)容l為什么要引入數(shù)組?l一維數(shù)組定義、初始化和引用l

2、二維數(shù)組定義、初始化和引用l程序的調(diào)試方法*參考教材的第5.1-5.3節(jié)6 9.1 為啥要引入數(shù)組為啥要引入數(shù)組p話說上回犀利哥在家借酒澆愁,憤憤自語話說上回犀利哥在家借酒澆愁,憤憤自語:“:“哥喝哥喝的不是酒而是寂寞的不是酒而是寂寞”。然而。然而“神馬都是浮云神馬都是浮云”,悲,悲憤之后便是喜悅。天仙妹傷好出院,犀利哥歡天喜憤之后便是喜悅。天仙妹傷好出院,犀利哥歡天喜地。為了表示慶賀,決定從家里地。為了表示慶賀,決定從家里10001000只羊群中選一只羊群中選一只最肥的羊宴請?zhí)煜擅妹?。再然而只最肥的羊宴請?zhí)煜擅妹?。再然? ,犀利哥由喜變愁犀利哥由喜變愁: :如何記錄每只羊的重量呢如何記錄每

3、只羊的重量呢? ? 需要定義需要定義10001000個(gè)變量個(gè)變量(a1,a2.)(a1,a2.)嗎嗎? ? 如何找到最肥的羊呢?如何找到最肥的羊呢?p分析:分析:(1 1)如何表示相同類型的序列數(shù)據(jù);)如何表示相同類型的序列數(shù)據(jù);(2 2)如何實(shí)現(xiàn))如何實(shí)現(xiàn)10001000次比較操作?次比較操作?7 max = 0.0; 將記錄最重的羊的重量置0 for ( i=0; i1000; i=i+1 ) 提示輸入第i 只羊的重量; 鍵入第i 只羊的重量 sheepi; max sheepi 是 否 max = sheepi; k = i; 存重者,記錄第i 只。 輸出 max ( 最重的羊的重量 )

4、 輸出 k ( 最重的羊是第k 只 ) 實(shí)例:用鍵盤輸入實(shí)例:用鍵盤輸入1000只羊的重量,并找出最大的羊只羊的重量,并找出最大的羊生活小常識生活小常識如果你去食堂買如果你去食堂買4樣樣菜,是使用獨(dú)立菜,是使用獨(dú)立4只只碗,還是用一個(gè)有碗,還是用一個(gè)有4個(gè)坑位的盤子?個(gè)坑位的盤子?8 #include #include Int main()Int main()float sheep1000; float sheep1000; /數(shù)組定義數(shù)組定義, ,相當(dāng)于定義相當(dāng)于定義10001000個(gè)變量個(gè)變量 float max; float max;int i,k; int i,k; max=0.0;

5、max=0.0; for ( i=0; i1000; i=i+1 ) for ( i=0; i1000; i=i+1 ) printf(“printf(“請輸入羊的重量請輸入羊的重量sheep%d=”, i);sheep%d=”, i); scanf(“%f”, &(sheepi); scanf(“%f”, &(sheepi); /數(shù)組的使用數(shù)組的使用, ,元素單個(gè)使用元素單個(gè)使用if ( max if ( max sheepisheepi ) ) max = sheepi; max = sheepi; /數(shù)組的使用數(shù)組的使用 k=i;k=i; /數(shù)組的使用數(shù)組的使用print

6、f(“max=%fn”, max);printf(“max=%fn”, max);printf(“number=%dn”, k);printf(“number=%dn”, k);return 0return 0; p 提問:提問:如不用數(shù)組,程序如何寫?獨(dú)立定義如不用數(shù)組,程序如何寫?獨(dú)立定義1000個(gè)變量是個(gè)變量是否可以用循環(huán)結(jié)構(gòu)?否可以用循環(huán)結(jié)構(gòu)?9 9.1、數(shù)組的定義、數(shù)組的定義l數(shù)組的定義:數(shù)組的定義:類型說明符類型說明符數(shù)組名數(shù)組名 常量表達(dá)式常量表達(dá)式 l例:例:float sheep10; /float sheep10; /相當(dāng)于定義了相當(dāng)于定義了1010個(gè)變量;個(gè)變量; int

7、 a5; / int a5; /相當(dāng)定義了相當(dāng)定義了a0, a1, a2, a3, a4l說明說明 數(shù)組名的第一個(gè)字符應(yīng)為英文字母;數(shù)組名的第一個(gè)字符應(yīng)為英文字母; 用方括號將用方括號將常量表達(dá)式常量表達(dá)式括起;括起; 常量表達(dá)式定義了數(shù)組元素的個(gè)數(shù);常量表達(dá)式定義了數(shù)組元素的個(gè)數(shù); 定義形式的常量表達(dá)式中不允許包含變量定義形式的常量表達(dá)式中不允許包含變量;l例如例如 int n;int n; n = 5; n = 5;int an;int an;不合法!不合法! a 下標(biāo)下標(biāo) 0 1 2 3 4 10 9.1、數(shù)組的定義、數(shù)組的定義n數(shù)組的本質(zhì)特征數(shù)組的本質(zhì)特征300301302298299

8、11 9.2、數(shù)組的引用、數(shù)組的引用nC+C+語言規(guī)定,不能引用整個(gè)數(shù)組,只能逐個(gè)引用語言規(guī)定,不能引用整個(gè)數(shù)組,只能逐個(gè)引用元素,元素引用方式:元素,元素引用方式:數(shù)組名數(shù)組名 下標(biāo)下標(biāo) n在引用時(shí)表達(dá)式中可以包含變量在引用時(shí)表達(dá)式中可以包含變量n 例例 使數(shù)組元素使數(shù)組元素a0a0a9a9的值為的值為0 09 9,然后逆,然后逆序輸出序輸出int main()int i,a10; /數(shù)組的定義 for (i=0;i=0; i-) printf(%d ,ai);p 數(shù)組的奧秘之處就是可采數(shù)組的奧秘之處就是可采用循環(huán)變量通過下標(biāo)來引用循環(huán)變量通過下標(biāo)來引用數(shù)組元素用數(shù)組元素12 n初始化初始化

9、: :在定義時(shí)指定初始值,編譯器把初值賦給數(shù)組變量在定義時(shí)指定初始值,編譯器把初值賦給數(shù)組變量n賦值賦值: :在程序運(yùn)行時(shí),使用賦值語句把值賦給數(shù)組變量,如在程序運(yùn)行時(shí),使用賦值語句把值賦給數(shù)組變量,如a0 = 2a0 = 2 a 3 5 4 1 2 下標(biāo)下標(biāo) 0 1 2 3 4 13 9.3、數(shù)組的初始化、數(shù)組的初始化l一般初始化,例:一般初始化,例:int a10 = 0,1,2,3,4,5,6,7,8,9int a10 = 0,1,2,3,4,5,6,7,8,9; l部分元素初始化,例:部分元素初始化,例:int a10 = 0,1,2,3,4int a10 = 0,1,2,3,4;僅前

10、僅前5 5個(gè)元素賦初值,后面默認(rèn)為個(gè)元素賦初值,后面默認(rèn)為0 0l全部元素均初始化為全部元素均初始化為0 0int a10 = 0,0,0,0,0,0,0,0,0,0;int a10 = 0,0,0,0,0,0,0,0,0,0;注意:不給數(shù)組指定初始值時(shí),編譯器作如下處理:注意:不給數(shù)組指定初始值時(shí),編譯器作如下處理:(1 1)編譯器自動(dòng)把靜態(tài)數(shù)組的各元素初始化為)編譯器自動(dòng)把靜態(tài)數(shù)組的各元素初始化為0 0。(2 2)編譯器不為動(dòng)態(tài)數(shù)組自動(dòng)指定初始值。)編譯器不為動(dòng)態(tài)數(shù)組自動(dòng)指定初始值。 l如果全部元素均指定初值,定義中可省略元素個(gè)數(shù):如果全部元素均指定初值,定義中可省略元素個(gè)數(shù): int a

11、5 = 1,2,3,4,5; int a5 = 1,2,3,4,5;可以寫為:可以寫為:int a = 1,2,3,4,5; int a = 1,2,3,4,5; 14 9.3、數(shù)組的初始化、數(shù)組的初始化算法重點(diǎn):對比算法重點(diǎn):對比Fibonacci3種解法:遞推法、遞歸法和數(shù)組法種解法:遞推法、遞歸法和數(shù)組法15 2.4.5邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式(回顧)(回顧)16 應(yīng)用舉例l窮舉法17 應(yīng)用舉例注意:編譯鏈接成功不等于沒有語法錯(cuò)誤注意:編譯鏈接成功不等于沒有語法錯(cuò)誤18 火眼金睛查錯(cuò)誤19 應(yīng)用舉例20 附:程序的調(diào)試21 逐語句調(diào)試:F1122 逐語句調(diào)試:F112

12、3 逐語句調(diào)試:F1124 逐語句調(diào)試:F1125 逐語句調(diào)試:F1126 逐語句調(diào)試:F1127 9.4 二維數(shù)組提問:編寫程序完成提問:編寫程序完成a*b,怎么辦怎么辦?如何表示如何表示a 和和b?28 9.4 二維數(shù)組p定義形式: 類型說明符 數(shù)組名常量表達(dá)式常量表達(dá)式p例:例:int a23;int a23; a a為為2 23(23(2行行3 3列列) )的數(shù)組,共的數(shù)組,共6 6個(gè)個(gè)元素元素p注意:排列(存儲)順序,先列注意:排列(存儲)順序,先列后行后行p下標(biāo)變化,下標(biāo)變化,即二維數(shù)組中元素的即二維數(shù)組中元素的引用引用29 9.4 三維數(shù)組p三維數(shù)組:三維數(shù)組:float a23

13、4float a234在內(nèi)存中的存放順序在內(nèi)存中的存放順序:a000a001a002a003a010a011a012a013a020a021a022a023a100a101a102a103a110a111a112a113a120a121a122a12330 9.4 二維數(shù)組的初始化p分行賦值如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;p全部數(shù)據(jù)寫在一個(gè)大括號內(nèi)如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;p部分元素賦值如:static int a34=1,5,9;僅對a00、a10、a20賦值,其余元素未賦值(對于靜態(tài)數(shù)組

14、,編譯器自動(dòng)為未賦值元素指定初值0。p如果對全部元素賦初值,則第一維的長度可以不指定,但必須指定第二維的長度如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;與下面定義等價(jià):static int a 4=1,2,3,4,5,6,7,8,9,10,11,12;31 9.4二維數(shù)組的二維數(shù)組的應(yīng)用舉例應(yīng)用舉例l 例例 將一個(gè)二維數(shù)組行和列交換,存到將一個(gè)二維數(shù)組行和列交換,存到另一個(gè)二維數(shù)組中。例如另一個(gè)二維數(shù)組中。例如32 9.4二維數(shù)組的二維數(shù)組的應(yīng)用舉例應(yīng)用舉例33 斷點(diǎn)調(diào)試:F534 斷點(diǎn)調(diào)試:F535 斷點(diǎn)調(diào)試:F536 9.4二維數(shù)組的二維數(shù)組的應(yīng)

15、用舉例應(yīng)用舉例l例有一個(gè)34的矩陣,要求編程序以求出其中值最大的那個(gè)元素的值及其所在的行號和列號。l算法:“打擂臺”,首先把第一個(gè)元素a00作為臨時(shí)最大值max,然后把臨時(shí)最大值max與每一個(gè)元素aij進(jìn)行比較,若aijmax,把a(bǔ)ij作為新的臨時(shí)最大值,并記錄下其下標(biāo)i和j。當(dāng)全部元素比較完后,max是整個(gè)矩陣全部元素的最大值37 9.4二維數(shù)組的二維數(shù)組的應(yīng)用舉例應(yīng)用舉例38 9.4二維數(shù)組的二維數(shù)組的應(yīng)用舉例應(yīng)用舉例39 本講重點(diǎn)l數(shù)組的內(nèi)涵:整體定義、連續(xù)存儲(地址表示)、逐個(gè)引用(循環(huán)語句)l數(shù)組的定義和引用格式l數(shù)組解題思路l逐過程和斷點(diǎn)調(diào)試的使用方法40 第8次實(shí)驗(yàn)練習(xí)l本次共本

16、次共2 2題。提交截止時(shí)間為第題。提交截止時(shí)間為第1111周末。周末。l第第1 1題:犀利哥故事之十一:題:犀利哥故事之十一:喜結(jié)良緣喜結(jié)良緣 話說犀利哥對天仙妹妹的一片真情,終于打動(dòng)了天仙妹話說犀利哥對天仙妹妹的一片真情,終于打動(dòng)了天仙妹妹及其父母。妹及其父母?!敖鹫\所致,金石為開金誠所致,金石為開”。父母同意不要。父母同意不要彩禮了,只求得有一個(gè)良辰吉日,將兩人的婚禮給辦了彩禮了,只求得有一個(gè)良辰吉日,將兩人的婚禮給辦了。犀利哥非常感動(dòng),決定從。犀利哥非常感動(dòng),決定從199199只羊中挑出最大只羊中挑出最大1010只,送只,送給岳父岳母。如何選拔這給岳父岳母。如何選拔這1010只最肥的羊,

17、請同學(xué)幫忙使只最肥的羊,請同學(xué)幫忙使用至少用至少2 2種不同算法編程。種不同算法編程。提示提示: :羊的重量可以采用隨機(jī)羊的重量可以采用隨機(jī)函數(shù)函數(shù)RAND()RAND()來產(chǎn)生來產(chǎn)生 另外:使用斷點(diǎn)調(diào)試,截獲保存另外:使用斷點(diǎn)調(diào)試,截獲保存“最大最大1010只羊只羊”數(shù)組的數(shù)組的調(diào)試窗口圖,并在作業(yè)中提交調(diào)試窗口圖,并在作業(yè)中提交41 網(wǎng)絡(luò)版的函數(shù)使用說明網(wǎng)絡(luò)版的函數(shù)使用說明百度百度查找查找42 聯(lián)機(jī)幫助版函數(shù)使用說明聯(lián)機(jī)幫助版函數(shù)使用說明幫助幫助索引索引查找查找43 第8次實(shí)驗(yàn)練習(xí)第第2題:利用高斯題:利用高斯(Gauss)消去法求解線性代數(shù)方程組(求解方法見消去法求解線性代數(shù)方程組(求解

18、方法見下頁)。具體要求:編寫程序來求解下列線性代數(shù)方程組,其中下頁)。具體要求:編寫程序來求解下列線性代數(shù)方程組,其中系數(shù)矩陣與常數(shù)向量利用初始化賦初值。要求輸出系數(shù)矩陣與常系數(shù)矩陣與常數(shù)向量利用初始化賦初值。要求輸出系數(shù)矩陣與常數(shù)向量。輸出形式為數(shù)向量。輸出形式為MAT A= 1.1161 0.1254 0.1397 0.1490 0.1582 1.1675 0.1768 0.1871 0.2368 0.2471 0.2568 1.2671 0.1968 0.2071 1.2168 0.2271MAT B= 1.5471 1.6471 1.8471 1.7471結(jié)果輸出形式為結(jié)果輸出形式為 x(1)=具體值具體值 x(2)=具體值具體值 x(3)=具體值具體值 x(4)=具體值具體值7471. 1x2271. 0 x2168. 1x2071. 0 x1968. 08471. 1x2671. 1x2568. 0 x2471. 0 x2368. 06471. 1x1871. 0 x1768. 0 x1675. 1x1582. 05471. 1x1490. 0 x1397. 0 x1254. 0 x1161. 143214321432

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論