字符串怎么用???PASCAL

如题所述

一、 字符串的基本概念和操作

1.字符串常量——是用单引号括起来的一串字符
如:write('input x=');
又如:const
str1='PASCAL';

2.字符串变量——是用字符串类型string来说明的变量
如:var
st1,st2:string[100];

3.字符串运算之一——连接 “+”如:st1:='good'; st2:='bye';
writeln(st1+st2);输出结果为goodbye
4.字符串运算之二--比较 “>”,“<”,“>=”等
如:‘abc’>‘ABC’ 结果为 true
'xya'<'xyb'结果为 true
'abcdefghi'>'abcdefgh'结果为 true

5.字符串的输入和输出
例5-1设有N个正整数(N<=20),将它们连接成一排,组成一个最大的多位数.
如:N=3时,输入三个正整数13,312,343,连接成最大数为:34331213
又如:N=4时,输入四个正整数7、13、4、246,连接成最大数为:7424613
var num:array [1..20] of string;
n,i,j:integer;
t:string;
begin
write('N=');readln(n);
for i:=1 to n do
readln(num[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if num[i]+num[j]<num[j]+num[i]then
begin
t:=num[i];num[i]:=num[j];
num[j]:=t;
end;
for i:=1 to n do write(num[i]);
writeln;
readln;
end.

二.字符串函数和过程

1. length(st)函数:
返回st串的长度,即串中字符的个数,其结果为整型.

var st1,st2,st3:string;
l:integer;
begin
write('st1=');readln(st1);
write('st2=');readln(st2);
st3:=st1+st2;
l:=length(st3);
writeln(‘st3=‘,st3);
writeln('l=',l);
readln;
end.输入:st1=abcd
st2=efg
输出:st3=abcdefg
l=7

2. pos(st1,st2)函数:
在st2串中查找出现st1串的起始位置,找到则返回该位置值,否则为0.

writeln(pos(‘def’,‘abcdefg’)); 输出为4
writeln(pos(‘xy’,‘abcdefg’));输出为0

3. str(value,st)过程:
将数value转化成数字串st.
a:=123;str(a,st3);writeln('st3=',st3+'45');

4.val(st,value,code)过程:
将数字串st转化为数value,code返回检测出错的第一个字符位置,未出错时返回0.
val('12345',a,b) 此时a为数12345,b为0.
val('12ab34',a,b) 此时a为数12,b为3.

5.copy(st,pos,num)函数:
在st串中从pos位置开始顺序截取长度为num的字串,其结果为字符串类型.
copy('abcdef',3,2)='cd'

6. delete(st,pos,num)过程:
从原串st中删除一个从pos开始的num个字符的子串.若pos>st长度,则不删除任何字符;若pos超出1..255范围,出错?;若pos+num>st长度,则仅删除串内长度.

7.insert(obj,st,pos)过程:
向原串st中插入一个指定子串obj至原串的pos位置上

三.应用举例

1. 输入一行字符,包含若干个单词.约定相邻的两个单词用空格隔开,编程统计单词的个数.

var st:string;
ch1,ch2:char;
i,l,num:integer;
begin
writeln('Read charactors:');
readln(st);
L:=length(st);
i:=1;num:=0;
while i<=L do
begin
while st[i]<>' ' do i:=i+1;
if i<=L then num:=num+1;
while (st[i]<>' ') and (i<=L) do i:=i+1;
end;
writeln('tatal:',num);
readln;
end.

2.由键盘输入不少于10个字符的字符串,分别编写下列各程序:
(1) 逢'A'这个字符就把它删除

var st:string;
l,i:integer;
begin
write('st:');readln(st);
l:=length(st);
for i:=1 to l do
if st[i]='A' then delete(st,i,1);
writeln(st);
readln;
end.

(2) 逢'A'这个字符就把它改为'X'

var st:string;
l,i:integer;
begin
write('st:');readln(st);
l:=length(st);
for i:=1 to l do
if st[i]='A' then st[i]:='X';
writeln(st);
readln; end.

(3) 逢'A'这个字符就把它用括号括起来

var st:string;
l,i:integer;
begin
write('st:');readln(st);
l:=length(st);
for i:=1 to l do
if st[i]='A' then
begin
insert('(',st,i);
insert(')',st,i+2);
writeln(st);
readln;
end.

(4) 如果这个字符串中有两个字符'A',就把它们之间的所有字符打印出来,其他的字符删去

var st:string;
l,i,t,a,b:integer;
begin
write('st:');readln(st);
l:=length(st);t:=0;
for i:=1 to l do
if st[i]='A' then
begin
t:=t+1;
if t=1 then a:=i;
if t=2 then b:=i;
end;
writeln(copy(st,a,b-a+1));
readln;
end.

字符串函数和过程复习

下面程序运行结果是什么?

var st:string;
I,j,pos,num,code: integer;
begin
st:='abcdefg1234'; j:=length(st);
writeln('st=',st,' j=',j); pos:=1; num:=3;
delete(st,pos,num);
writeln('st=',st);
val(st,I,code);
writeln('st=',st,' i=',i,' code=',code);
num:=4; delete(st,pos,num);
writeln('st=',st);
val(st,i,code);
writeln('st=',st,' i=',i,' code=',code);
end.

例一: 输入一串字符,其长度小于200。判断该串字符是否构成回文。所谓回文是指从左到右和从右到左读一串字符的值是一样的。如abcba就是一个回文。

var
st : string;
i,j : byte;
begin
write('Input a string : ');
readln(st);
j := length(st);
i :=1;
while (j > i)and(st[i] = st[j]) do
begin
i := i+1; j := j-1;
end;
if j<=i then writeln('Yes')
else writeln('No')
end.

例二 输入一个十进制数,将其化成N进制数输出(2≤N≤16)

const
s : string = '0123456789ABCDEF';
var
m : longint;
i,j,k,n : byte;
a : array[1..32] of byte;
begin
write('Enter a number : ');
readln(m);
write('Enter N = ');
readln(n);
write(m,'(10) = ');
i := 0;
while m > 0 do begin
i := i+1;
a[i] := m mod n;
m := m div n;
end;
for j := i downto 1 do write(s[a[j]+1]);
writeln('(',n,')');
end.

例三 以字符串形式输入仅有整数和加减号构成的表达式,输出该表达式的值。

var s : string;
l,x : longint;
h : -1..1;
begin
write('Input : ');
readln(s);
write(s);
while pos(' ',s) > 0 do delete(s,pos(' ',s),1);
x := 0;
while length(s) > 0 do begin
if s[1] = '-' then begin h := -1; delete(s,1,1) end
else h := 1;
if s[1] = '+' then delete(s,1,1);
l := 0;
while (s[1] in ['0'..'9']) and (length(s) > 0) do
begin
l := l*10+ord(s[1])-48;
delete(s,1,1);
end;
x := x+h*l;
end;
writeln(' = ',x);
end.

作业 (H6021701—03)

(c11)
有八个国家举行足球友谊赛,东道主是中国(CHINA)。开幕式由英文字母表排序的次序(东道主除外)出场,东道主排在最后。这八个国家是:
FRANCE、INDIA、 CHINA 、U.S.A、CANADA、ITALY、PAKISTAN、MEXICO、
编程输出先后出场的国家

(c12)
用键盘输入一个大于6的字符串,要求把左起第n、n+1、n+2三个字符换成“123”(不管原来是什么字符),即变成“***123*…*”。(*表示原来的字符,字符串原有的长度不变)。n也由键盘输入。

(c13)
输入一个数,将其重新排列后组成一个最大数。
[运行示例]
input s: 56214841966300510687
56214841966300510687
98876666554432111000
温馨提示:答案为网友推荐,仅供参考
相似回答