版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第十二講 二維數(shù)組和字符數(shù)組主講:謝華成熟練掌握二維數(shù)組的定義、引用、初始化。掌握二維數(shù)組的存儲方式借鑒一維數(shù)組程序處理方式,掌握二維數(shù)組的顯示、轉(zhuǎn)置運(yùn)算、最值運(yùn)算及統(tǒng)計(jì)問題。教 學(xué) 目 的C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室第一部分 二維數(shù)組二維數(shù)組的定義、引用、初始化二維數(shù)組的元素在內(nèi)存中按什么方式存放?求二維數(shù)組中元素的最大值和最小值二維數(shù)組的變換一維數(shù)組中相關(guān)算法在二維數(shù)組中的實(shí)現(xiàn)C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室將1個3*2的矩陣存入1個3*2的二維數(shù)組中,找出最大值以及它的行下標(biāo)和列下標(biāo),并輸出該矩陣。 7.2 找出矩陣中最大值所在的位置 7.2.1 程序解析7.2.2 二維
2、數(shù)組的定義和引用7.2.3 二維數(shù)組的初始化7.2.4 使用二維數(shù)組編程C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室7.2.1 程序解析求矩陣的最大值 【例 7-7】將1個3*2的矩陣存入1個3*2的二維數(shù)組中,找出最大值以及它的行下標(biāo)和列下標(biāo),并輸出該矩陣。 row 記錄最大值的行下標(biāo) col 最大值的列下標(biāo) arowcol 最大值C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室例7-7 源程序main() int col, i, j, row; int a32; printf(“Enter 6 integers:n) ; for(i = 0; i 3; i+) for(j = 0; j 2; j+) sc
3、anf(%d, &aij); for(i = 0; i 3; i+) for(j = 0; j 2; j+) printf(%4d, aij); printf(n); row = col = 0; for(i = 0; i 3; i+) for(j = 0; j arowcol) row = i; col = j; printf(max = a%d%d = %dn, row, col, arowcol); Enter 6 integers: 3 2 10 -96 -13 2 10 -96 -1max = a10 = 10C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室二維數(shù)組多維數(shù)組的空間想象二維數(shù)組:
4、 一個表格或一個平面矩陣一維數(shù)組: 一列長表或一個向量多維數(shù)組: 多維空間的一個數(shù)據(jù)列陣三維數(shù)組: 三維空間的一個方陣C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室7.2.2 二維數(shù)組的定義和引用1、定義類型名 數(shù)組名行長度列長度int a32;定義1個二維數(shù)組a,3行2列,6個元素int b510;定義1個二維數(shù)組a,5 行 10 列, 50 個元素 C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室2、引用先定義,后使用數(shù)組元素的引用:數(shù)組名行下標(biāo) 列下標(biāo)行下標(biāo)和列下標(biāo):整型表達(dá)式行下標(biāo)的取值范圍是0,行長度-1列下標(biāo)的取值范圍是0,列長度-1int a32; 3 行 2 列, 6 個元素a00 a01 a1
5、0 a11 a20 a21 下標(biāo)不要越界C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室二維數(shù)組在內(nèi)存中的存放方式int a32;3 行 2 列, 6 個元素表示1個3行2列的矩陣a00 a01 a10 a11 a20 a21 二維數(shù)組的元素在內(nèi)存中按行/列方式存放a00a01a10a11a20a21 C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室7.2.3 二維數(shù)組的初始化1、分行賦初值int a33 = 1,2,3,4,5,6,7,8,9;static int b43 = 1,2,3, ,4,5;數(shù)組a1 2 3 4 5 67 8 9數(shù)組b1 2 30 0 04 5 00 0 02、順序賦初值int a33
6、 = 1,2,3,4,5,6,7,8,9;static int b43 = 1,2,3,0,0,0,4,5;C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室省略行長度對全部元素都賦了初值,int a 3=1,2,3,4,5,6,7,8,9;或分行賦初值時,在初值表中列出了全部行static int b 3=1,2,3,4,5,建議不要省略數(shù)組a1 2 3 4 5 67 8 9數(shù)組b1 2 30 0 04 5 00 0 0C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室7.2.4 使用二維數(shù)組編程行下標(biāo)和列下標(biāo)分別做為循環(huán)變量, 通過二重循環(huán),遍歷二維數(shù)組通常將行下標(biāo)做為外循環(huán)的循環(huán)變量 列下標(biāo) 內(nèi)循環(huán)C語言程序設(shè)
7、計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室定義1個 3*2 的二維數(shù)組a,數(shù)組元素的值由下式給出,按矩陣的形式輸出a。aij = i + j(0i2,0j1)例7-8 生成一個矩陣并輸出 int a32;a00 a01 a10 a11 a20 a21 0 11 22 3C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室#include int main(void) int i, j; int a32; for(i = 0; i 3; i+) for(j = 0; j 2; j+) aij = i + j; for(i = 0; i 3; i+) for(j = 0; j 2; j+) printf(%4d, aij);
8、printf(n); return 0; a00 a01 a10 a11 a20 a21 i = 0 j = 0i = 0 j = 1i = 1 j = 0i = 1 j = 1i = 2 j = 0i = 2 j = 1 例7-8 源程序0 11 22 3C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室矩陣與二維數(shù)組int aNN; N是正整數(shù)aij:i、j的取值范圍0,N-1用二維數(shù)組a表示N*N方陣時,對應(yīng)關(guān)系:a00 a01 a02 主對角線 a10 a11 a12 上三角a20 a21 a22 下三角 付對角線i=ji=ji+j=N-1C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室例7-9 方陣轉(zhuǎn)置
9、輸入一個正整數(shù)n (1n6),根據(jù)下式生成1個n*n的方陣,然后將該方陣轉(zhuǎn)置(行列互換)后輸出。 aij = i * n + j + 1(0in-1,0jn-1)分析:int a66; n=3時1 2 34 5 67 8 91 4 7 2 5 83 6 9a01 a10 a02 a20a12 a21aij ajiC語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室#include int main(void) int i, j, n, temp; int a66; printf(“Enter n: ); scanf(%d, &n); /* 給二維數(shù)組賦值 略*/ /* 行列互換*/ for(i = 0; i
10、 n; i+) for(j = 0; j n; j+) if(i = j) /* 只遍歷上三角陣 */ temp = aij; aij = aji; aji = temp; /* 按矩陣的形式輸出a 略 */ return 0; 例7-9 源程序C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室 /* 行列互換*/ for(i = 0; i n; i+) for(j = 0; j n; j+) if(i = j) temp = aij; aij = aji; aji = temp; 1 2 3 4 5 67 8 9主對角線:i = j上三角: i =ji=01 4 7 2 5 63 8 9i=11 4 7
11、2 5 83 6 9例7-9 說明for( j = i; j n; j+)C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室第二部分 字符數(shù)組1、字符數(shù)組的定義和使用2、字符數(shù)組的初始化3、字符串的輸入和輸出4、字符串處理函數(shù)5、程序舉例C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室7.3.2 一維字符數(shù)組字符串的存儲和運(yùn)算可以用一維字符數(shù)組實(shí)現(xiàn)一維字符數(shù)組的定義、引用、初始化與其他類型的一維數(shù)組一樣。char str80; 定義一個含有80個字符型元素的數(shù)組str char t5=H, a, p, p, y;初始化數(shù)組 t t0 t1 t4t H a p p y輸出數(shù)組 t 的所有元素for(i=0; i 對字
12、符數(shù)組的操作C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室1. 字符串的存儲數(shù)組初始化字符串可以存放在一維字符數(shù)組中 static char s6 = H, a, p, p, y, 0;字符數(shù)組初始化:用字符串常量static char s6 = Happy;static char s6 = Happy;數(shù)組長度 = 字符串的有效長度 + 1 s0 s1 s5s H a p p y 0C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室字符串的存儲auto char s80= Happy;字符串遇 0 結(jié)束第一個 0 前面的所有字符和 0 一起構(gòu)成了字符串 Happy”0 之后的其他數(shù)組元素與該字符串無關(guān) s0 s
13、1 s5s H a p p y 0 ? ?字符串由有效字符和字符串結(jié)束符 0 組成 C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室2. 對字符串的操作把字符串放入一維字符數(shù)組(存儲)對字符串的操作 = 對字符數(shù)組的操作普通字符數(shù)組:數(shù)組元素的個數(shù)是確定的,一般用下標(biāo)控制循環(huán)字符串:沒有顯式地給出有效字符的個數(shù),只規(guī)定在字符串結(jié)束符 0 之前的字符都是字符串的有效字符,一般用結(jié)束符 0 來控制循環(huán)循環(huán)條件:si != 0 C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室字符串處理函數(shù)字符串處理函數(shù)為庫函數(shù),在程序開頭應(yīng)加預(yù)編譯命令 #include以下函數(shù)參數(shù)中的str, str1, str2均為字符數(shù)組名。(1
14、)puts(str);/*字符串輸出函數(shù) put string*/ 參數(shù)可為字符串常量,輸出的字符串可以包含轉(zhuǎn)義字符。(2)gets(str);/*字符串輸入函數(shù) get string */ 從終端輸入字符串到字符數(shù)組,返回字符數(shù)組的起始地址。注意:如果輸入字符串有空格,則必須用gets而不能用scanf !C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室字符串處理函數(shù)(3) strcat(str1, str2);/*字符串合并函數(shù) */ 把str2連接到 str1的后面,結(jié)果放在str1中,函數(shù)返回值為str1地址. 例如:char str130=“Peoples Republic of ”; cha
15、r str2=“China”; printf(“%s”, strcat(str1,str2) ); 輸出結(jié)果: Peoples Republic of China說明:str1必須足夠大,連接前兩個字符串后面都有一個“0”,連接時取消str1后面的“0”,只在新串最后保留一個“0”。C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室字符串處理函數(shù)(4) strcpy(str1,str2);/* 字符串拷貝 string copy*/ 將str2復(fù)制到str1中,實(shí)際上完成字符串的賦值操作。 說明: (1) str1必須足夠大; (2) 復(fù)制時連同字符串后面的“0”一起復(fù)制到str1中; (3) 不能用賦值
16、語句將一個字符串常量或字符數(shù)組直接賦值給一個 字符數(shù)組。例如:str1=“China”;str1=str2; 是不合法的; (4) str1必須是數(shù)組名,str2可以是字符數(shù)組名,也可以是字符串常量。 例如: char str20; char str220=“China”; 則, strcpy(str1,str2) 與 strcpy(str1,“China”) 作用相同。C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室字符串處理函數(shù)(5) strcmp(str1, str2); /* 字串比較 */ 比較str1和str2,若兩者相同,返回函數(shù)值為0;若str1大于str2,返回函數(shù)值為一個正整數(shù); 若
17、str1小于str2, 返回函數(shù)值為一個負(fù)整數(shù)。 說明: 對兩個字符串自左至右逐個字符比較(按ASCII碼值大小比較),知道出現(xiàn)不同的字符或遇到“0”為止。如果,全部字符相同,則認(rèn)為相等;如果出現(xiàn)不相同的字符,則以第一個不相同的字符為依據(jù)確定字符串的大小。C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室字符串處理函數(shù)(6) strlen(str); /* 字符串長度 */ 函數(shù)值為字符串實(shí)際長度,不包括“0” 。 例如: char str=“China”; printf(“%d”,strlen(str); (7) strlwr(str); /*大寫轉(zhuǎn)小寫 string lowercase*/ 把str中
18、的大寫字母轉(zhuǎn)換成小寫字母,并存入str。str必須為字符數(shù)組,不能是字符串常量。(8) strupr(str); /*小寫轉(zhuǎn)大寫 string uppercase*/ 把str中小寫字母轉(zhuǎn)換成大寫字母 , 并存入str。str必須為字符數(shù)組,不能是字符串常量。char s6=CHINA; printf(%s,strlwr(s); /正確 printf(%s,strlwr(CHINA);/錯誤 為什么 ?輸出結(jié)果5C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室for(i = 0; si != 0; i+) putchar(si);for(i = 0; i 80; i+) putchar(si);for(
19、i = 0; i len; i+) putchar(si);手工輸出字符串 s0 s1 s5s H a p p y 0 ? ?C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室輸入一個以回車結(jié)束的字符串(少于80個字符),統(tǒng)計(jì)其中數(shù)字字符的個數(shù)。分析:數(shù)組長度取上限80以 n 做為輸入結(jié)束符例7-13 統(tǒng)計(jì)字符C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室#include int main(void) int count, i; char str80; printf(“Enter a string: ); i = 0; while(stri = getchar( ) != n) i+; stri = 0; /*
20、輸入結(jié)束符字符串結(jié)束符 */ count = 0; for(i = 0; stri != 0; i+) if(stri = 0) count+; printf(count = %dn, count); return 0; 例7-13 源程序字符串的輸入Enter a string: Its 512?count = 3如何改變輸入結(jié)束符?能省略stri = 0嗎? 0 1 2 3 4 5 6 7 8sI t s 5 1 2 0 ? ?C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室例7-14 進(jìn)制轉(zhuǎn)換 #include int main(void) int i, n; char s10; printf(“
21、Enter a string: ); i = 0; while(si = getchar( ) != n) i+; si = 0; n = 0; /* 將字符串轉(zhuǎn)換為整數(shù) */ for(i = 0; si != 0; i+) if(si = 0) n = n * 10 + (si - 0); else break; printf(digit = %dn, n); return 0; Enter a string: 123digit = 1230 1 2 3 s1 2 3 0 ? ?C語言程序設(shè)計(jì)網(wǎng)絡(luò)信息與計(jì)算中心教研室進(jìn)制轉(zhuǎn)換方法 n = 0; for(i = 0; si != 0; i+) if(si = 0) n = n * 10 + (si - 0); e
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024企業(yè)風(fēng)險(xiǎn)管理與控制合同
- 買平方房合同范例
- 代款買車合同范例
- 2024年建筑工程:投資伙伴合作協(xié)議
- 分流安置用工合同范例
- 2024年全職員工薪資協(xié)議書
- 2024年度五個股東共同投資新能源汽車項(xiàng)目的合作協(xié)議
- 國內(nèi)旅旅游合同模板
- 國際技術(shù)轉(zhuǎn)讓管理合同范例
- 中介房屋包租合同范例
- 2024版《糖尿病健康宣教》課件
- ktv保安管理制度及崗位職責(zé)(共5篇)
- 腦出血試題完整版本
- 義務(wù)教育信息科技課程標(biāo)準(zhǔn)(2022年版)考試題庫及答案
- 建筑施工安全生產(chǎn)責(zé)任書
- 新員工三級安全教育考試試題參考答案
- 公司年會策劃及執(zhí)行服務(wù)合同
- 概算審核服務(wù)投標(biāo)方案(技術(shù)方案)
- 人教版(2019)選擇性必修第二冊Unit 2 Bridging Cultures Learning About Language教學(xué)設(shè)計(jì)
- 數(shù)學(xué)史簡介課件可編輯全文
- 化工原理課程設(shè)計(jì)附錄二
評論
0/150
提交評論