字符串用一對單引號括起來的字符序列如Turbopascal_第1頁
字符串用一對單引號括起來的字符序列如Turbopascal_第2頁
字符串用一對單引號括起來的字符序列如Turbopascal_第3頁
字符串用一對單引號括起來的字符序列如Turbopascal_第4頁
字符串用一對單引號括起來的字符序列如Turbopascal_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

字符串1、字符串:用一對單引號括起來的字符序列。如’Turbopascal’;序列中字符的個數稱為字符串的長度,長度為0的字符串稱為空串。2、字符串常量定義:const

字符串常量名='字符串';例如:const

head='myname';3、字符串變量定義:var

name:string[12];string是保留字,方括號中的數是字符串的最大長度,這個數最多不得超過255。若類型中省略長度標記,則串長上限為255。4、字符串通過類似于數組的方法將一些字符存儲在內存中。字符串變量中每個字符都有一個相應的下標,前面變量name中最多可以放12個字符,我們可以通過name[1],name[2],…,name[12]來使用這些字符。實際上字符串變量有N+1個元素,第0個元素中存放字符串的實際長度(以字符的形式存放)。若name:=‘Libing’,則name[0]中存放的是序號為6的字符,有ord(name[0])=length(name)5、字符串的輸入、輸出。

字符串類型既可按數組方式輸入、輸出,也可直接輸入、輸出:readln(s);writeln(s);多個字符串輸入時以回車作為數據間的分隔符;每個readln語句只能讀入一個字符串。6、字符串中任意長度的連續(xù)的字符組成的字符串叫做原字符串的子串,與子串相對應的原字符串叫做主串。如’CD’是’ABCDE’的子串,且子串在主串中的位置為3。7、TURBOPASCAL中提供了強大的庫函數和庫過程來支持字符串的運算,下表對它們作了簡單的介紹。函數名意義結果類型示例concat(s1,s2,…,sn)連接字符串s1,s2,…,snstrings1:='123';s2:='456';s:=concat(s1,s2);

結果:s='123456'copy(s,I,k)返回字符串s中第i個字符開始的長度為k的子串strings:='123456';s1:=copy(s,2,3);

結果:s1='234'Length(s)返回字符串s的長度integers:='123456';l:=length(s);

結果:l=6pos(s,t)返回子串s在字符串t中的起始位置bytet:='123.45';i:=pos('.',t);

結果:i=4過程名意義示例delete(s,i,k)將字符串s中的第i個字符開始的長度為k的子串刪除

s:='TurboPascal';delete(s,6,7);

結果:s='Turbo'insert(s,t,i)在串t中第i個字符開始的位置上插入一個指定子串st:='Pascal';insert('Turbo',s,1);結果:t='TurboPascal'str(x,s)把數值x轉換成相應的字符串s,其中,x是整型、實型等數值型數據,可以指定域寬。

x:=1234;

str(x,s);

結果:s='1234'val(s,k,code)把字符串s轉換成相應的數值k,code為返回代碼,為0表示轉換成功,否則轉換失敗,code的值即為出錯的字符在s中的位置

s:='1234';

val(s,k,code);

結果: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、閱讀下列程序,寫出運行結果。輸入: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、閱讀下列程序,寫出運行結果。輸出:Icomefrombeijing.3、輸入一個字符串,判斷它是否是回文。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采用兩個指針分別從左到右逐個移動和從右到左逐個移動,同時比較兩個字符,若不同就可以判斷這個字符串不是回文,若一直相同至i>=j,那么這個字符串就是回文。

123454321123443214、輸入一個十進制正整數,將它轉化成十六進制數輸出。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、輸入一個數字串s和一個整數k(k小于數字串s的長度),要求從s中刪去k個數字,使剩余數字在保持相對位置不變的情況下構成一個值最小的整數。例如,s=‘19990608’,k=4,處理結果為:608。分析:把讀入的數字串存入變量s中,從前往后檢測相鄰字符s[i]和s[i+1],如果有s[i]﹥s[i+1],就將s[i]刪除,k減1,然后回到串首重新開始檢測;如果所有相鄰字符都是s[i]<=s[i+1],則將串尾k個字符都刪去,k減至0。在刪去了k個數字后,如果串首有‘0’字符,則將這些無效數字都刪去。貪心法貪心標準1234567812311998vars:string;i,k,n:integer;begin

readln(s);read(k);n:=length(s);while()do{刪K個數字}

begini:=1;while(i<n)and(s[i]<=s[i+1])do

