字符串处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字符串处理

1.常见的字符串操作的三种类型

(1)提取和删除字符串

这类处理是取出一个字符串中若干个字符串,基本的方法是:确定需要提取子串的开始位置以及子串的长度。如果题目没有明确给出子串的开始位置及长度的信息,那么可以使用pos函数找出子串前后两个空格的位置,从而确定相关信息。

提取子串:用copy函数将子串提取出来。删除子串:用delete过程直接将子串删除。

(2)字符转换

这类处理是将字符对应的ASCII码按规律进行运算,使该字符转换成另一个字符。我们可以使用ord函数求出某一字符的ASCII码,用chr函数将ASCII码转换成字符。

(3)数值与字符转换

在处理位数很多数值很大的数时,可能超过了整数和实数所能表示的最大范围,在这种情况下,只能采用字符串进行处理。可以使用str过程将数值类型的数据转换成字符串类型,使用val过程可将字符串型数据转换成数值类型。

2.字符串处理的注意事项

(1)读入字串长度如果超过255,则要用字符数组保存字符串。

(2)在分析程序的算法效率时,要注意考虑字符串处理的函数和过程的运行时间。

(3)读数据时,不确定字符行数和每行的字符个数时,可用行结束标记eoln和文件结束

标记eof来读数据。

3.常见的字符串过程和函数

(1)length(s)函数,求字符串s的长度。

(2)copy(s,w,k)函数,在字符串s中从w开始截取长度为k的子串。

(3)val(s,k,code)过程,将字符串s转为数值,存在k中,code返回出错的首位置。

(4)str(i,s)过程,将数值i转为字符串s。

(5)delete(s,w,k)过程,在s中删除从第w位开始的k个字符。

(6)insert(s1, s, w)过程,将s1插到s中第w位。

(7)pos(c, s)函数,求字符c在s中的起始位置。

(8)连接号“+”,将两个字符串连接起来。

(9)upcase(ch)过程,将字母ch转换成大写字母。

1、贝贝的交通指挥系统(jqr)

【问题描述】

贝贝所居住的城市有很多个交通路口,其中有26个交通路口在上下班高峰期总是塞车,严重影响市民的出行。于是交通管理部门研制了一批机器人交通警察,用它们来专门指挥这26个交通路口,但需要一个自动化的指挥系统来指挥机器人的运作。这个任务交给了贝贝,贝贝的设计如下。

分别用大写英文字母A、B、…、Z表示这26个路口,并按如下的规则派出这些机器人到交通路口协助指挥交通:

1.每次派出两名机器人;

2.当两名机器人的名字中存在一个相同的字母时,这两名机器人便到对应的交通路口上指挥交通;有多个字母相同时,两名机器人需要按字母的字典顺序到这些路口上巡逻;

3.当两名机器人的名字中不存在相同的字母时,交警部门的派出指令无效(WuXiao)。

假设这些机器人的名字全由大写字母组成,请你编一个程序,帮贝贝完成这个交通指挥系统。

【输入格式】

第1行输入第一个机器人的名字(长度不超过250);

第2行输入第二个机器人的名字(长度不超过250)。

【输出格式】

1.当不能派出机器人时,在第一行输出“WuXiao”;

2.当两名机器人在路口上指挥交通时,在第一行输出“ZhiHui”,第二行输出路口编号;

3.当两名机器人在路口上巡逻时,在第一行输出“XLuo”,第二行输出巡逻的路口数,第三行输出巡逻线路。

【输入输出样例】

2.贝贝的ISBN号码(isbn)

【问题描述】

每一本书都有一个ISBN号码,包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表出版社;第二个分隔符之后的五位数字代表该书在出版社的编号;最后一位为识别码。

出版社想开发一套自动化识别系统,判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。于是,出版社把这个任务交给了贝贝。

识别码的计算方法如下:首位数字乘以1加上次位数字乘以2……以此类推,用所

得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+ … +2×9=158,然后取158 mod 11的结果4作为识别码。请你帮贝贝完成这个任务。

【输入格式】

只有1行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。

【输出格式】

假如ISBN识别码正确,那么输出“Right”,否则输出正确的ISBN号码(包括分隔符“-”)。

【输入输出样例】

3、贝贝的图形(vhist)

【问题描述】

贝贝最近玩起了字符游戏,规则是这样的:读入四行字符串,其中的字母都是大写的,乐乐想打印一个柱状图显示每个大写字母的频率。你能帮助他吗?

【输入格式】

输入文件共有4行:每行为一串字符,不超过72个字符。

【输出格式】

与样例的格式保持严格一致。

【输入样例】

THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.

THIS IS AN EXAMPLE TO TEST FOR YOUR

HISTOGRAM PROGRAM.

HELLO!

【输出样例】

*

*

* *

* * * *

* * * *

* * * * * *

* * * * * * * * * *

* * * * * * * * * * * * *

* * * * * * * * * * * * * * * * * *

* * * * * * * * * * * * * * * * * * * * * * * * * *

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

图2.2-1

说明:

1.输出的相邻字符间有一个空格。

相关文档
最新文档