版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
字符串1、字符串:用一對單引號(hào)括起來的字符序列。如’Turbopascal’;序列中字符的個(gè)數(shù)稱為字符串的長度,長度為0的字符串稱為空串。2、字符串常量定義:const
字符串常量名='字符串';例如:const
head='myname';3、字符串變量定義:var
name:string[12];string是保留字,方括號(hào)中的數(shù)是字符串的最大長度,這個(gè)數(shù)最多不得超過255。若類型中省略長度標(biāo)記,則串長上限為255。4、字符串通過類似于數(shù)組的方法將一些字符存儲(chǔ)在內(nèi)存中。字符串變量中每個(gè)字符都有一個(gè)相應(yīng)的下標(biāo),前面變量name中最多可以放12個(gè)字符,我們可以通過name[1],name[2],…,name[12]來使用這些字符。實(shí)際上字符串變量有N+1個(gè)元素,第0個(gè)元素中存放字符串的實(shí)際長度(以字符的形式存放)。若name:=‘Libing’,則name[0]中存放的是序號(hào)為6的字符,有ord(name[0])=length(name)5、字符串的輸入、輸出。
字符串類型既可按數(shù)組方式輸入、輸出,也可直接輸入、輸出:readln(s);writeln(s);多個(gè)字符串輸入時(shí)以回車作為數(shù)據(jù)間的分隔符;每個(gè)readln語句只能讀入一個(gè)字符串。6、字符串中任意長度的連續(xù)的字符組成的字符串叫做原字符串的子串,與子串相對應(yīng)的原字符串叫做主串。如’CD’是’ABCDE’的子串,且子串在主串中的位置為3。7、TURBOPASCAL中提供了強(qiáng)大的庫函數(shù)和庫過程來支持字符串的運(yùn)算,下表對它們作了簡單的介紹。函數(shù)名意義結(jié)果類型示例concat(s1,s2,…,sn)連接字符串s1,s2,…,snstrings1:='123';s2:='456';s:=concat(s1,s2);
結(jié)果:s='123456'copy(s,I,k)返回字符串s中第i個(gè)字符開始的長度為k的子串strings:='123456';s1:=copy(s,2,3);
結(jié)果:s1='234'Length(s)返回字符串s的長度integers:='123456';l:=length(s);
結(jié)果:l=6pos(s,t)返回子串s在字符串t中的起始位置bytet:='123.45';i:=pos('.',t);
結(jié)果:i=4過程名意義示例delete(s,i,k)將字符串s中的第i個(gè)字符開始的長度為k的子串刪除
s:='TurboPascal';delete(s,6,7);
結(jié)果:s='Turbo'insert(s,t,i)在串t中第i個(gè)字符開始的位置上插入一個(gè)指定子串st:='Pascal';insert('Turbo',s,1);結(jié)果:t='TurboPascal'str(x,s)把數(shù)值x轉(zhuǎn)換成相應(yīng)的字符串s,其中,x是整型、實(shí)型等數(shù)值型數(shù)據(jù),可以指定域?qū)挕?/p>
x:=1234;
str(x,s);
結(jié)果:s='1234'val(s,k,code)把字符串s轉(zhuǎn)換成相應(yīng)的數(shù)值k,code為返回代碼,為0表示轉(zhuǎn)換成功,否則轉(zhuǎn)換失敗,code的值即為出錯(cuò)的字符在s中的位置
s:='1234';
val(s,k,code);
結(jié)果:k=1234vars,s1:string;t,k:integer;begin
readln(s);readln(s1);k:=0;repeatt:=pos(s1,s);ift<>0thenbegin
delete(s,t,length(s1));k:=k+1;end;untilt=0;
writeln(k);end.輸出:41、閱讀下列程序,寫出運(yùn)行結(jié)果。輸入:affhwtfhy
tfhfh
fhvar
s,word:string[50];
temp:string[1];
i:integer;begins:='Icomefrombeijing.';word:='';fori:=1tolength(s)dobegintemp:=copy(s,i,1);if(temp<>'')and(temp<>'.')thenword:=word+tempelsebegin
writeln(word);word:='';end;end;end.2、閱讀下列程序,寫出運(yùn)行結(jié)果。輸出:Icomefrombeijing.3、輸入一個(gè)字符串,判斷它是否是回文。varL,i,j:integer;s:string;
b:boolean;begin
readln(s);L:=();
i:=1;j:=L;b:=true;while(i<j)andbdobeginb:=();
i:=i+1;j:=j-1;end;if()thenwriteln('yes')elsewrite('no');end.length(s)(s[i]=s[j])b采用兩個(gè)指針分別從左到右逐個(gè)移動(dòng)和從右到左逐個(gè)移動(dòng),同時(shí)比較兩個(gè)字符,若不同就可以判斷這個(gè)字符串不是回文,若一直相同至i>=j,那么這個(gè)字符串就是回文。
123454321123443214、輸入一個(gè)十進(jìn)制正整數(shù),將它轉(zhuǎn)化成十六進(jìn)制數(shù)輸出。constn2c:array[0..15]ofchar=('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');varn,i:integer;s:string;begin
readln(n);
();
while()dobegini:=nmod16;s:=();n:=ndiv16;end;
writeln(s);end.s:=''n>0n2c[i]+s
5、輸入一個(gè)數(shù)字串s和一個(gè)整數(shù)k(k小于數(shù)字串s的長度),要求從s中刪去k個(gè)數(shù)字,使剩余數(shù)字在保持相對位置不變的情況下構(gòu)成一個(gè)值最小的整數(shù)。例如,s=‘19990608’,k=4,處理結(jié)果為:608。分析:把讀入的數(shù)字串存入變量s中,從前往后檢測相鄰字符s[i]和s[i+1],如果有s[i]﹥s[i+1],就將s[i]刪除,k減1,然后回到串首重新開始檢測;如果所有相鄰字符都是s[i]<=s[i+1],則將串尾k個(gè)字符都刪去,k減至0。在刪去了k個(gè)數(shù)字后,如果串首有‘0’字符,則將這些無效數(shù)字都刪去。貪心法貪心標(biāo)準(zhǔn)1234567812311998vars:string;i,k,n:integer;begin
readln(s);read(k);n:=length(s);while()do{刪K個(gè)數(shù)字}
begini:=1;while(i<n)and(s[i]<=s[i+1])do
();{找第一個(gè)s[i]﹥s[i+1]的s[i]}
ifi=nthen{沒找到}begin
(
);n:=n-k;k:=0;endelsebegin{找到了}
delete(s,i,1);
n:=n-1;
k:=k-1;end
end;{刪串首多余的零}while(n>1)and(s[1]='0')dobegin
(
);n:=n-1end;write(s)end.求原數(shù)字串的長度k>0i:=i+1刪左起第i個(gè)數(shù)字delete(s,n-k+1,k)刪右端K個(gè)數(shù)字delete(s,1,1)從鍵盤輸入一個(gè)字符串(長度<=40個(gè)字符),并以字符’.’結(jié)束。例如:’Thisisabook.’。現(xiàn)對該字符串進(jìn)行編輯,編輯功能有:
D:刪除一個(gè)字符。命令的方式為:Da其中a為被刪除的字符。例如:Ds表示刪除字符’s’,若字符串中有多個(gè)‘s’,則刪除第一次出現(xiàn)的。如上例中刪除的結(jié)果為:‘Thiisabook.’
I:插入一個(gè)字符,命令的格式為:Ia1a2其中a1表示插入到指定字符a1前面,a2表示將要插入的字符。例如:Isd表示在指定字符’s‘的前面插入字符‘d’,若原串中有多個(gè)‘s’,則插入在最后一個(gè)字符的前面。如上例中插入后的結(jié)果為:’Thisidsabook.’
R:替換一個(gè)字符,命令格式為:Ra1a2其中a1為被替換的字符,a2為替換的字符,若在原串中有多個(gè)a1則應(yīng)全部替換。例如:Roe,則上例中替換后的字符串為:‘Thisisabeek.’
在編輯過程中,若出現(xiàn)被改的字符不存在時(shí),則給出提示信息’No’。
6.字符串編輯vars:string[40];op,c1:char;
p,i,len:integer;beginreadln(s);read(op);read(c1);p:=pos(c1,s);{求字符c1在串s中的位置}ifp=0thenbegin{沒找到則輸出提示信息,程序結(jié)束}
writeln(‘No');
halt;
end;
len:=length(s);caseopof'D':delete(s,p,1);{進(jìn)行刪除操作}'I':begin{進(jìn)行插入操作}read(c1);{讀入要插入的字符c1}i:=p+1;whilei<=lendo{找最后一個(gè)s[p]的位置i}beginifs[i]=s[p]thenp:=i;inc(i);end;
insert(c1,s,p);{將c1插入到p處}end;'R':begin{進(jìn)行替換操作}read(c1);{讀入替換的字符c1}fori:=p+1tolendo{將s中所有的s[p]都替換為c1}ifs[i]=s[p]thens[i]:=c1;s[p]:=c1;end;end;
writeln(s);{輸出經(jīng)過操作的串s}end.7、輸入3個(gè)字符串r,s,t,把字符串t中所有形如s的子串替換成r。vars,t,r,x:string;i,k:integer;begin
readln(r);readln(s);readln(t);k:=length(s);x:='';repeat
();
ifi>0thenbeginx:=x+copy(t,1,i-1)+r;{拼接}t:=copy(t,i+k,255);{截取右邊剩余部分
enduntili=0;();write(x)end.輸入:XOOXOXOOXOXOXOX輸出:XOXOXXOXi:=pos(s,t)x:=x+t8、給定二個(gè)字符串a(chǎn)和b,設(shè)1<=length(b)<=length(a),求b在a中首次出現(xiàn)的位置,返回結(jié)果為正整數(shù)。若在a中未找到b,即b不是a的子串,則返回零。從a的第一個(gè)位置開始,取與b等長的子串,與b比較,若相等則b在a中的位置就是1;若不等則繼續(xù),從a的第二個(gè)位置開始,取與b等長的子串,與b比較,若相等則b在a中的位置就是2……這樣,一直取到length(a)-length(b)+1這個(gè)位置,因?yàn)槌^這個(gè)位置后就取不到與b等長的子串了。若始終沒有找到與b相等的子串,則返回零。在實(shí)際編程中,只要在a中從指定位置開始依次取length(b)個(gè)字符與b中相應(yīng)位置上的字符進(jìn)行比較即可。
'ABCDABBCABDCABCDE‘'BCA'vara,b:string;i,j,lena,lenb,position:integer;{position是b在a中的位置}
founddiff:boolean;{標(biāo)志是否發(fā)現(xiàn)a的子串與b有不同}begina:='ABCDABBCABDCABCDE';b:='BCA';
lena:=length(a);lenb:=length(b);position:=0;{先假設(shè)a中未找到b}i:=1;while(i<=lena-lenb+1)and(position=0)dobeginj:=1;
founddiff:=false;{假設(shè)a的子串與b沒有不同}while(notfounddiff)and(j<=lenb)dobeginifb[j]<>a[j+i-1]{若發(fā)現(xiàn)某個(gè)字符不同}thenfounddiff:=true{則置標(biāo)志變量}elsej:=j+1;{否則繼續(xù)比較下一個(gè)字符}end;iffounddiff{若本輪比較發(fā)現(xiàn)不同}theni:=i+1{則從下一個(gè)位置開始再取子串,進(jìn)行下一輪比較}elseposition:=i;{否則當(dāng)前的比較起始位置就是b在a中的位置}end;
writeln(position);end.字符串練習(xí)題1、閱讀下列程序,寫出運(yùn)行結(jié)果。var
str:string;i:integer;begin
str:='Today-is-terrible!';fori:=1to11doifstr[i]='-'thenstr[i-1]:='x';fori:=13downto1doifstr[i]='t'thenstr[i+1]:='f';
writeln(str);end.Todax-ix-tfrrible!2、閱讀程序,寫出運(yùn)行結(jié)果。vari,j:integer;str1,str2:string;beginstr1:='pig-is-stupid';str2:='clever';str1[1]:='d';str1[2]:='o';i:=8;forj:=1to6dobeginstr1[i]:=str2[j];inc(i);end;writeln(str1);end.dog-is-clever
3、閱讀程序,寫出運(yùn)行結(jié)果。vara,t:string;i,j:integer;begina:='program';j:=1;fori:=2to5doif(a[j]>a[i])thenj:=i;j:=j-1;fori:=1tojdowrite(a[i]);var
i,j,k:integer;
t:string;
a:array[1..10]ofstring;begin
fori:=1to10doreadln(a[i]);
fori:=(
)do
begin
k:=i;
forj:=()do
ifa[k]>a[j]then();ifk<>ithenbegin
t:=a[i];a[i]:=a[k];a[k]:=t;
end;
fori:=1to10dowriteln(a[i]);end.1to9i+1to10k:=j采用選擇排序程序中,當(dāng)執(zhí)行到ifa[k]>a[j]時(shí),自動(dòng)將a[k]串與a[j]串中的每一個(gè)字符逐個(gè)比較,直至遇到不等而決定其大小。這種比較方式是計(jì)算機(jī)中字符串比較的一般方式。
4、對給定的10個(gè)國家名,按其字母的順序輸出。5、設(shè)有n個(gè)正整數(shù)(n<=20),將它們聯(lián)接成一排,組成一個(gè)最大的多位整數(shù)。例如:n=3時(shí),3個(gè)整數(shù)13,312,343聯(lián)接成的最大整數(shù)為:34331213。又如:n=4時(shí),4個(gè)整數(shù)7,13,4,246聯(lián)接成的最大整數(shù)為:7424613。輸入:nn個(gè)正整數(shù)輸出:聯(lián)接成的多位數(shù)分析:此題
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年電梯項(xiàng)目融資租賃協(xié)議
- 2024年綠化工程勞務(wù)分包協(xié)議樣本版B版
- 2024年酒店裝修項(xiàng)目簡明協(xié)議示例文檔版B版
- 2024年科技研發(fā)合作合同
- 2025版房地產(chǎn)項(xiàng)目股權(quán)抵押貸款擔(dān)保服務(wù)合同3篇
- 2024年網(wǎng)絡(luò)推廣協(xié)議3篇
- 2024年運(yùn)動(dòng)場地設(shè)施建設(shè)合同3篇
- 北部灣大學(xué)《數(shù)學(xué)物理》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025版防雷系統(tǒng)改造與升級(jí)服務(wù)合同3篇
- 2025版股權(quán)交易居間服務(wù)合同范本3篇
- 304焊接工藝參數(shù)
- 交感神經(jīng)相關(guān)性疼痛及其治療通用課件
- 工裝夾具項(xiàng)目開發(fā)計(jì)劃書
- 中小學(xué)生研學(xué)旅行 投標(biāo)方案(技術(shù)方案)
- 文創(chuàng)產(chǎn)品市場營銷策略
- 社區(qū)生鮮可行性報(bào)告
- 6款課堂活動(dòng)隨機(jī)點(diǎn)名-抽獎(jiǎng)模板(可編輯)兩套
- 2023新兵集訓(xùn)總結(jié)發(fā)言
- 《輻射安全許可證》申請條件核查表
- 《財(cái)務(wù)管理》課程教學(xué)成果創(chuàng)新報(bào)告
- DB15-T 2537-2022 涉路工程安全性評(píng)價(jià)報(bào)告編制指南
評(píng)論
0/150
提交評(píng)論