();{找第一個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.求原數字串的長度k>0i:=i+1刪左起第i個數字delete(s,n-k+1,k)刪右端K個數字delete(s,1,1)從鍵盤輸入一個字符串(長度<=40個字符),并以字符’.’結束。例如:’Thisisabook.’?,F對該字符串進行編輯,編輯功能有:

D:刪除一個字符。命令的方式為:Da其中a為被刪除的字符。例如:Ds表示刪除字符’s’,若字符串中有多個‘s’,則刪除第一次出現的。如上例中刪除的結果為:‘Thiisabook.’

I:插入一個字符,命令的格式為:Ia1a2其中a1表示插入到指定字符a1前面,a2表示將要插入的字符。例如:Isd表示在指定字符’s‘的前面插入字符‘d’,若原串中有多個‘s’,則插入在最后一個字符的前面。如上例中插入后的結果為:’Thisidsabook.’

R:替換一個字符,命令格式為:Ra1a2其中a1為被替換的字符,a2為替換的字符,若在原串中有多個a1則應全部替換。例如:Roe,則上例中替換后的字符串為:‘Thisisabeek.’

在編輯過程中,若出現被改的字符不存在時,則給出提示信息’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{沒找到則輸出提示信息,程序結束}

writeln(‘No');

halt;

end;

len:=length(s);caseopof'D':delete(s,p,1);{進行刪除操作}'I':begin{進行插入操作}read(c1);{讀入要插入的字符c1}i:=p+1;whilei<=lendo{找最后一個s[p]的位置i}beginifs[i]=s[p]thenp:=i;inc(i);end;

insert(c1,s,p);{將c1插入到p處}end;'R':begin{進行替換操作}read(c1);{讀入替換的字符c1}fori:=p+1tolendo{將s中所有的s[p]都替換為c1}ifs[i]=s[p]thens[i]:=c1;s[p]:=c1;end;end;

writeln(s);{輸出經過操作的串s}end.7、輸入3個字符串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、給定二個字符串a和b,設1<=length(b)<=length(a),求b在a中首次出現的位置,返回結果為正整數。若在a中未找到b,即b不是a的子串,則返回零。從a的第一個位置開始,取與b等長的子串,與b比較,若相等則b在a中的位置就是1;若不等則繼續(xù),從a的第二個位置開始,取與b等長的子串,與b比較,若相等則b在a中的位置就是2……這樣,一直取到length(a)-length(b)+1這個位置,因為超過這個位置后就取不到與b等長的子串了。若始終沒有找到與b相等的子串,則返回零。在實際編程中,只要在a中從指定位置開始依次取length(b)個字符與b中相應位置上的字符進行比較即可。

'ABCDABBCABDCABCDE‘'BCA'vara,b:string;i,j,lena,lenb,position:integer;{position是b在a中的位置}

founddiff:boolean;{標志是否發(fā)現a的子串與b有不同}begina:='ABCDABBCABDCABCDE';b:='BCA';

lena:=length(a);lenb:=length(b);position:=0;{先假設a中未找到b}i:=1;while(i<=lena-lenb+1)and(position=0)dobeginj:=1;

founddiff:=false;{假設a的子串與b沒有不同}while(notfounddiff)and(j<=lenb)dobeginifb[j]<>a[j+i-1]{若發(fā)現某個字符不同}thenfounddiff:=true{則置標志變量}elsej:=j+1;{否則繼續(xù)比較下一個字符}end;iffounddiff{若本輪比較發(fā)現不同}theni:=i+1{則從下一個位置開始再取子串,進行下一輪比較}elseposition:=i;{否則當前的比較起始位置就是b在a中的位置}end;

writeln(position);end.字符串練習題1、閱讀下列程序,寫出運行結果。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、閱讀程序,寫出運行結果。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、閱讀程序,寫出運行結果。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采用選擇排序程序中,當執(zhí)行到ifa[k]>a[j]時,自動將a[k]串與a[j]串中的每一個字符逐個比較,直至遇到不等而決定其大小。這種比較方式是計算機中字符串比較的一般方式。

4、對給定的10個國家名,按其字母的順序輸出。5、設有n個正整數(n<=20),將它們聯(lián)接成一排,組成一個最大的多位整數。例如:n=3時,3個整數13,312,343聯(lián)接成的最大整數為:34331213。又如:n=4時,4個整數7,13,4,246聯(lián)接成的最大整數為:7424613。輸入:nn個正整數輸出:聯(lián)接成的多位數分析:此題

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論