版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、PASCAL第十課字符與字符串處理一、字符、字符串類型的使用 (一)字符類型 字符類型為由一個(gè)字符組成的字符常量或字符變量,字符常量定義: const 字符常量='字符'字符變量定義: Var 字符變量:char; 字符類型是一個(gè)有序類型, 字符的大小順序按其ASC代碼的大小而定,函數(shù)succ、pred、ord適用于字符類型,例如:后繼函數(shù):succ('a')='b' 前繼函數(shù):pred('B')='A' 序號(hào)函數(shù):ord('A')=65 【例1】按字母表順序和逆序每隔一個(gè)字母打印,即打印出: a
2、c e g I k m o q s u w y z x r v t p n l j h f d b 程序如下: program ex8_1; var letter:char; begin for letter:='a' to 'z' do if (ord(letter)-ord('a')mod 2=0 then write(letter:3); writeln; for letter:='z' downto 'a' do if (ord(letter)-ord('z')mod 2 =0 then w
3、rite(letter:3); writeln; end. 分析:程序中,我們利用了字符類型是順序類型這一特性,直接將字符類型變量作為循環(huán)變量,使程序處理起來比較直觀。 (二)字符串類型 字符串是由字符組成的有窮序列,字符串類型定義: type <字符串類型標(biāo)識(shí)符>=stringn; var 字符串變量:字符串類型標(biāo)識(shí)符; 其中:n是定義的字符串長度,必須是0255之間的自然整數(shù),第0號(hào)單元中存放串的實(shí)際長度,程序運(yùn)行時(shí)由系統(tǒng)自動(dòng)提供,第1n號(hào)單元中存放串的字符,若將stringn寫成string,則默認(rèn)n值為255。 例如:type man=string8;line=string
4、;var name:man;screenline:line;另一種字符類型的定義方式為把類型說明的變量定義合并在一起。 例如:VAR name:STRING8;screenline:STRING;Turbo Pascal中,一個(gè)字符串中的字符可以通過其對(duì)應(yīng)的下標(biāo)靈活使用。 例如:var name:string; begin readln(nsme); for i:=1 to ord(name0) do writeln(namei);end. 語句writeln(namei)輸出name串中第i個(gè)字符。 【例2】求輸入英文句子單詞的平均長度程序如下:program ex8_2; var ch:s
5、tring; s,count,j:integer; begin write('The sentence is :'); readln(ch); s:=0; count:=0; j:=0; repeat inc(j); if not (chj in ':',',','','''','!','?','.',' ') then inc(s); if chj in' ','.','!','
6、?' then inc(count); until (j=ord(ch0) or (chj in '.','!','?'); if chj<>'.' then writeln('It is not a sentence.') else writeln('Average length is ',s/count:10:4); end.分析:程序中,變量s用于存句子中英文字母的總數(shù),變量count用于存放句子中單詞的個(gè)數(shù),chj表示ch串中的第j個(gè)位置上的字符,ord(ch0)為ch串
7、的串長度。程序充分利用Turbo Pascal允許直接通過字符串下標(biāo)得到串中的字符這一特點(diǎn),使程序比較簡捷。 二、字符串的操作 (一)字符串的運(yùn)算和比較 由字符串的常量、變量和運(yùn)算符組成的表達(dá)式稱為字符串表達(dá)式,字符串運(yùn)算符包括: +:連接運(yùn)算符例如:'Turbo '+'PASCAL'的結(jié)果是'Turbo PASCAL'若連接的結(jié)果字符串長度超過255,則被截成255個(gè)字符;若連接后的字符串存放在定義的字符串變量中,當(dāng)其長度超過定義的字符串長度時(shí),超過部份字符串被截?cái)唷?例如:var str1,str2,str3:string8;begin st
8、r1:='Turbo 'str2:='PASCAL'str3:=str1+str2;end.則str3的值為:'Turbo PA'=、<>、<、<=、>、>=:關(guān)系運(yùn)算符 兩個(gè)字符串的比較規(guī)則為,從左到右按照ASC碼值逐個(gè)比較,遇到ASC碼不等時(shí),規(guī)定ASC碼值大的字符所在的字符串為大。 例如:'AB'<'AC' 結(jié)果為真'12'<'2' 結(jié)果為真'PASCAL '='PASCAL' 結(jié)果為假【例3】對(duì)給
9、定的10個(gè)國家名,按其字母的順序輸出程序如下: program ex8_3; var i,j,k:integer; t:string20; cname:array1.10 of string20; begin for i:=1 to 10 do readln(cnamei); for i:=1 to 9 do begin k:=i; for j:=i+1 to 10 do if cnamek>cnamej then k:=j; t:=cnamei;cnamei:=cnamek;cnamek:=t; end; for i:=1 to 10 do writeln(cnamei); end.
10、分析:程序中,當(dāng)執(zhí)行到if cnamek>cnamej時(shí),自動(dòng)將cnamek串與cnamej串中的每一個(gè)字符逐個(gè)比較,直至遇到不等而決定其大小。這種比較方式是計(jì)算機(jī)中字符串比較的一般方式。 三、字符串的函數(shù)和過程 Turbo Pascal提供了八個(gè)標(biāo)準(zhǔn)函數(shù)和標(biāo)準(zhǔn)過程,見下表,利用這些標(biāo)準(zhǔn)函數(shù)與標(biāo)準(zhǔn)過程,一些涉及到字符串的問題可以靈活解決。 函數(shù)和過程名 功 能 說 明 CONCAL(ST1,.,STN)將N個(gè)字符串連接起來等效于ST1+.+ST2,是函數(shù)COPY(S,M,N)取S中第M個(gè)字符開始的N個(gè)字符 若M大于S的長度,則返回空串;否則,若M+N大于s的長度,則截?cái)?,是函?shù)LENGT
11、H(S) 求s的動(dòng)態(tài)的長度 返回值為整數(shù),是函數(shù)POS(SUB,S) 在S中找子串SUB返回值為SUB在S中的位置,為byte型,是函數(shù)UPCASE(CH) 將字母CH轉(zhuǎn)換成大寫字母若CH不為小寫字母,則不轉(zhuǎn)換,是函數(shù)INSERT(SOUR,S,M) 在S的第M個(gè)字符位置處插入子串SOUR若返回串超過255,則截?cái)?,是過程DELETE(S,M,N) 刪除S中第M個(gè)字符開始的N個(gè)字符串 若M大于S的長度,則不刪除;否則,若M+N大于S的長度,則刪除到結(jié)尾,是過程STR(X:W:D,S) 將整數(shù)或?qū)崝?shù)X轉(zhuǎn)換成字符串SW和D是整型表達(dá)式,意義同帶字寬的write語句,是過程VAL(S,X,CODE)
12、 將字符串S轉(zhuǎn)換成整數(shù)或?qū)崝?shù)X若S中有非法字符,則CODE存放非法字符在S中的下標(biāo);否則,CODE為零,CODE為整型,是過程FILLCHAR(S,N,CH)給S填充N個(gè)相同的CH用于初始化數(shù)組或字符串,N常用SIZEOF(S)代替,是過程注:關(guān)于字符串的幾點(diǎn)說明空串表示為'',其長度為,不等于含有一個(gè)空格的串'',它的長度為;如:A:=''就是將A字符串置空FILLCHAR可以用于字符串變量和任何類型數(shù)組變量的初始化,比如:FILLCHAR(A,SIZEOF(A),0)將整型數(shù)組A全置FILLCHAR(B,SIZEOF(B),TRUE)將布爾型
13、數(shù)組B全置FILLCHAR(C,SIZEOF(C),'A')將整型字符串C全置'A'【例4】 校對(duì)輸入日期(以標(biāo)準(zhǔn)英語日期,月/日/年)的正確性,若輸入正確則以年月日的方式輸出。 程序如下: program ex8_4; const max:array1.12 of byte =(31,29,31,30,31,30,31,31,30,31,30,31); var st:string; p,w,y,m,d:integer; procedure err; begin write('Input Error!'); readln; halt; end;
14、procedure init(var x:integer); begin p:=pos('/',st); if (p=0) or (p=1) or (p>3) then err; val(copy(st,1,p-1),x,w); if w<>0 then err; delete(st,1,p); end; begin write('The Date is :'); readln(st); init(m); init(d); val(st,y,w); if not (length(st)<>4) or (w<>0) or
15、(m>12) or (d>maxm) then err; if (m=2) and (d=29) then if y mod 100=0 then begin if y mod 400<>0 then err; end else if y mod 4<>0 then err; write('Date : ',y,'.',m,'.',d); readln; end. 分析:此題的題意很簡單,但在程序處理時(shí)還需考慮以下幾方面的問題。 1判定輸入的月和日應(yīng)是位或位的數(shù)字,程序中用了一個(gè)過程inst,利用串函數(shù)pos,求得分隔符/所在的位置而判定輸入的月和日是否為位或位,利用標(biāo)準(zhǔn)過程val判定輸入的月和日是否為數(shù)字; 2判定月和日是否規(guī)定的日期范圍及輸入的年是否正確; 3若輸入的月是2月份,則還需考慮閏年的情況。 【例5】對(duì)輸入的一句子實(shí)現(xiàn)查找且置換的功能(找到某個(gè)子串并換成另一子串)。 程序如下: program ex8_5; var s1,s,o:string; i:integer; begin write('The text:'); readln(s1); write(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 感染性休克專項(xiàng)測(cè)試題附答案
- 隔離病房防臺(tái)風(fēng)預(yù)案
- 2026四川大學(xué)華西醫(yī)院基建運(yùn)行部技術(shù)工人招聘2人備考題庫及答案詳解1套
- 2026吉林市化工醫(yī)院招聘高層次人才備考題庫參考答案詳解
- 2026山東淄博文昌湖省級(jí)旅游度假區(qū)面向大學(xué)生退役士兵專項(xiàng)崗位招聘1人備考題庫帶答案詳解
- 2025年抽水蓄能電站運(yùn)行維護(hù)技術(shù)知識(shí)考察試題及答案解析
- 2026年中共昆明市委黨校引進(jìn)高層次人才招聘備考題庫(3人)及一套參考答案詳解
- 2026四川成都市雙流區(qū)實(shí)驗(yàn)第四幼兒園招聘3人備考題庫及答案詳解(易錯(cuò)題)
- 2025年全國建筑電工證理論考試練習(xí)題含答案
- 2026廣東深圳市蛇口育才教育集團(tuán)育才三中招聘初中道法、數(shù)學(xué)教師2人備考題庫及答案詳解參考
- 云南省2026年普通高中學(xué)業(yè)水平選擇性考試調(diào)研測(cè)試歷史試題(含答案詳解)
- 廣東省花都亞熱帶型巖溶地區(qū)地基處理與樁基礎(chǔ)施工技術(shù):難題破解與方案優(yōu)化
- GB 4053.3-2025固定式金屬梯及平臺(tái)安全要求第3部分:工業(yè)防護(hù)欄桿及平臺(tái)
- 2026中央廣播電視總臺(tái)招聘124人參考筆試題庫及答案解析
- JG/T 3030-1995建筑裝飾用不銹鋼焊接管材
- 羽毛球二級(jí)裁判員試卷
- 通風(fēng)與空調(diào)監(jiān)理實(shí)施細(xì)則abc
- JJF 1614-2017抗生素效價(jià)測(cè)定儀校準(zhǔn)規(guī)范
- GB/T 5237.3-2017鋁合金建筑型材第3部分:電泳涂漆型材
- GB/T 3625-2007換熱器及冷凝器用鈦及鈦合金管
- GA 1016-2012槍支(彈藥)庫室風(fēng)險(xiǎn)等級(jí)劃分與安全防范要求
評(píng)論
0/150
提交評(píng)論