版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第七章 數(shù)組,一維和二維數(shù)組的定義 數(shù)組元素引用 字符數(shù)組和字符串 數(shù)組應(yīng)用的基本算法,7.1.1 一維數(shù)組的定義 數(shù)組的維數(shù)是指表示數(shù)組使用的下標(biāo)個數(shù),如果數(shù)組中每個元素只帶有一個下標(biāo),稱這樣的數(shù)組為一維數(shù)組。 定義形式為: 類型說明符 數(shù)組名常量表達式; 類型說明符指出數(shù)組元素的數(shù)據(jù)類型,數(shù)組名是標(biāo)識符,元素個數(shù)使用方括號和常量表達式。 【討論】C語言數(shù)組大小的規(guī)定。 【討論】如何理解數(shù)組名。,7.1一維數(shù)組,7.1.2 一維數(shù)組的引用 C語言中,一個數(shù)組不能整體應(yīng)用,數(shù)組名是一個地址常量,不能對其賦值,只能使用數(shù)組中的元素。 方法: 數(shù)組名下標(biāo) 【討論】 C語言使用下標(biāo)的規(guī)定。,7.1一
2、維數(shù)組,7.1.3 一維數(shù)組存儲 C系統(tǒng)定義數(shù)組時,根據(jù)定義語句中的空間需求,分配足夠的的存儲空間,數(shù)組元素順序存放在這片存儲單元中。下標(biāo)為0的元素排在最前面,每個元素占據(jù)的存儲空間完全相同。 計算數(shù)組的空間開銷,應(yīng)該使用sizeof算符,方法有二: (1)存儲容量= 數(shù)組元素個數(shù)*sizeof(數(shù)組元素類型名) (2)存儲容量= sizeof(數(shù)組名),7.1一維數(shù)組,7.1.4 一維數(shù)組初始化 一維數(shù)組定義時可以用花括號對全部或前面一部分數(shù)組元素賦初值,叫初始化。通過初始化也可以定義一維數(shù)組。 數(shù)組也是變量,在作用域和存在期方面與簡單變量的規(guī)定相同,全局數(shù)組在程序開始執(zhí)行前建立,在靜態(tài)存儲
3、區(qū)存儲,定義全局數(shù)組時,可以進行初始化,如果沒有,系統(tǒng)自動將全局數(shù)組的值初始化為0。局部數(shù)組存儲在動態(tài)存儲區(qū)中,建立時如果沒有進行初始化,其值是不確定的。,7.1一維數(shù)組,7.1.4 一維數(shù)組初始化 例: 解釋下面數(shù)組定義和初始化的意義: int a6=1,2,3,4,5,6; int a6=1,2; int a3=1,2,3,4; int a=1,2,3,4,5,6; 【討論】例題的結(jié)果及原因。 7.1.5 一維數(shù)組實例,7.1一維數(shù)組,7.2.1 二維數(shù)組的定義 二維數(shù)組:數(shù)組中每個元素帶有兩個下標(biāo)。 定義形式為: 類型說明符 數(shù)組名常量表達式1 常量表達式2; 邏輯上,可把二維數(shù)組看成是
4、一個矩陣,常量表達式1表示矩陣有幾行,常量表達式2表示矩陣的列數(shù)。 可以把二維數(shù)組看作是一種特殊的一維數(shù)組,它的元素又是一維數(shù)組。即二維數(shù)組是數(shù)組的數(shù)組。 【討論】 int a34; 的矩陣理解和數(shù)組之?dāng)?shù)組理解。 【討論】多維數(shù)組的理解問題。,7.2 二維和多維數(shù)組,7.2.2 二維數(shù)組的引用 引用二維數(shù)組元素時必須帶有兩個下標(biāo), 形式如下: 數(shù)組名下標(biāo)1下標(biāo)2 7.2.3 二維數(shù)組存儲 二維數(shù)組在內(nèi)存中占據(jù)一系列連續(xù)的存儲單元,數(shù)組元素按行順序存放,先放行下標(biāo)是0的元素,再放行下標(biāo)是1的元素,. 數(shù)組int a34的存儲示意,7.2 二維和多維數(shù)組,7.2.4 二維數(shù)組初始化 二維數(shù)組定義時
5、也可以用花括號對全部或前面一部分數(shù)組元素賦初始化。通過初始化也可以定義二維數(shù)組。 例: 解釋下面數(shù)組定義和初始化的意義: int a23=1,2,3,4,5,6; int a23=1,2; int a23=1,2,3, 4,5,6 ; int a34=1,2, 3, 4,5,6; int a34=1,2,3, ; int a23=1,2,3,4,5,6,7,8; int a3= 1,2,3,4,5,6; int a3= 1,2,3,4,5,6,7; 7.2.5 二維數(shù)組實例,7.2 二維和多維數(shù)組,7.3.1 字符數(shù)組 字符數(shù)組是元素數(shù)據(jù)類型是字符類型的一維數(shù)組。字符數(shù)組引用、存儲、初始化的方
6、法都與一維數(shù)組相同,只是要注意字符數(shù)組的元素是字符,有特殊的字面表示格式。 字符數(shù)組初始化的方法也和一維數(shù)組相同。 例:char s5=1,2,3,4,5; char s5=1,2; char s=1,2,3,4,5; 初始化時沒有賦值的元素值為空是編碼為0的字符,叫空字符,用0表示。它即不是空格字符(32),也不是0字符(48)。,7.3 字符數(shù)組和字符串,7.3.2 字符串 C語言中用雙引號”括起來的任意字符序列,就是字符串。 C語言中,順序書寫的兩個字符串中間僅由空格、換行符或制表符分隔,編譯時,自動將這些字符串連接成一個長的字符串。 字符串里不能直接出現(xiàn)雙引號”(被認為是結(jié)束符),需用
7、換意序列“”表示雙引號字符” 對程序中的字符串字面量,系統(tǒng)用字符數(shù)組方式保存,連續(xù)、順序存放每一個字符,最后加一個空字符“0”做結(jié)束標(biāo)志。 結(jié)束標(biāo)志“0”是字符數(shù)組與字符串的區(qū)別。 【討論】程序中為什么需要字符串的結(jié)束標(biāo)志? 【討論】 C語言表示字符串長度的方法,7.3 字符數(shù)組和字符串,7.3.2 字符串 C語言中沒有字符串變量,通過字符數(shù)組可以實現(xiàn)相關(guān)的功能,字符串是字符數(shù)組最普通的具體應(yīng)用。 當(dāng)要用字符數(shù)組存儲(可能變化的)字符串時,應(yīng)考慮: (1)定義變量時,考慮可能存儲的最長字符串的長度。 (2)在字符數(shù)組中順序存放字符串的每一個字符,最后加上“0”。 (3)對字符數(shù)組初值賦值方法的
8、擴充,例: char str= “China”; char str=“China”; char str10=“China”; char str5=“morning!”; 字符串操作中,要注意控制不要超出字符數(shù)組的空間限制。,7.3 字符數(shù)組和字符串,7.3.3 字符串?dāng)?shù)組 字符串?dāng)?shù)組就是數(shù)組中的每一個元素又都是存放字符串的數(shù)組。 可以將一個二維字符數(shù)組看作一個字符串?dāng)?shù)組。 例:char line1080; 數(shù)組line共有10個元素,每個元素可以存放80個字符(79個普通字符,一個結(jié)束字符),第一個下標(biāo)決定字符串個數(shù),第二個下標(biāo)決定字符串的最大長度。line是有10個字符串的數(shù)組,這些字符串的
9、最大長度為79。,7.3 字符數(shù)組和字符串,7.3.3 字符串?dāng)?shù)組 字符串?dāng)?shù)組的初始化方法: 例: char str35=“a”, “ ab”, “abc”; /*根據(jù)定義的大小初始化*/ char str5=“a”, “ab”, “abc”; /*根據(jù)右邊字符串的個數(shù),定義數(shù)組大小*/ 本數(shù)組的存儲示意如下:,7.3 字符數(shù)組和字符串,7.3.4 字符串函數(shù) C標(biāo)準(zhǔn)函數(shù)庫中提供了許多相關(guān)的函數(shù),它們的原型說明在兩個頭文件中,ctype.h說明了一組字符類型判斷函數(shù),string.h說明了許多字符串處理函數(shù)。另外標(biāo)準(zhǔn)輸入輸出函數(shù)庫中還有用于字符串輸入和輸出的函數(shù)。 7.3.4.1字符串輸入輸出
10、 1. scanf的s 格式串可以實現(xiàn)字符串的整體輸入。例: char str20; scanf(“%s”,str); /*str是地址 */ 2. printf的s格式串可以實現(xiàn)字符串的輸出,例: printf(“%s”,str); /*str是地址 */ 3. gets從終端輸入字符串行 形式:gets(str); str是存放字符串的起始地址??梢允亲址麛?shù)組名、字符數(shù)組元素地址或下一章將要介紹的字符指針。,7.3 字符數(shù)組和字符串,7.3.4.1字符串輸入輸出 -包含頭文件stdio.h 4.puts向終端輸出字符串 形式:puts(str); str是輸出字符串的起始地址,從這一地址開
11、始,依次輸出存儲單元中的字符,直到遇到第一個0為止。并自動輸出一個換行符。 str是存放字符串的起始地址??梢允亲址麛?shù)組名、字符數(shù)組元素地址或下一章將要介紹的字符指針。 7.3.4.2字符串處理函數(shù) - 包含頭文件string.h 1.字符串復(fù)制函數(shù)strcpy。調(diào)用形式如下: strcpy(s1,s2) 2.字符串連接函數(shù)strcat。調(diào)用形式如下: strcat(s1,s2),7.3 字符數(shù)組和字符串,7.3.4.2字符串處理函數(shù) 3.求字符串長度函數(shù)strlen。調(diào)用形式如下: strlen(s) 4.字符串比較函數(shù)strcmp。調(diào)用形式如下: strcmp(s1,s2) 【討論】 C語
12、言字符串相等的概念和字符比較規(guī)則 7.3.4.3字符判斷函數(shù) -包含頭文件ctype.h。 字符判斷函數(shù)大部分是用宏實現(xiàn)的。返回值都是真和假值,即非0和0。如isalpha(c):判斷c是否為字母;isdigit(c):判斷c是否為數(shù)字;isupper(c ) : 判斷c是否為大寫字母. 。 【討論】使用字符判斷函數(shù)設(shè)計程序的好處 7.3.5 字符數(shù)組和字符串實例,7.3 字符數(shù)組和字符串,首先,如果數(shù)組元素屬于基本類型,這些元素可以作為基本類型使用,當(dāng)然可以作為函數(shù)的實參,送給函數(shù)處理,實參形參傳遞的是數(shù)組元素的值,形參操作不影響實參的值,處理的結(jié)果以返回值的方式帶回,也可以賦給數(shù)組元素。這
13、種方式處理數(shù)組元素與處理基本類型的變量沒有什么區(qū)別。 第二,可以利用全局變量,將要處理的數(shù)組定義成全局數(shù)組,使每一個函數(shù)都能操作需要的數(shù)組。 用數(shù)組作函數(shù)的參數(shù),這樣可以在函數(shù)里處理整個數(shù)組的數(shù)據(jù),也可以通過不同調(diào)用完成同一函數(shù)對不同數(shù)組的同樣計算。 數(shù)組名作函數(shù)參數(shù),實參形參傳遞的是數(shù)組名表示的地址值(依然是值傳遞)。因此,實參和形參數(shù)組操作的是同一片空間。形參數(shù)組操作可以改變實參數(shù)組元素的值。這是用數(shù)組作參數(shù)和用簡單變量作參數(shù)最大的不同。 實參數(shù)組和形參數(shù)組的類型必須一致,如果需要在函數(shù)中知道處理元素的個數(shù),可以另設(shè)一個表示元素個數(shù)的參數(shù)。 7.5 實例,7.4 數(shù)組作為函數(shù)的參數(shù),本章小結(jié),本章主要知識點: 數(shù)組基本概念。數(shù)組定義,數(shù)組類型,數(shù)組唯數(shù),數(shù)組存儲,數(shù)組元素和數(shù)組下標(biāo)概念,數(shù)組說明,初
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45120-2024道路車輛48 V供電電壓電氣要求及試驗
- 2024幼兒園保育員幼兒教育理念與實踐合同3篇
- 二零二五年房地產(chǎn)項目海外分銷代理協(xié)議3篇
- 二零二五版國際貿(mào)易人才招聘與培訓(xùn)合同2篇
- 2025年教育設(shè)施智能化改造與裝修服務(wù)合同范本3篇
- 2025年度環(huán)保設(shè)施運營管理合同范本及效益評估3篇
- 專業(yè)車輛運送協(xié)議模板(2024定制版)版B版
- 2024虛擬股投資退出機制合同范本3篇
- 二零二五年度駕校經(jīng)營管理權(quán)定制化服務(wù)協(xié)議2篇
- 二零二五年度文化產(chǎn)業(yè)發(fā)展前景調(diào)研合同3篇
- 24年追覓在線測評28題及答案
- TGDNAS 043-2024 成人靜脈中等長度導(dǎo)管置管技術(shù)
- 《陸上風(fēng)電場工程概算定額》NBT 31010-2019
- GB/T 29490-2013企業(yè)知識產(chǎn)權(quán)管理規(guī)范
- GB/T 14436-1993工業(yè)產(chǎn)品保證文件總則
- 湖南省鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務(wù)中心地址醫(yī)療機構(gòu)名單目錄
- 《中外資產(chǎn)評估準(zhǔn)則》課件第6章 英國評估準(zhǔn)則
- FZ∕T 63006-2019 松緊帶
- 罐區(qū)自動化系統(tǒng)總體方案(31頁)ppt課件
- BIQS評分表模板
- 工程建設(shè)項目內(nèi)外關(guān)系協(xié)調(diào)措施
評論
0/150
提交評論