haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 小学教育 > 学科竞赛学科竞赛

字符串处理

发布时间:2014-04-22 14:03:12  

字符串处理

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. 输出的相邻字符间有一个空格。

2. 最后一行的26个大写字母每次必须输出。

3.大写字母A所在的第一列前没有空格。

4.不明飞行物(ufo)

【问题描述】

一颗彗星的后面有一个不明飞行物(UFO),这个UFO经常到地球上来寻找忠实的追随者,把他们带到宇宙中去。但由于舱内空间有限,它们每一趟只能带一组追随者。尽管如此,外星人仍然想出了一个妙法来决定带谁走:以A代表1,B代表2??Z代表26,USACO即21×19×1×3×15=17955,倘若此组人的组名所代表的数字与彗星的名字所代表的数字分别除以47,余数相同,则彗星名与组名相匹配,UFO带此组人飞向宇宙,余数不同则不匹配,故不带。

编程任务:写一程序,打印出彗星名与组名是否相匹配,是打印“GO”,否打印“STAY”;同时打印出两者的余数。

【输入格式】

输入文件包含两行,第1行为慧星名,第2行为组名(长度不超过250)。

【输出格式】

输出文件包含两行,第1行为是否匹配的信息,第2行显示两者的余数。

【输入输出样例】

5、贝贝的加密工作(password)

【问题描述】

贝贝找了一份为一些文件的某些部分加密的工作,加密的部分是一串小写英文字母,加密的规则是这样的:要是连续出现相同的字母,则把他们替换成这个字母的大写形式,后面紧跟相同字母的个数,并把它之前跟之后的两段字串调换,例如出现bcaaaaaaef,则新字符串变成:efA6bc,然后重新扫描字串,直到没有出现相同小写字母为止。

【输入格式】

原始字符串(长度不大于250)。

【输出格式】

新字符串。

6、单词游戏(game)

【问题描述】

今天的英语课,王老师为了复习以前学过的单词,提高学生的学习兴趣,想了一个主意:

(1)把全班分为n个小组,每个小组写一个学过的单词(均为小写)和一个整数k;

(2)每个小组根据该单词中每个字母的字典顺序上推或下推k个位置,经过变换后得到一个新单词。推移规则是:如果k为正数则下推,否则上推,当推移超越边界时回到另一端继续推移。例如,单词为at,k=8则新单词为ib,字母t下移到边界z还不够,则再从第一个字母a开始继续推移。

(3)每个小组把得到的新单词和整数k展示到黑板上;

(4)王老师紧接着给出了一个字母,规定哪个小组最快完成以下任务则获胜:统计出该字母在所有小组开始写出的单词中出现的次数。

你能编程帮助贝贝所在的小组获胜吗?

【输入格式】

输入文件共n+2行:

第1行为王老师给出的一个字母;

第2行为数字n(2≤n≤30),表示全班分为n个小组;

接着是n行,每行为每个小组得到的新单词(2≤单词长度≤14),然后空一个格,后接一个整数k(-1000≤k≤1000)。

【输出格式】

输出文件只有一个数,为给定字母在所有小组开始写出的单词中出现的次数。

【输入输出样例】

网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com