版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章同類型數(shù)據(jù)集合主要內(nèi)容數(shù)組與數(shù)組元素、一維數(shù)組、二維數(shù)組、多維數(shù)組、字符數(shù)組字符串處理函數(shù)指向字符串的指針變量5.1數(shù)組與數(shù)組元素的概念 由若干類型相同的數(shù)據(jù)按一定順序存儲(chǔ)所形成的有序集合,稱為數(shù)組(Array)。通常,用某個(gè)名字標(biāo)識(shí)這個(gè)集合,這個(gè)名字稱為數(shù)組名。構(gòu)成數(shù)組的每個(gè)數(shù)據(jù)項(xiàng)稱為數(shù)組的元素(Element),同一數(shù)組中的元素必須具有相同的數(shù)據(jù)類型。數(shù)組定義的一般形式為:
類型標(biāo)識(shí)符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]……;(1)數(shù)組的下標(biāo)必須使用整型常量或整型常量表達(dá)式。C語言中不允許用變量作為下標(biāo),對(duì)數(shù)組進(jìn)行動(dòng)態(tài)定義。例如, #defineN10 intnScore[N];
intn=3; intnScore[n];/*不正確的定義方式*/ (2)C語言規(guī)定數(shù)組的下標(biāo)都是從0開始的。 (3)數(shù)組的存儲(chǔ)結(jié)構(gòu):數(shù)組一經(jīng)定義,系統(tǒng)則根據(jù)數(shù)組的數(shù)據(jù)類型為每一個(gè)元素安排相同長度的、連續(xù)的存儲(chǔ)單元,而且,C語言的數(shù)組在內(nèi)存中是按行存放的,即存完第一行后存第二行,然后存第三行,······,以此類推。 (4)用sizeof來計(jì)算類型長度。
說明(1)數(shù)組名命名規(guī)則和變量名相同,遵循標(biāo)識(shí)符命名規(guī)則。(2)數(shù)組名后是用方括弧括起來的常量表達(dá)式,不能用圓括弧。下面用法不對(duì):如inta(10);是不對(duì)的。(3)常量表達(dá)式表示元素的個(gè)數(shù),即數(shù)組長度。(4)常量表達(dá)式中可以包括普通常量和符號(hào)常量,不能包含變量。也就是說,C不允許對(duì)數(shù)組的大小作動(dòng)態(tài)定義,即數(shù)組的大小不依賴于程序運(yùn)行過程中變量的值。
說明例5-1查看數(shù)組nArray[10]的內(nèi)存占用情況。
問題分析通過不同的輸出方式,能夠看到數(shù)組名(nArray)和&數(shù)組元素(&nArray[0])等表示的含義。數(shù)組名nArray表示數(shù)組的首地址,同數(shù)組nArray[0]的地址相同。不同的數(shù)組類型在內(nèi)存中占有的字節(jié)數(shù)不同。
程序?qū)崿F(xiàn)5.2.2一維數(shù)組的初始化1.在數(shù)組定義時(shí)初始化數(shù)據(jù)類型數(shù)組名[數(shù)組元素個(gè)數(shù)]={值1,值2,…,值n};或數(shù)據(jù)類型數(shù)組名[]={值1,值2,…,值n};2.用賦值語句初始化用賦值語句初始化是在程序執(zhí)行時(shí)實(shí)現(xiàn)的。例5-2用賦值語句初始化數(shù)組nNum[10],然后按逆序輸出數(shù)組nNum[10]中元素。
問題分析輸入一組數(shù),值為0~9,然后按逆序輸出。
程序?qū)崿F(xiàn)5.2.4一維數(shù)組程序舉例
例5-4編寫程序,每名學(xué)生有四門課考試成績,用一維數(shù)組實(shí)現(xiàn)計(jì)算每個(gè)學(xué)生的平均成績。
問題分析由于該例題只要求計(jì)算平均成績,因此可以用4個(gè)整型數(shù)組存放數(shù)學(xué)、物理、英語和計(jì)算機(jī)的成績,用一個(gè)實(shí)型數(shù)組存放每個(gè)學(xué)生的平均成績。程序可按如下步驟實(shí)現(xiàn):1)輸入數(shù)據(jù),把數(shù)學(xué)、物理、英語、計(jì)算機(jī)成績分別存放在數(shù)組nMath,nPhysics,nEnglish,nComputer中。2)計(jì)算平均成績,將結(jié)果放在dAverage數(shù)組中。3)輸出結(jié)果。
解決方案5.3相同類型數(shù)據(jù)的二維及多維存儲(chǔ)5.3.1二維數(shù)組的定義
二維數(shù)組定義的一般形式是:
類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];二維數(shù)組在內(nèi)存中的存儲(chǔ):
問題分析可設(shè)一個(gè)二維數(shù)組nScore[5][3]存放五個(gè)人三門課的成績。再設(shè)一個(gè)一維數(shù)組nAver[3]存放所求得各科平均成績,設(shè)變量nAverage為全組各科總平均成績。
程序?qū)崿F(xiàn)5.3.3二維數(shù)組元素的引用二維數(shù)組引用的一般形式是:
數(shù)組名[下標(biāo)1][下標(biāo)2];例5-6一個(gè)電腦公司銷售兩種規(guī)格的磁盤:3英寸和5英寸,每一片磁盤可以有以下4種容量:單面雙密;雙面雙密;單面高密;雙面高密。用一個(gè)二維表格可以很好的表述磁盤的價(jià)格。要求將表格存入一個(gè)二維數(shù)組,并按表格的行列格式實(shí)現(xiàn)表格的分行打印。
問題分析可以使用多個(gè)賦值語句,完成把這些價(jià)格存入一個(gè)表格的任務(wù)。用嵌套for循環(huán)打印輸出結(jié)果。輸出時(shí)用轉(zhuǎn)移字符’\t’控制對(duì)齊,行號(hào)變化時(shí)必須插入一個(gè)’\n’以輸出回車換行。為了在輸出中增添描述性標(biāo)題,只需簡單地在首行數(shù)值打印之前打印一行標(biāo)題,在首列數(shù)值打印前打印一列標(biāo)題即可。
程序?qū)崿F(xiàn)5.3.4多維數(shù)組的初始化和引用 (1)多維數(shù)組的定義及初始化類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]…[常量表達(dá)式n];(2)多維數(shù)組的引用數(shù)組名[e1][e2][e3];5.3.5數(shù)組程序舉例
例5-7有一個(gè)3×4的矩陣,編寫程序找出值為最大的元素及其所在的行號(hào)和列號(hào)。
問題分析對(duì)于矩陣,用二維數(shù)組來描述會(huì)很方便。求矩陣中值最大的元素,可以這樣實(shí)現(xiàn):定義一個(gè)變量nMax并初始化為nArr[0][0],用雙重循環(huán)訪問矩陣中所有的元素,將每個(gè)元素和nMax相比較,用大于nMax值的元素替換nMax中原有的值,同時(shí)記錄下來該元素的行列下標(biāo)。循環(huán)結(jié)束后,輸出nMax和所記錄的下標(biāo)值。該問題解決方法可以用下面的流程圖5-14來表示。
解決方案5.4字符類型數(shù)據(jù)集合的存儲(chǔ)用來存放字符的數(shù)組稱為字符數(shù)組。字符數(shù)組允許在類型說明時(shí)作初始化賦值。如,
charc[10]={'c','','p','r','o','g','r','a','m'}; 賦值后c[0]~c[8]分別被賦值,c[9]未賦值,由系統(tǒng)自動(dòng)賦予0值。當(dāng)對(duì)全體元素賦初值時(shí),也可以省去長度說明。如,
charc[]={'c','','p','r','o','g','r','a','m'};這時(shí)C數(shù)組的長度自動(dòng)定為9。
注意:字符串整體輸入/輸出時(shí)(1)輸出字符不包括’\0’(2)輸出字符串時(shí),輸出項(xiàng)是字符數(shù)組名,輸出時(shí)遇到‘\0’結(jié)束;(3)輸入多個(gè)字符串時(shí),以空格分隔;輸入單個(gè)字符串時(shí)其中不能有空格。(4)C語言允許用字符串的方式對(duì)數(shù)組作初始化賦值。例如:charc[]={'c','','p','r','o','g','r','a','m'};可寫為:charc[]={"Cprogram"};或去掉{}寫為:charc[]="Cprogram";
例5-8字符數(shù)組和字符串的的初始化和輸出。
程序?qū)崿F(xiàn)2.字符串輸入函數(shù)gets()原型:char*gets(char*string);頭文件:#include<stdio.h>功
能:從終端輸入一個(gè)字符串到內(nèi)存中指定地址參數(shù):輸入字符串在內(nèi)存中的存儲(chǔ)地址指針說明:返回值為字符數(shù)組的起始地址gets(字符數(shù)組名);一般形式:例5-10gets()函數(shù)簡單應(yīng)用舉例。
程序?qū)崿F(xiàn)3.字符串連接函數(shù)strcat()原型:char*strcat(char*dest,char*src);頭文件:#include<string.h>功能:把src所指字符串添加到dest結(jié)尾處(覆蓋dest結(jié)尾處的'\0')并添加'\0'參數(shù):dest-合并時(shí)的目標(biāo)字符串,src-合并時(shí)的追加到目標(biāo)字符串上的源字符串說明:src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納 src的字符串,返回指向dest的指針。strcat(字符數(shù)組名1,字符數(shù)組名2);一般形式:
注意:本程序把初始化賦值的字符數(shù)組與動(dòng)態(tài)賦值的字符串連接起來。要注意的是,字符數(shù)組1應(yīng)定義足夠的長度,否則不能全部裝入被連接的字符串。
5.字符串比較函數(shù)strcmp()原型:intstrcmp(char*s1,char*s2);頭文件:#include<string.h>
功能:比較字符串s1和s2。參數(shù):s1-第1個(gè)字符串,s2-第2個(gè)字符串說明:當(dāng)s1<s2時(shí),返回值<0當(dāng)s1=s2時(shí),返回值=0當(dāng)s1>s2時(shí),返回值>0strcmp(字符數(shù)組名1,字符數(shù)組名2);一般形式:例5-13strcmp()函數(shù)簡單應(yīng)用舉例。
本程序中把輸入的字符串和數(shù)組st2中的串比較,比較結(jié)果返回到k中,根據(jù)k值再輸出結(jié)果提示串。當(dāng)輸入為dbase時(shí),由ASCII碼可知“dBASE”大于“CLanguage”故k>0,輸出結(jié)果“st1>st2”。
程序?qū)崿F(xiàn)5.測(cè)字符串長度函數(shù)strlen()
原型:intstrlen(const
charstring[]);頭文件:#include<string.h>
功能:統(tǒng)計(jì)字符串string中字符的個(gè)數(shù)。參數(shù):字符數(shù)組名說明:所計(jì)算的字符串長度不包括’\0’在內(nèi)。strlen(字符數(shù)組名);一般形式:5.7綜合應(yīng)用實(shí)例問題描述:學(xué)生成績檔案管理要對(duì)學(xué)生的各門課程成績、姓名、學(xué)號(hào)等信息進(jìn)行增、刪、改、查的相應(yīng)操作。要求用數(shù)組來實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)。這兩個(gè)實(shí)例的講解要根據(jù)教師講課的需要及課時(shí)安排,自行從書中選取(1)一維數(shù)組 一維數(shù)組的聲明形式,初始化方法,其在內(nèi)存中是如何存儲(chǔ)的,怎樣去使用以達(dá)到預(yù)期的效果等。(2)二維及多數(shù)組二維數(shù)組是一維數(shù)組的擴(kuò)展,雖然訪問是平面式的,但在內(nèi)存中仍然是一維
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025便利店商品采購與配送合同范本3篇
- 二零二五年度家居裝飾材料區(qū)域代理采購合同3篇
- 2025年度10架AC311A直升機(jī)購銷與地面服務(wù)保障合同3篇
- 二零二四年度三方貸款資金管理合同3篇
- 二零二五版高端裝備制造工廠生產(chǎn)承包合同書模板3篇
- 年度智慧停車戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 2025年蔬菜大棚農(nóng)業(yè)科技研發(fā)與創(chuàng)新合作合同2篇
- 年度丙二酮戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 二零二五版?zhèn)€人短期租房合同補(bǔ)充協(xié)議2篇
- 2024-2025學(xué)年高中歷史第8單元20世紀(jì)下半葉世界的新變化第21課世界殖民體系的瓦解與新興國家的發(fā)展課時(shí)作業(yè)含解析新人教版必修中外歷史綱要下
- 第12講 語態(tài)一般現(xiàn)在時(shí)、一般過去時(shí)、一般將來時(shí)(原卷版)
- 2024年采購員年終總結(jié)
- 2024年新疆區(qū)公務(wù)員錄用考試《行測(cè)》試題及答案解析
- 肺動(dòng)脈高壓的護(hù)理查房課件
- 2025屆北京巿通州區(qū)英語高三上期末綜合測(cè)試試題含解析
- 公婆贈(zèng)予兒媳婦的房產(chǎn)協(xié)議書(2篇)
- 煤炭行業(yè)智能化煤炭篩分與洗選方案
- 2024年機(jī)修鉗工(初級(jí))考試題庫附答案
- Unit 5 同步練習(xí)人教版2024七年級(jí)英語上冊(cè)
- 矽塵對(duì)神經(jīng)系統(tǒng)的影響研究
- 分潤模式合同模板
評(píng)論
0/150
提交評(píng)論