字符串.docx

上传人:b****7 文档编号:11109051 上传时间:2023-02-25 格式:DOCX 页数:6 大小:17.22KB
下载 相关 举报
字符串.docx_第1页
第1页 / 共6页
字符串.docx_第2页
第2页 / 共6页
字符串.docx_第3页
第3页 / 共6页
字符串.docx_第4页
第4页 / 共6页
字符串.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

字符串.docx

《字符串.docx》由会员分享,可在线阅读,更多相关《字符串.docx(6页珍藏版)》请在冰豆网上搜索。

字符串.docx

字符串

一、字符与字符串类型的使用

Var字符变量名:

char;

字符类型是一个有序类型,字符的大小顺序按ASCII码的大小决定。

相关的函数有succ、pred、ord、chr等。

VARA:

CHAR;

BEGIN

READLN(A);

WRITELN('A:

',A);

WRITELN('SUCC(A):

',SUCC(A));

WRITELN('PRED(A):

',PRED(A));

WRITELN('ORD(A):

',ORD(A));

WRITELN('CHR(ORD(A)):

',CHR(ORD(A)));

END.

例:

按字母表顺序和逆序每隔一个字母打印。

即打印出:

acegikmoqsuwy

zxrvtpnljhfdb

fori:

=1to13dowrite(chr(63+2*i):

4);writeln;

fori:

=1to13dowrite(chr(92-2*i):

4);writeln 

字符串

〖语法分析〗

字符串用于存放整批的字符数据。

通常编程中使用字符串存放字符化了的数字数据。

如高精度运算时存放操作数和运算结果。

字符串可以看作是特殊的字符串数组来处理。

当然,它也有自已的特点。

下面是字符串定义的格式:

vars:

string;s1:

string[15]; s[1]s[2]…s[255] s[0] ord(s[0])

字符串定义时,如不指定长度,则按该类型的最大长度(255个字符)分配空间,使用时最大可用长度为255个;如果在中括号中给出一个具体的值(1—255之间),则按这个值的大小分配空间。

使用时,最大的可用长度即为该值。

1、字符串的输入、输出:

字符串类型既可按数组方式输入、输出,也可直接输入、输出:

readln(s);writeln(s);多个字符串输入时以回车作为数据间的分隔符;每个readln语句只能读入一个字符串。

2、有关字符串的操作:

操作

类型

作用

返回值

例子

length(s)

函数

求字符串s的长度

整型

s:

='123456789';

l:

=length(s);{l的值为9}

字符串的长度存放在s[0]中,ord(s[0])的值与length(s)的值相同。

copy(s,w,k)

函数

复制s中从w开始的k位

字符串

s:

='123456789';

s1:

=copy(s,3,5);{s1的值是'34567'}

val(s,k,code)

过程

将字符串s转为数值,存在k中;code是错误代码

 

vars:

string;k,code:

integer;

begin

s:

='1234';

val(s,k,code);

write(k);{k=1234}

str(i,s)

过程

将数值i转为字符串s

 

i:

=1234;

str(i,s);

write(s);{s='1234'}

Delete(s,w,k)

过程

在s中删除从第w位开始的k个字符

 

s:

='HonestAbeLincoln';

Delete(s,8,4);

Writeln(s);{'HonestLincoln'}

Insert(s1,S,w)

过程

将s1插到s中第w位

 

S:

='HonestLincoln';

Insert('Abe',S,8);{'HonestAbeLincoln'}

Pos(c,S)

函数

求字符c在s中的位置

整型

S:

='123.5';

i:

=Pos('',S);{i的值为1}

+

运算符

将两个字符串连接起来

 

s1:

='1234';

s2:

='5678';

s:

=s1+s2;{'12345678'}

[例6、3]把26个英语字母正向、逆向打印出来。

Consts:

string[26]=’abcdefghijklmnopqrstuvwxyz’;Vart:

string[26];I:

integer;Begint:

=’‘;{共26个空格}ForI:

=1to26dobeginT[I]:

=s[27-I];End;Writeln(s);Writeln(t);End.[例6、4]找出所有的四位回文数:

(回文数就是一个数从左往右读与从右往左读都是同一个数)vars:

string[4];n:

integer;beginforn:

=1000to9999dobeginstr(n,s);if(s[1]=s[4])and(s[2]=s[3])then

write(n:

6);end;end.或者用如下程序:

varn:

integer;s,t:

string;beginforn:

=10to99dobeginstr(n,s);t:

=s+s[2]+s[1];write(s:

6);end;end.上述两个程序,哪个快,哪个慢?

练习题:

1、读入一串字符,以句号结束,然后让其倒序输出。

  如输入:

Iamastudent.

  输出:

tnedutsamaI

2、读入一串数字,以句号结束,请统计其中‘0’到‘9’的各个数字的个数。

  如输入:

91254782354987012345978. 

  输出:

0:

11:

22:

33:

24:

35:

37:

38:

39:

3

3、输入一段文章(255个字符以内),求文章中单词的个数(相同单词只记一次,The和the认为是同一个单词,只记一次)。

4、请编写一个程序,让它能够计算两个200位以内的整数的和。

5、做一个加法器。

完成30000以内的加法,两个加数间用“+”连接,可以连加,回车表示式子输入完成;“#”表示结束运算,退出加法器。

看程序写结果

1.varch:

string;

  i:

byte;

begin

 readln(ch);

 fori:

=1toord(ch[0])do

  write(ch[i]:

2);

 writeln

end.

输入:

MynameisTom.

输出:

2.vari:

integer;

begin

 fori:

=1to13dowrite(chr(63+2*i):

4);

 writeln;

 fori:

=1to13dowrite(chr(92-2*i):

4);

 writeln

end.

输出:

3.vara:

char;

begin

 readln(a);

 writeln('a:

',a);

 writeln('succ(a):

',succ(a));

 writeln('pred(a):

',pred(a));

 writeln('ord(a):

',ord(a));

 writeln('chr(ord(a)):

',chr(ord(a)));

 writeln('chr(ord(a)+2):

',chr(ord(a)+2));

end.

输入:

e

输出:

4.vars:

integer;

ch:

char;

  count:

array['a'..'z']ofinteger;

begin

 forch:

='a'to'z'docount[ch]:

=0;

  read(ch);

 whilech<>'!

'do

 begin

  if(ch>='a')and(ch<='z')then

   count[ch]:

=count[ch]+1;

  read(ch)

 end;

 s:

=0;

 forch:

='b'to'z'dos:

=s+count[ch];

 writeln(s)

end.

输入:

WeareproudOFOURCOUNTRY!

 

输出:

 

5.vara:

array[1..100]ofstring[20];

  s:

string;temp:

string[20];

  i,j,k,n:

integer;

begin

 readln(n);readln(s);i:

=1;j:

=0;k:

=0;

 whilei<=length(s)do

  ifs[i]in['0'..'9']then

  begin

   j:

=1;

   whiles[i]in['0'..'9']do

   begin

    temp[j]:

=s[i];

    inc(j);inc(i){inc(i)相当于i:

=i+1}

   end;

   temp[0]:

=chr(j-1);

   k:

=k+1;

   a[k]:

=temp

  end

 else

 whiles[i]=''doinc(i);

 fori:

=1ton-1do

  forj:

=i+1tondo

   if(a[i]+a[j])<(a[j]+a[i])then

    begin

     temp:

=a[i];a[i]:

=a[j];

     a[j]:

=temp

   end;

 fori:

=1tondowrite(a[i]);

 writeln

end.

输入:

481 792 39 79

输出:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1