C語(yǔ)言課件(非計(jì)算機(jī)專業(yè)).ppt_第1頁(yè)
C語(yǔ)言課件(非計(jì)算機(jī)專業(yè)).ppt_第2頁(yè)
C語(yǔ)言課件(非計(jì)算機(jī)專業(yè)).ppt_第3頁(yè)
C語(yǔ)言課件(非計(jì)算機(jī)專業(yè)).ppt_第4頁(yè)
C語(yǔ)言課件(非計(jì)算機(jī)專業(yè)).ppt_第5頁(yè)
已閱讀5頁(yè),還剩49頁(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)介

數(shù)組 第七章 數(shù)組的定義與使用數(shù)組的基本應(yīng)用字符串基本操作數(shù)組與函數(shù)的關(guān)系 本章要點(diǎn) 如何處理一個(gè)班學(xué)生的學(xué)習(xí)成績(jī) 一行文字怎樣存儲(chǔ) 一個(gè)矩陣怎樣存儲(chǔ) 7 1數(shù)組的概念 一組具有相同數(shù)據(jù)類型的數(shù)據(jù)的有序集合 這些數(shù)據(jù)的特點(diǎn) 具有相同的數(shù)據(jù)類型 為了很方便地使用這些數(shù)據(jù) C語(yǔ)言提供了一種構(gòu)造數(shù)據(jù)類型 數(shù)組 數(shù)組是數(shù)據(jù)的有序集合 數(shù)組中的每一個(gè)元素都屬于同一數(shù)據(jù)類型 使用同一數(shù)組名和不同下標(biāo)來(lái)唯一的確定數(shù)組中的元素 只需要一個(gè)下標(biāo)就能確定數(shù)組元素的數(shù)組稱為一維數(shù)組 7 2一維數(shù)組 一維數(shù)組的一般說(shuō)明形式是 類型說(shuō)明符數(shù)組名 常量表達(dá)式 說(shuō)明 數(shù)據(jù)類型是數(shù)組全體數(shù)組元素的數(shù)據(jù)類型 數(shù)組名后是用方括號(hào)括起來(lái)的常量表達(dá)式 不能用圓括號(hào) C語(yǔ)言規(guī)定數(shù)組名表示數(shù)組在內(nèi)存中的首地址 常量表達(dá)式中可以包括常量和符號(hào)常量 不能包含變量 C語(yǔ)言不允許對(duì)數(shù)組的大小作動(dòng)態(tài)定義 即數(shù)組的大小不依賴于程序運(yùn)行過(guò)程中變量的取值 所有數(shù)組都以0作為第一個(gè)元素的下標(biāo) 例如inta 10 數(shù)組的10個(gè)元素為 a 0 a 1 a 9 數(shù)組元素個(gè)數(shù)的表達(dá)式必須是整型常量表達(dá)式 intk 4 b k intc 4 defineN5inta N intb 2 3 intc 10 錯(cuò) 正確 錯(cuò) 數(shù)組元素在內(nèi)存中的存儲(chǔ)方式 a 0 a 1 a 2 a 3 a 4 a 例如有定義 chara 5 數(shù)組元素在內(nèi)存中按順序連續(xù)存放 C語(yǔ)言要求數(shù)組必須先定義然后才能使用 并且規(guī)定只能逐個(gè)引用數(shù)組元素而不能一次引用整個(gè)數(shù)組 數(shù)組元素的引用形式為 數(shù)組名 下標(biāo) 一維數(shù)組元素的引用 數(shù)組中每個(gè)元素在功能上等價(jià)于一個(gè)一般變量例如 輸出100個(gè)學(xué)生成績(jī) 并求出總成績(jī) 不用數(shù)組 floatx sum for i 0 i 100 i scanf f n 對(duì)于非字符數(shù)組 只能訪問(wèn)數(shù)組的單個(gè)元素 不能進(jìn)行整體操作 輸入 輸出數(shù)組 intx 10 正確 for k 0 k 10 k scanf d C語(yǔ)言中可以采用如下方法對(duì)數(shù)組元素進(jìn)行初始化 在定義數(shù)組時(shí)對(duì)數(shù)組元素賦初值 如 inta 10 0 1 2 3 4 5 6 7 8 9 這種方法是將數(shù)組元素的初始值依次放在一對(duì)花括號(hào)內(nèi) 也可以只對(duì)一部分?jǐn)?shù)組元素賦值 如 inta 10 0 1 2 3 4 一維數(shù)組的初始化 在對(duì)全部數(shù)組元素賦初值時(shí) 可以不指定數(shù)組的長(zhǎng)度 如 inta 0 1 2 3 4 5 6 7 8 9 但是如果被定義的數(shù)組長(zhǎng)度與提供的初值的個(gè)數(shù)不同時(shí) 則數(shù)組的長(zhǎng)度不能省略 稱為下標(biāo)運(yùn)算符 數(shù)組名 數(shù)組元素是兩種不同性質(zhì)的數(shù)據(jù) 數(shù)組名是數(shù)組的首地址 是一個(gè)地址常量數(shù)組元素則是數(shù)值引用數(shù)組元素時(shí) 根據(jù)首地址和下標(biāo) 自動(dòng)計(jì)算出該元素的實(shí)際地址 取出該地址的內(nèi)容進(jìn)行操作 下標(biāo)與地址的關(guān)系 例如 floatmark 100 如引用mark 2 1 計(jì)算2000 2 4 2008 2 從取出2008的內(nèi)容 元素存儲(chǔ)地址 數(shù)組首地址 偏移量 數(shù)組元素存儲(chǔ)地址的計(jì)算公式 defineNUM20main inta NUM 1 1 intj for j 2 j NUM j a j a j 1 a j 2 for j 0 j NUM j printf d t a j 例 求Fibonacci數(shù)列的前20項(xiàng)的值 氣泡法排序 氣泡法排序 若要對(duì)n個(gè)數(shù)排序 則需要 n 1 輪排序第j輪排序中 從第一個(gè)數(shù)開始 相鄰兩個(gè)數(shù)進(jìn)行比較 若不符合排序要求則交換兩個(gè)數(shù)的位置 直到第 n j 1 個(gè)數(shù)為止 共比較 n j 次此時(shí)第 n j 1 個(gè)位置上的數(shù)已經(jīng)按要求排好 所以不參加以后的比較和交換操作 例如對(duì)4個(gè)數(shù)0 2 3 9按從大到小的順序排序 defineN4main inti j m inta N 0 2 3 9 for j 1 j N 1 j N 1輪排序 for i 0 i N j i N j次兩個(gè)相鄰數(shù)組元素比較 if a i a i 1 順序不符合要求時(shí)交換位置 m a i a i a i 1 a i 1 m for i 0 i N i printf 5d a i 選擇法排序 選擇法排序 n個(gè)數(shù)從小到大排序 需要 n 1 輪排序處理第一輪排序中從第一個(gè)數(shù)到第n個(gè)數(shù)中找出最小的數(shù) 然后把它與第一個(gè)數(shù)交換位置 第一個(gè)數(shù)確定 以后的排序不涉及該數(shù)第j輪排序中從第j個(gè)數(shù)到第n個(gè)數(shù)中找出最小的數(shù) 然后把它與第j個(gè)數(shù)交換位置 第j個(gè)數(shù)確定 選擇法排序 選擇法排序 第j輪比較 n j 次 至多交換一次 第 n 1 輪排序中從第 n 1 個(gè)數(shù)和第n個(gè)數(shù)中找出最小的數(shù) 然后把它與第 n 1 個(gè)數(shù)交換位置 完成排序操作 例如對(duì)5個(gè)數(shù)5 7 4 2 8按從小到大的順序排序 defineN5main inti j m p inta N 5 7 4 2 8 for i 0 ia j p j if p i 最小值不是a i 時(shí)需要a i 與a p 交換 m a p a p a i a i m for i 0 i N i printf 5d a i 7 3一維字符數(shù)組 字符串字符串 用雙引號(hào) 括起來(lái)的字符或轉(zhuǎn)義符序列 串長(zhǎng) 字符串中所包含的字符數(shù) 串結(jié)束標(biāo)記 轉(zhuǎn)義字符 0 稱為字符串結(jié)束標(biāo)記 C語(yǔ)言中的字符串以 0 結(jié)束 字符串可以存在一個(gè)一維數(shù)組中 字符串中的一個(gè)字符占用字符數(shù)組中一個(gè)字節(jié) 具有數(shù)組特性 字符串實(shí)際占有單元的數(shù)量等于字符串長(zhǎng)度 1 例如 要定義一個(gè)存放字符串 CHINA 的字符數(shù)組c 應(yīng)定義為 charc 6 字符串在數(shù)組中的存儲(chǔ)格式 一維字符數(shù)組的定義形式類似于一維數(shù)組的定義 只是將數(shù)據(jù)類型改為char 例如 chara 6 b 10 注意 若定義的字符數(shù)組用來(lái)存放k個(gè)字符的字符串 則定義的字符數(shù)組元素的個(gè)數(shù)至少為 k 1 一定要有一個(gè)數(shù)組元素存放字符串結(jié)束符 0 一維字符數(shù)組的定義 用字符串對(duì)字符數(shù)組初始化 如 charch 6 CHINA charch 6 CHINA 省略 charch CHINA 省略長(zhǎng)度值 用單個(gè)字符對(duì)字符數(shù)組初始化 如 charch 6 C H I N A 0 注意 該種方式大括號(hào)不能省略 一維字符數(shù)組的初始化 對(duì)字符數(shù)組不僅可以引用它的數(shù)組元素 也可以引用整個(gè)字符數(shù)組 例如 chara CHINA printf s n a 輸出結(jié)果 CHINA 一維字符數(shù)組的引用 1逐個(gè)字符輸入輸出 采用格式符 c 輸入輸出一個(gè)字符 如printf c c 4 2將整個(gè)字符串一次輸入輸出 采用 s 格式符 如 charc China 或charc China printf s c 字符串的輸入輸出 1輸出字符不包括字符串結(jié)束標(biāo)志 0 2用 s 格式符輸出字符數(shù)組時(shí) printf函數(shù)中的輸出項(xiàng)是字符數(shù)組名 而不是數(shù)組的元素 3如果數(shù)組長(zhǎng)度大于字符串的實(shí)際長(zhǎng)度 輸出時(shí)也只輸出到遇到 0 結(jié)束 如 charc 10 China printf s c 注意 4如果一個(gè)字符數(shù)組中包含一個(gè)以上 0 則遇到第一個(gè) 0 時(shí)輸出結(jié)束 如 chara 7 Chi 0na printf s a Output Chi5用格式符s不能輸入帶空格 回車或跳格的字符串 因?yàn)榭崭?回車或跳格是輸入數(shù)據(jù)的結(jié)束標(biāo)志 gets 函數(shù)調(diào)用形式 gets sadr 功能是從鍵盤讀入字符串 直到讀入換行符為止 用 0 代替換行符并把讀入的字符串存入以sadr為首地址的存儲(chǔ)區(qū)中 例如 charch 80 gets ch gets 函數(shù) puts 函數(shù)調(diào)用形式 puts sadr 其功能是把首地址為sadr的字符串顯示在屏幕上 并換行 注意 用puts和gets函數(shù)只能輸入或輸出一個(gè)字符串 而不能寫成 puts str1 str2 或gets str1 str2 puts 函數(shù) 7 4字符串處理函數(shù) 對(duì)于字符串的整體操作 如復(fù)制 比較 連接 計(jì)算字符串長(zhǎng)度等 C語(yǔ)言沒(méi)有提供相應(yīng)的運(yùn)算符 而是以庫(kù)函數(shù)的形式實(shí)現(xiàn)這些操作 用戶只要在程序開頭加上命令行 inlucde string h 就可以調(diào)用這些庫(kù)函數(shù)完成相應(yīng)的操作 strcpy是字符串復(fù)制函數(shù) 其作用是將字符串2復(fù)制到字符數(shù)組1中去 其標(biāo)準(zhǔn)形式為 strcpy 字符數(shù)組1 字符數(shù)組2 如 charstr1 10 str2 China strcpy str1 str2 7 4 1字符串復(fù)制函數(shù) 字符數(shù)組1必須足夠大 以便容納被復(fù)制的字符串 即字符數(shù)組1的長(zhǎng)度不小于字符串2的長(zhǎng)度 字符數(shù)組1 必須寫成數(shù)組名的形式 而 字符數(shù)組2 可以是字符數(shù)組名 也可以是一個(gè)字符串常量 如 strcpy str1 China 復(fù)制時(shí)連同字符串后面的 0 一起復(fù)制到字符數(shù)組1中 說(shuō)明 不能使用賦值語(yǔ)句將一個(gè)字符串常量或一個(gè)字符數(shù)組直接賦給一個(gè)字符數(shù)組 如下面兩條語(yǔ)句是不合法的 str1 China str1 str2 只能使用語(yǔ)句 strcpy str1 China strcpy str1 str2 可以使用strcpy函數(shù)將字符串2中的前面若干個(gè)字符復(fù)制到字符數(shù)組中去 如 strcpy str1 str2 2 其作用是將str2中前面的2個(gè)字符復(fù)制到str1中 然后再加上一個(gè) 0 所謂字符串的長(zhǎng)度是指字符串中字符的個(gè)數(shù) 但不包括字符串結(jié)束符 0 C語(yǔ)言使用strlen函數(shù)測(cè)試字符串長(zhǎng)度 其調(diào)用形式為 strlen 字符數(shù)組 如 charstr 10 China printf d strlen str 7 4 2求字符串的長(zhǎng)度 strcat函數(shù)的作用是連接兩個(gè)字符數(shù)組中的字符串 把字符串2接到字符串1的后面 結(jié)果存放在字符數(shù)組1中 函數(shù)調(diào)用后得到的函數(shù)值是字符數(shù)組1的地址 其調(diào)用形式為 strcat 字符數(shù)組1 字符數(shù)組2 如 charstr1 30 People sRepublicof charstr2 China printf s strcat str1 str2 7 4 3字符串連接 說(shuō)明 字符數(shù)組1必須足夠大 以便容納連接后的新字符串 在連接前兩個(gè)字符串的后面都有一個(gè) 0 連接時(shí)將字符串1后面的 0 取消 只在新字符串的后面保留一個(gè) 0 strcmp 字符串1 字符串2 strcmp函數(shù)作用是比較字符串1和字符串2 字符串比較的規(guī)則是對(duì)兩個(gè)字符串自左向右逐個(gè)字符相比 按其ASCII碼值大小進(jìn)行比較 直到出現(xiàn)不同的字符或遇到 0 為止 如果全部字符相同 則認(rèn)為相等 若出現(xiàn)不相同的字符 則以第一個(gè)不相同的字符的比較結(jié)果為準(zhǔn) 例如 strcmp str1 str2 strcmp China Korea 7 4 4字符串比較 比較結(jié)果由函數(shù)返回值帶回 如果字符串1 字符串2 則函數(shù)值為0 如果字符串1 字符串2 則函數(shù)值為一正數(shù) 如果字符串1 字符串2 則函數(shù)值為一負(fù)數(shù) 注意 對(duì)兩個(gè)字符串比較 不能使用以下形式 if str1 str2 printf yes 而應(yīng)該使用if strcmp str1 str2 0 printf yes 例輸入若干字符串 輸出其中最大的字符串 include string h main chars1 80 max 80 inti gets s1 strcpy max s1 gets s1 do if strcmp max s1 0 strcpy max s1 gets s1 while strcmp s1 printf maxstringis s max 7 5二維數(shù)組 1數(shù)組元素具有兩個(gè)下標(biāo)的數(shù)組稱為二維數(shù)組2二維數(shù)組的說(shuō)明形式如下 類型說(shuō)明符數(shù)組名 常量表達(dá)式 常量表達(dá)式 例如inta 2 3 3C語(yǔ)言中 二維數(shù)組中元素排列的順序是按行存放 即在內(nèi)存中順序存放第一行的元素 再存放第二行的元素 二維數(shù)組的元素表示形式為 數(shù)組名 行下標(biāo) 列下標(biāo) 例如inta 2 3 數(shù)組元素的行下標(biāo)為0 1 列下標(biāo)為0 1 2 a 0 1 a 1 2 是正確的數(shù)組元素a 2 3 不是數(shù)組的元素 二維數(shù)組的引用 C語(yǔ)言規(guī)定可以分行給二維數(shù)組元素賦初值inta 2 3 1 2 3 1 2 3 把第一個(gè)花括號(hào)內(nèi)的數(shù)據(jù)賦給第一行的元素 第二個(gè)花括號(hào)內(nèi)的數(shù)據(jù)賦給第二行的元素 即按行賦初值 也可以將所有數(shù)據(jù)寫在一個(gè)花括號(hào)內(nèi) 按數(shù)據(jù)排列的順序?qū)Ω鱾€(gè)元素賦初值 如 inta 2 3 1 2 3 1 2 3 二維數(shù)組的初始化 也可以在初始化時(shí)只對(duì)部分元素賦初值 inta 2 3 1 1 也可以對(duì)各行的某一元素賦初值 inta 3 4 1 0 6 0 0 11 如果對(duì)全部元素都賦初值 則數(shù)組的第一維的長(zhǎng)度可以不指定 但第二維的長(zhǎng)度不能省略 如 inta 3 1 2 3 1 2 3 例求矩陣A 2 3 的轉(zhuǎn)置矩陣B 3 2 矩陣轉(zhuǎn)置算法 在原來(lái)矩陣 中的元素a i j 應(yīng)是轉(zhuǎn)置后矩陣 中的元素b j i main inti j b 3 2 a 2 3 1 2 3 4 5 6 for i 0 i 1 i for j 0 j 2 j b j i a i j 進(jìn)行數(shù)組轉(zhuǎn)置 for i 0 i 2 i printf n for j 0 j 1 j printf d b i j 7 6二維字符數(shù)組 二維數(shù)組可以看作一個(gè)一維數(shù)組 這個(gè)一維數(shù)組的每個(gè)元素也是一個(gè)一維數(shù)組 二維字符

溫馨提示

  • 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)論