




已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)組(二),模塊4,共 34 頁 第 2 頁,1 字符與字符串 2 字符數(shù)組 3 字符串處理函數(shù) 4 二維字符數(shù)組 5 應(yīng)用實(shí)例,字符數(shù)據(jù)處理,共 34 頁 第 3 頁,符號(hào)常量:以指定符號(hào)代表其后的 “一串字符” 格式: #define 標(biāo)識(shí)符 常量,1 字符與字符串,一、字符型數(shù)據(jù),可以是任意類型常量,字符常量:以 括起來的單個(gè)字符,開頭的字符序列。,例:a, A, n表示換行, r表示回車。,字符串常量:用雙引號(hào)括起來的字符序列。,例:”Ch”,”123”等。長度不限,末尾加0,字符變量:存放字符常量的變量,用char說明。,共 34 頁 第 4 頁,1 字符與字符串(續(xù)),二、字符串,串長:字符串中所包含的字符數(shù)。 串結(jié)束標(biāo)記:字符 0 稱為串結(jié)束標(biāo)記。,C中的串以 0 結(jié)束。,字符串在數(shù)組中的存儲(chǔ)格式,字符串可以存在一個(gè)一維數(shù)組中,字符串中的一個(gè)字符占用字符數(shù)組中一個(gè)字節(jié),具有數(shù)組特性。 字符串實(shí)際占有單元的數(shù)量等于字符串長度+1。,例如:要定義一個(gè)存放字符串“CHINA”的字符數(shù) 組c,應(yīng)定義為: char c6; 數(shù)組c在內(nèi)存中實(shí)際存放情況為:,共 34 頁 第 5 頁,串長=5,三、字符數(shù)據(jù)的輸入輸出,庫函數(shù): getchar( ),putchar(ch),從鍵盤上 讀一個(gè)字符,1 字符與字符串(續(xù)),使用getchar( )時(shí),可以輸入任何字符,允許用戶根據(jù)自己的要求進(jìn)行控制與處理,串尾0要自己編程加入。其中ENTER接受為r(回車)。,格式化輸入輸出函數(shù): scanf( );printf( );”%c”,共 34 頁 第 6 頁,格式: 數(shù)據(jù)類型 數(shù)組名維數(shù)說明;,例:char a4,b10; char c34; 表示a數(shù)組可以存放4個(gè)字符,c數(shù)組可以存放12個(gè)字符。,例:c34可存放三個(gè)字符串,每個(gè)字符串最多存放4個(gè)字符。, 一維字符型數(shù)組作為一個(gè)字符串變量使用。 二維字符型數(shù)組相當(dāng)于一個(gè)字符串?dāng)?shù)組,每行存放 一個(gè)字符串。,2 字符數(shù)組(續(xù)),一、一維字符數(shù)組的定義,二、字符數(shù)組的用途,共 34 頁 第 7 頁,8-2 字符數(shù)組,三、一維字符數(shù)組的初始化,用字符串對字符數(shù)組初始化,如: char ch6=“CHINA“; char ch6=“CHINA“; /* 省略 */ char ch =“CHINA“; /* 省略長度值 */,字符數(shù)組初始化,用單個(gè)字符對字符數(shù)組初始化,如: char ch6=C,H,I,N,A,0;,2 字符數(shù)組(續(xù)),共 34 頁 第 8 頁,2 字符數(shù)組(續(xù)),四、一維字符數(shù)組的引用,如: char a10=“CHINA2000”,b3=“123”; printf(“%cn”,a3); printf(“%sn”,a);,對于字符數(shù)組,不僅可以引用它的數(shù)組元素,也 可以引用整個(gè)數(shù)組。,共 34 頁 第 9 頁,2 字符數(shù)組(續(xù)),static char a3; for (i=0;i3;i+) scanf(“ %c “,輸入數(shù)據(jù)順序: d o s 輸出數(shù)據(jù)順序: dos,四、字符數(shù)組的輸入與輸出,單字符輸入輸出(用格式符c控制),共 34 頁 第 10 頁,static char a7; scanf(“ %s “,a);,2 字符數(shù)組(續(xù)),字符數(shù)組名指明數(shù)組首地址,字符串輸入輸出(用格式符s控制),0不輸出,只能輸入不包括空格、t和n的字符串 自動(dòng)在串尾加0,printf(“ %sn “,a);,共 34 頁 第 11 頁,五、字符串在數(shù)組中的存儲(chǔ)格式,使用字符0作為字符串的結(jié)束標(biāo)記,就使得C語言對字符串的長度沒有具體的限制,但字符串的最大長度不能超過存儲(chǔ)它的字符數(shù)組的長度,否則會(huì)造成數(shù)組越界錯(cuò)誤。,2 字符數(shù)組(完),0是在字符串存入字符數(shù)組是由系統(tǒng)自動(dòng)添加的,并不是字符串本身的一部分,在計(jì)算串長的時(shí)候并不包括 0。,共 34 頁 第 12 頁,3 字符串處理函數(shù),一、字符串輸入輸出函數(shù),gets (字符數(shù)組名);,由終端輸入字符串到字符數(shù)組,以換行結(jié)束 返回字符數(shù)組的首地址,puts (字符數(shù)組名);,將以0結(jié)束的字符串輸出到終端 返回的函數(shù)值是字符數(shù)組的首地址,共 34 頁 第 13 頁,3 字符串處理函數(shù)(續(xù)),格式:strlen(x);,功能:返回x字符串中字符的個(gè)數(shù)(不包括字符串結(jié)束符)。,x是字符串首地址,其形式可以是字符數(shù)組或字符指針,也可以是字符常量。,二、求字符串長度的函數(shù),共 34 頁 第 14 頁,3 字符串處理函數(shù)(續(xù)),格式:strcat(字符數(shù)組1,字符數(shù)組2);,功能:連接兩個(gè)字符數(shù)組中的字符串,將串2接在串1后,結(jié)果存放在字符數(shù)組1中,返回的函數(shù)值是字符數(shù)組1的首地址。,字符數(shù)組1的長度不可缺省,足夠大。,三、字符串連接函數(shù),四、字符串復(fù)制函數(shù),格式:strcpy(字符數(shù)組1,字符數(shù)組2);,功能:將串2復(fù)制到串1數(shù)組中。,共 34 頁 第 15 頁,程序 #include void main( ) char str1100,str2100; int i, j; printf (”Enter string 1:”); gets (str1); printf (”Enter string 2:”); gets (str2); for ( i=0; str1i!=0; i+ ) ; /* 確定0位置 */ for ( j=0; (str1i=str2j) != 0; i+, j+ ) ; printf(”O(jiān)utput string 1:%sn”, str1); ,例8 字符串連接。將串str2連接到串str1之后。 根據(jù)字符串中 0 的位置進(jìn)行字符串連接。 關(guān)鍵:要用str2的第1個(gè)字符覆蓋str1的串結(jié)束標(biāo)記0。,a,b,c,d,e,f,g,0,str2,str1,.,.,.,算法: 1、查找str1的串結(jié)束標(biāo)記0 2、從str1的0開始,將str2復(fù)制到str1。,3 字符串處理函數(shù)(續(xù)),共 34 頁 第 16 頁,例9 字符串復(fù)制。 將字符串 str1 拷貝到串 str2 中。 沒有必要復(fù)制整個(gè)數(shù)組,根據(jù)字符串中 0 的位置,只對 0 前面的字符進(jìn)行復(fù)制。,#include void main ( ) char str1100, str2100; int i; printf (“Enter string 1:“); gets (str1); /* 輸入字符串str1 */ for (i=0; (str2i=str1i)!=0; i+) ;/* 復(fù)制*/ printf(“Output string 2:%sn“, str2); ,a,b,.,.,.,f,g,0,str1,str2,.,.,.,3 字符串處理函數(shù)(續(xù)),共 34 頁 第 17 頁,3 字符串處理函數(shù)(續(xù)),五、字符串比較函數(shù),格式:strcmp(字符數(shù)組1,字符數(shù)組2);,功能:比較串1和串2,返回結(jié)果為: 0-相等,正數(shù)-串1大,負(fù)數(shù)-串2大,”abc” 與 ”abc” ,相等 ”abcd” 與 ”abck”, ”abcd” 小 ”abc” 與 ”ab”, ”abc” 大,比較原則:按ASCII碼比較,共 34 頁 第 18 頁,例10 字符串比較。 確定字符串大小的基本規(guī)則: 按照串中對應(yīng)位置字符的ASCII碼值的大小確定大小。 例如:”abc” ”abadef” 因?yàn)樽址?c a #include ”stdio.h” void main( ) char str1100, str2100; int i; printf (“Enter string 1:“); gets(str1); printf (“Enter string 2:“); gets(str2); for ( i=0; (str1i=str2i) ,3 字符串處理函數(shù)(續(xù)),共 34 頁 第 19 頁,8-3 字符串處理函數(shù),六、大小寫字母的轉(zhuǎn)換,1 格式:strlwr(x),功能:把地址為x的字符串中所有大寫字母轉(zhuǎn)換成小寫字母。x可以是字符數(shù)組或字符指針,也可以是字符串常量。 調(diào)用形式: strlwr(x);,2 格式:strupr(x),功能:把地址為x的字符串中所有小寫字母轉(zhuǎn)換成大寫字母。x可以是字符數(shù)組或字符指針,也可以是字符串常量。 調(diào)用形式: strupr(x);,3 字符串處理函數(shù)(完),共 34 頁 第 20 頁,8-2 字符數(shù)組,一、二維字符數(shù)組的定義,如: char a25,b37;,與二維數(shù)值數(shù)組定義相同,但數(shù)據(jù)類型為char,4 二維字符數(shù)組,共 34 頁 第 21 頁,8-2 字符數(shù)組,二、二維字符數(shù)組的初始化,可以在定義的同時(shí)初始化,如: char a38=“str1“,”str2”,”string3”; char b 6=“s1“,”s2”,”str3”;,二維字符數(shù)組初始化,4 二維字符數(shù)組(續(xù)),二維字符數(shù)組初始化在內(nèi)存的存儲(chǔ),共 34 頁 第 22 頁,8-2 字符數(shù)組,三、二維字符數(shù)組的引用,如: (1) for (i=0;i3;i+) printf(“%sn”,ai); (2) for (i=0;i3;i+) printf(“%cn”,aii); (3) for (i=0;i3;i+) printf(“%sn”,對于二維字符數(shù)組,每行可以看做一個(gè)字符數(shù)組。 數(shù)組名ai??梢杂胊i引用i行的字符串,也可以 用aij引用i行j列的字符。,4 二維字符數(shù)組(完),輸出: (1) str1 (2) s (3) tr1 str2 t r2 strinf3 r ing3,共 34 頁 第 23 頁,#include #include void main ( ) char string 100, t; int i, j, n; gets ( string ); n = strlen ( string ); for ( i=0; i stringj+1 ) t = stringj; stringj = stringj+1; stringj+1 = t; puts ( string ); ,4 應(yīng)用實(shí)例,例11 輸入一行字符,將其中的每個(gè)字符從小到大排列 后輸出。,共 34 頁 第 24 頁,例12 輸入五個(gè)單詞,請將它們按從小到大的順序排列后輸出。 #include #include void main ( ) char str 520, t20; int i, j, n; printf (“Enter string:n“); for ( i=0; i 0 ) strcpy ( t, strj ); strcpy ( strj, strj+1); strcpy ( strj+1, t); printf(“Result:n“); for ( i=0; i5; i+ ) puts ( stri ); ,4 應(yīng)用實(shí)例(續(xù)),共 34 頁 第 25 頁,例13 任意輸入一個(gè)3位整數(shù),取其各位數(shù)字的和,再取這個(gè)和被7除的余數(shù),輸出余數(shù)對應(yīng)的星期(英文單詞)。 如:輸入123,(1+2+3)%7=6,則輸出saturday。 對3位整數(shù)n,拆分其百、十和個(gè)位的方法: 百位:i=n/100; 十位:j=n/10%10; 個(gè)位:k=n%10;,4 應(yīng)用實(shí)例(續(xù)),共 34 頁 第 26 頁,例13: #include “stdio.h” main( ) char week79 = “Sunday“, “Monday“,“Tuesday“, “Wednesday“,“Thursday“,“Friday“, “Saturday“ ; int i,j,k,a,n; do printf(“Please input a number:n“); scanf(“%d“, ,4 應(yīng)用實(shí)例(續(xù)),共 34 頁 第 27 頁,#include “stdio.h” #include “string.h” void main ( ) char str80, c; int i, j, n; printf (“Enter string:“); gets ( str ); n = strlen(str); for ( i=0, j=n-1; ij; i+, j- ) c = stri; stri = strj; strj = c; printf(“Result:“); puts ( str );,4 應(yīng)用實(shí)例,例14 輸入一行字符串,將其反序后再輸出。,共 34 頁 第 28 頁,#include “stdio.h” #include “string.h” void main ( ) char str180, str280, str80; int i, j, n; printf (“Enter string1:“); gets ( str1 ); printf (“Enter string2:“); gets ( str2); n = 0; for ( i=0,j=0; str1i!=0 ,4 應(yīng)用實(shí)例,例15 輸入兩個(gè)已經(jīng)按從小到大順序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 氣管腫瘤術(shù)后護(hù)理規(guī)范與要點(diǎn)
- 原地單手肩上投籃
- 勞動(dòng)教育實(shí)施路徑與實(shí)踐創(chuàng)新
- 中華護(hù)理學(xué)會(huì)介紹
- 呼吸內(nèi)科創(chuàng)建簡介
- 采購招標(biāo)法律法規(guī)
- 購物中心教育培訓(xùn)商業(yè)化探索
- 手術(shù)室胃切除護(hù)理查房
- 子癇前期重度術(shù)后護(hù)理
- 2025年零售門店數(shù)字化技術(shù)應(yīng)用在顧客互動(dòng)營銷中的策略報(bào)告
- 員工宿舍核查表
- 腰椎椎管狹窄癥治療的新方法課件
- 完工付款最終付款申請表
- 有限空間作業(yè)及應(yīng)急物資清單
- 人工動(dòng)靜脈內(nèi)瘺
- 國際經(jīng)濟(jì)學(xué)期末考試試題庫含答案
- 基于PLC的音樂噴泉控制系統(tǒng)的設(shè)計(jì)-畢業(yè)設(shè)計(jì)
- 體育場地與設(shè)施
- 廣西大學(xué)數(shù)學(xué)建模競賽選拔賽題目
- 受戒申請表(共3頁)
- 五年級(jí)部編版語文下學(xué)期修改病句專項(xiàng)強(qiáng)化練習(xí)題
評論
0/150
提交評論