![字符數(shù)組和字符串_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/ca5b9d4b-521c-4edc-90f5-5b1556fa5e4e/ca5b9d4b-521c-4edc-90f5-5b1556fa5e4e1.gif)
![字符數(shù)組和字符串_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/ca5b9d4b-521c-4edc-90f5-5b1556fa5e4e/ca5b9d4b-521c-4edc-90f5-5b1556fa5e4e2.gif)
![字符數(shù)組和字符串_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/ca5b9d4b-521c-4edc-90f5-5b1556fa5e4e/ca5b9d4b-521c-4edc-90f5-5b1556fa5e4e3.gif)
![字符數(shù)組和字符串_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/ca5b9d4b-521c-4edc-90f5-5b1556fa5e4e/ca5b9d4b-521c-4edc-90f5-5b1556fa5e4e4.gif)
![字符數(shù)組和字符串_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/19/ca5b9d4b-521c-4edc-90f5-5b1556fa5e4e/ca5b9d4b-521c-4edc-90f5-5b1556fa5e4e5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、字符數(shù)組和字符串字符數(shù)組和字符串 主講人:山成虎1.字符類型字符類型2.字符數(shù)組字符數(shù)組3.字符串類型字符串類型 4.字符串的操作字符串的操作 5.字符串的函數(shù)和過(guò)程字符串的函數(shù)和過(guò)程6.字符數(shù)組和字符串的區(qū)別字符數(shù)組和字符串的區(qū)別在在Pascal語(yǔ)言中,字符型用語(yǔ)言中,字符型用char作為標(biāo)識(shí)符。字符型必須用單引號(hào)括起來(lái),作為標(biāo)識(shí)符。字符型必須用單引號(hào)括起來(lái),字母作為字符型時(shí),大小寫是不等價(jià)的。字母作為字符型時(shí),大小寫是不等價(jià)的。 所有字符采用所有字符采用ASCII編碼,共有編碼,共有128個(gè)字符(見(jiàn)書個(gè)字符(見(jiàn)書p25表表2-8)。在程序中,通常用一對(duì)單引號(hào)將單個(gè)字符括起來(lái)表)。在程序中,
2、通常用一對(duì)單引號(hào)將單個(gè)字符括起來(lái)表示一個(gè)字符常量。如:示一個(gè)字符常量。如:a,A,0等。特殊地,對(duì)于單引號(hào)字符,則要表示等。特殊地,對(duì)于單引號(hào)字符,則要表示成成。對(duì)于。對(duì)于ASCII字符集中,按每個(gè)字符在字符集中的位置,將每個(gè)字符編字符集中,按每個(gè)字符在字符集中的位置,將每個(gè)字符編號(hào)為號(hào)為0127,編號(hào)稱為對(duì)應(yīng)字符的序號(hào)。例如:,編號(hào)稱為對(duì)應(yīng)字符的序號(hào)。例如:字符字符a的序號(hào)是的序號(hào)是97,字符,字符A的的序號(hào)是序號(hào)是65,字符,字符0的序號(hào)是的序號(hào)是48.Pascal提供的字符類操作函數(shù)有:提供的字符類操作函數(shù)有:(1)pred(前導(dǎo)前導(dǎo)),succ(后繼后繼)字母字母b的前導(dǎo)是的前導(dǎo)是a,
3、后繼是,后繼是c,即:即:pred(b)=a,succ(b)=c;Pred與與succ互逆互逆 (2)ord(取字符序號(hào)取字符序號(hào)),chr(將序號(hào)轉(zhuǎn)字符)(將序號(hào)轉(zhuǎn)字符)字母字母a的序號(hào)是的序號(hào)是97,序號(hào),序號(hào)97對(duì)應(yīng)的字符是對(duì)應(yīng)的字符是a,即即ord(a)=97,chr(97)=a;Ord與與chr互逆互逆 (3)upcase(小寫轉(zhuǎn)大寫小寫轉(zhuǎn)大寫)Upcase(a)=A.1.字符類型字符類型字符常量定義字符常量定義:const字符常量字符常量=字符字符;字符類型為由一個(gè)字符組成的字符常量或字符變量字符類型為由一個(gè)字符組成的字符常量或字符變量 。 字符變量定義字符變量定義:var字符變量
4、字符變量:char;字符類型是一個(gè)有序類型字符類型是一個(gè)有序類型, , 字符的大小順序按其字符的大小順序按其ASCASC代碼的代碼的大小而定。大小而定。 例例1 按字母表順序和逆序每隔一個(gè)字母打印。即打印出:按字母表順序和逆序每隔一個(gè)字母打印。即打印出:a c e g I k m o q s u w yz x r v t p n l j h f d b分析:程序中,我們利用了字符類型是順序類型這一特性,直分析:程序中,我們利用了字符類型是順序類型這一特性,直接將字符類型變量作為循環(huán)變量,使程序處理起來(lái)比較直觀。接將字符類型變量作為循環(huán)變量,使程序處理起來(lái)比較直觀。program ex1;var
5、 letter:char;beginfor letter:=a to z doif (ord(letter)-ord(a)mod 2=0 then write(letter:3);writeln;for letter:=z downto a doif (ord(letter)-ord(z)mod 2 =0 then write(letter:3);writeln;end.2.字符數(shù)組字符數(shù)組當(dāng)我們需要同時(shí)使用多個(gè)字符變量時(shí),可以根據(jù)需要定義字符數(shù)組。當(dāng)我們需要同時(shí)使用多個(gè)字符變量時(shí),可以根據(jù)需要定義字符數(shù)組。字符數(shù)組定義:字符數(shù)組定義:格式一:格式一:type arr=array1.n of
6、char; a:arr;格式二:格式二:a:array1.n of char;例例2 輸入一串字符輸入一串字符,字符個(gè)數(shù)不超過(guò)字符個(gè)數(shù)不超過(guò)100,且以且以“.”結(jié)束。結(jié)束。 判斷它判斷它們是否構(gòu)成回文。們是否構(gòu)成回文。分析:所謂回文指從左到右和從右到左讀一串字符的值是一分析:所謂回文指從左到右和從右到左讀一串字符的值是一樣的,如樣的,如12321,ABCBA,AA12321,ABCBA,AA等。先讀入要判斷的一串字符(放等。先讀入要判斷的一串字符(放入數(shù)組入數(shù)組letterletter中),并記住這串字符的長(zhǎng)度,然后首尾字符中),并記住這串字符的長(zhǎng)度,然后首尾字符比較,并不斷向中間靠攏,就可
7、以判斷出是否為回文。比較,并不斷向中間靠攏,就可以判斷出是否為回文。program ex2;var letter :array1.100of char;i,j :0.100;ch :char;begin 讀入一個(gè)字符串以讀入一個(gè)字符串以.號(hào)結(jié)束號(hào)結(jié)束write(Input a string:);i:=0;read(ch);while ch. dobegini:=i+1;letteri:=ch;read(ch)end; 判斷它是否是回文判斷它是否是回文j:=1;while (j=ithen writeln(Yes.)else writeln(No.);end.3.字符串類型字符串類型 字符串是由
8、字符組成的有窮序列。字符串是由字符組成的有窮序列。字符串類型定義:字符串類型定義: type =stringn ;var字符串變量字符串變量: 字符串類型標(biāo)識(shí)符字符串類型標(biāo)識(shí)符;其中其中:n是定義的字符串長(zhǎng)度是定義的字符串長(zhǎng)度,必須是必須是0255之間的自然整數(shù)之間的自然整數(shù),第第0號(hào)單元中存放串的號(hào)單元中存放串的實(shí)際長(zhǎng)度實(shí)際長(zhǎng)度,程序運(yùn)行時(shí)由系統(tǒng)自動(dòng)提供程序運(yùn)行時(shí)由系統(tǒng)自動(dòng)提供,第第1n號(hào)單元中存放串的字符號(hào)單元中存放串的字符。若將。若將stringn寫成寫成string,則默認(rèn),則默認(rèn)n值為值為255。例如:例如:typeman=string8;line=string;varname:ma
9、n;screenline:line;另一種字符類型的定義方式為把另一種字符類型的定義方式為把類型說(shuō)明的變量定義合并在一起。類型說(shuō)明的變量定義合并在一起。例如:例如:var name:string8;screenline:string;例如:例如:var name:string;beginreadln(name););for i:=1 to ord(name0)dowriteln(namei););end.free pascal中,一個(gè)字符串中的字符可以通過(guò)其對(duì)應(yīng)的下標(biāo)靈活使用。中,一個(gè)字符串中的字符可以通過(guò)其對(duì)應(yīng)的下標(biāo)靈活使用。語(yǔ)句語(yǔ)句writeln(namei)輸出)輸出name串中第串中第
10、i個(gè)字符。個(gè)字符。 4.字符串的操作字符串的操作 (1)字符串的運(yùn)算和比較)字符串的運(yùn)算和比較 由字符串的常量、變量和運(yùn)算符組成的表達(dá)式稱為字符串表達(dá)式。由字符串的常量、變量和運(yùn)算符組成的表達(dá)式稱為字符串表達(dá)式。1+:連接運(yùn)算符:連接運(yùn)算符例如:例如:Turbo +PASCAL的結(jié)果是的結(jié)果是Turbo PASCAL。若連接的結(jié)果字符串長(zhǎng)度超過(guò)若連接的結(jié)果字符串長(zhǎng)度超過(guò)255,則被截成,則被截成255個(gè)字符。若連接后的字個(gè)字符。若連接后的字符串存放在定義的字符串變量中,當(dāng)其長(zhǎng)度超過(guò)定義的字符串長(zhǎng)度時(shí),超過(guò)符串存放在定義的字符串變量中,當(dāng)其長(zhǎng)度超過(guò)定義的字符串長(zhǎng)度時(shí),超過(guò)部份字符串被截?cái)?。部份?/p>
11、符串被截?cái)?。例如:例如:varstr1,str2,str3:string8;beginstr1:=Turbo ;str2:=PASCAL;str3:=str1+str2;end則則str3的值為:的值為:Turbo PA。2=、=、=:關(guān)系運(yùn)算符:關(guān)系運(yùn)算符兩個(gè)字符串的比較規(guī)則為,從左到右按照兩個(gè)字符串的比較規(guī)則為,從左到右按照ASC碼值逐個(gè)比較,遇到碼值逐個(gè)比較,遇到ASC碼碼不等時(shí)不等時(shí),規(guī)定規(guī)定ASC碼值大的字符所在的字符串為大。碼值大的字符所在的字符串為大。例如:例如:ABAC 結(jié)果為真;結(jié)果為真;122 結(jié)果為真;結(jié)果為真;PASCAL =PASCAL 結(jié)果為假;結(jié)果為假;例例3 對(duì)
12、給定的對(duì)給定的10個(gè)國(guó)家名,按其字母的順序輸出。個(gè)國(guó)家名,按其字母的順序輸出。program ex3;var i,j,k:integer;t:string20;cname:array1.10 of string20;beginfor i:=1 to 10 do readln(cnamei);for i:=1 to 9 dobegink:=i;for j:=i+1 to 10 doif cnamekcnamej then k:=j;if(ki) then begin t:=cnamei;cnamei:=cnamek;cnamek:=t; end; end;for i:=1 to 10 do wr
13、iteln(cnamei);end.分析:當(dāng)執(zhí)行到分析:當(dāng)執(zhí)行到if cnamekcnamejif cnamekcnamej時(shí),自動(dòng)將時(shí),自動(dòng)將cnamekcnamek串與串與cnamejcnamej串中的每一個(gè)字符逐個(gè)比較,直至遇到不等而決定其大小。串中的每一個(gè)字符逐個(gè)比較,直至遇到不等而決定其大小。選擇排序選擇排序5.字符串的函數(shù)和過(guò)程字符串的函數(shù)和過(guò)程函數(shù)和過(guò)程名函數(shù)和過(guò)程名功功 能能說(shuō)說(shuō) 明明copy(s,m,n)copy(s,m,n)取取s s中第中第m m個(gè)字符開個(gè)字符開始的始的n n個(gè)字符個(gè)字符若若m m大于大于s s的長(zhǎng)度,則返回空串;否則,若的長(zhǎng)度,則返回空串;否則,若m+n
14、m+n大于大于s s的長(zhǎng)度,則截?cái)嗟拈L(zhǎng)度,則截?cái)鄉(xiāng)ength(s)length(s)求求s s的動(dòng)態(tài)的長(zhǎng)度的動(dòng)態(tài)的長(zhǎng)度返回值為整數(shù)返回值為整數(shù)pos(sub,s)pos(sub,s)在在s s中找子串中找子串subsub返回值為返回值為subsub在在s s中的位置,為中的位置,為bytebyte型型insert(sour,s,m)insert(sour,s,m)在在s s的第的第m m個(gè)字符位個(gè)字符位置處插入子串置處插入子串soursour若返回串超過(guò)若返回串超過(guò)255255,則截?cái)?,則截?cái)郿elete(s,m,n)delete(s,m,n)刪除刪除s s中第中第m m個(gè)字符個(gè)字符開始的開始
15、的n n個(gè)字符串個(gè)字符串若若m m大于大于s s的長(zhǎng)度,則不刪除;否則,若的長(zhǎng)度,則不刪除;否則,若m+nm+n大于大于s s的長(zhǎng)度,則刪除到結(jié)尾的長(zhǎng)度,則刪除到結(jié)尾Str(x:w:d,s)Str(x:w:d,s)將整數(shù)或?qū)崝?shù)將整數(shù)或?qū)崝?shù)x x轉(zhuǎn)轉(zhuǎn)換成字符串換成字符串s sw w 和和 d d是整型表達(dá)式,意義同帶字寬的是整型表達(dá)式,意義同帶字寬的writewrite語(yǔ)句語(yǔ)句val(s,x,code)val(s,x,code)將字符串將字符串S S 轉(zhuǎn)換成轉(zhuǎn)換成整數(shù)或?qū)崝?shù)整數(shù)或?qū)崝?shù)x x若若S S中有非法字符,則中有非法字符,則codecode存放非法字符在存放非法字符在S S中的下標(biāo);否則,
16、中的下標(biāo);否則,codecode為零。為零。codecode為整型為整型upcase(ch)upcase(ch)將字母將字母chch轉(zhuǎn)換成大轉(zhuǎn)換成大寫字母寫字母若若chch不為小寫字母,則不轉(zhuǎn)換不為小寫字母,則不轉(zhuǎn)換例例4 正確的郵箱地址格式是正確的郵箱地址格式是“用戶名用戶名服務(wù)器名服務(wù)器名”,輸入一個(gè)郵箱地址判斷它是,輸入一個(gè)郵箱地址判斷它是不是合法的郵箱地址。不是合法的郵箱地址。分析分析:此題的題意很簡(jiǎn)單,在判斷郵箱地址合法性上需要考慮:此題的題意很簡(jiǎn)單,在判斷郵箱地址合法性上需要考慮: 1郵箱地址字符串中是否包括字符郵箱地址字符串中是否包括字符“”; 2字符不能出現(xiàn)在第一個(gè)位置也不能出
17、現(xiàn)字符的末尾。字符不能出現(xiàn)在第一個(gè)位置也不能出現(xiàn)字符的末尾。program ex4;var p : integer; s : string;begin readln(s); p := pos(,s); if (p1) and (plength(s) then writeln(ok) else writeln(error);end.例例 4 實(shí)現(xiàn)查找與替換的功能,輸入原句、查找及替換的字符串。實(shí)現(xiàn)查找與替換的功能,輸入原句、查找及替換的字符串。分析:查找功能利用分析:查找功能利用pos函數(shù),替換功能是先把原內(nèi)容刪除(函數(shù),替換功能是先把原內(nèi)容刪除(delete(s,m,n)),),再插入新的內(nèi)容
18、(再插入新的內(nèi)容(insert(sour,s,m))。)。program ex5;var s0,s1,s2:string;i:integer;begin readln(s0);readln(s1);readln(s2);/依次輸入原句、查找內(nèi)容、替換的目標(biāo)內(nèi)容依次輸入原句、查找內(nèi)容、替換的目標(biāo)內(nèi)容i:=pos(s1,s0); /在在s0中查找中查找s1,找不到返回找不到返回0while i0 do /i=0說(shuō)明沒(méi)有找到查找內(nèi)容,不循環(huán)說(shuō)明沒(méi)有找到查找內(nèi)容,不循環(huán)begin delete(s0,i,length(s1); /在在s0中從第中從第i個(gè)位開始刪除個(gè)位開始刪除length(s1)個(gè)字符個(gè)字符 insert(s2,s0,i); /把把s2的內(nèi)容插入的內(nèi)容插入s0的第的第i個(gè)位置個(gè)位置 i:=pos(s1,s0);end;writeln(s0);end.6.字符數(shù)組和字符串的區(qū)別字符數(shù)組和字符串的區(qū)別(1)字符數(shù)組是一般的數(shù)組,是我們定義的數(shù)據(jù)類型,字符串類型是系統(tǒng))字符數(shù)組是一般的數(shù)組,是我們定義的數(shù)據(jù)類型,字符串類型是系統(tǒng)定義的類型,我們可以認(rèn)為字符串是系統(tǒng)定義的字符數(shù)組;定義的類型,我們可以認(rèn)為字符串是系統(tǒng)定義的字符數(shù)組;(2)字符數(shù)組不能整體讀入和輸出,必須單個(gè)元素操作,字符串可以整體)字符數(shù)組不能整體讀入和輸出,必須單個(gè)元素操作,字符串可以整體讀入和輸
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 4301-5:2025 EN Cranes - Classification - Part 5: Bridge and gantry cranes
- 2025年度玉石雕刻設(shè)計(jì)與銷售服務(wù)合同
- 2024年12月份新能源汽車行業(yè)月報(bào)
- 2025年綠色建筑節(jié)能改造工程房地產(chǎn)聯(lián)合開發(fā)協(xié)議書
- 探索班級(jí)中的責(zé)任與擔(dān)當(dāng)計(jì)劃
- 加強(qiáng)保安服務(wù)宣傳的重要性計(jì)劃
- 生物教育游戲化學(xué)習(xí)實(shí)踐計(jì)劃
- 秋季學(xué)期公益項(xiàng)目與社會(huì)服務(wù)計(jì)劃
- 會(huì)計(jì)人員年度工作總結(jié)與展望計(jì)劃
- 心靈啟迪幼兒園教學(xué)工作計(jì)劃文檔
- 2024年實(shí)驗(yàn)小學(xué)大隊(duì)委競(jìng)選筆試試題題庫(kù)
- 學(xué)校辦公室衛(wèi)生制度
- 醫(yī)學(xué)生理學(xué)智慧樹知到答案2024年德州學(xué)院
- GB/T 44412-2024船舶與海上技術(shù)液化天然氣燃料船舶加注規(guī)范
- 小學(xué)三年級(jí)數(shù)學(xué)上冊(cè)口算題卡(加換算)
- 小學(xué)數(shù)學(xué)二年級(jí)《數(shù)圖形》練習(xí)題
- 機(jī)械制造HSE協(xié)議書
- 2024-2030年中國(guó)靜脈血栓栓塞癥(VTE)防治行業(yè)市場(chǎng)全景監(jiān)測(cè)及投資策略研究報(bào)告
- 財(cái)務(wù)審計(jì)服務(wù)投標(biāo)方案(技術(shù)方案)
- RBA商業(yè)道德程序文件(系列)
- 2024年國(guó)家保密法知識(shí)競(jìng)賽經(jīng)典題庫(kù)及完整答案【必刷】
評(píng)論
0/150
提交評(píng)論