




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
字符数组与字符串类型引入:NOIP2009高中组复赛第一题(密文破译)一、字符型变量:var ch :char;1、引用单个字符需加上引号,引用字符变量名不需要加引号。例:ch:=a;read(ch); Write(a); Write(ch);2、多个字符的输入不能像多个数字的输入一样用空格隔开,要连续输入。因为空格也是一个字符。例:var a,b,c:char; Read(a,b,c);3、了解字符的ASC码(见书的附录),学习书上的相关函数(书上24页):ord和chr函数练习:做个小程序,更改英文字母的大小写。4、明白数字1、2、3和字符1、2、3的差别及如何转换 例:把字符ch(ch在0到9之间)转化为相应的数字: 转化:ord(ch)-ord(0)二、字符数组:数组基类型(元素的类型)为字符型。 var a:array 1n of char ; 字符数组的用法与普通数值型数组一样,如输入、输出也是用循环语句逐个元素地给它赋值,即: for i:= 1 to n do read(a i ); 三、字符串类型: 1、字符串常量: 引用字符串需加上引号,引用字符串变量名不需要加引号。我们经常在writeln语句中用到字符串,例:writeln(this is a book。)也可以这样用:const str=this is a book。;Writeln(str);两种用法效果是一样的2、字符串变量: 一般我们直接定义 var str:string;这样字符串最长可为255个字符;也可以这样定义:var str:string n ;其中:n为字符串最大长度,为1到255之间的整数如:var name:string10; 此外:ansistring它是一种超长字符串类型。这种字符串的内存动态分配,这类字符串长度没有限制(可以存储多达20亿个字符!),其字符类型也是ANSIChar 类型。当我们对变量进行赋值的时候,AnsiString会根据赋值字符串的大小决定空间的大小,比如: AnsiString str = 111111; 那么,这个空间现在就是7个字节。如果下一次你又另外的赋值: str = 1111111111; 那么现在空间就是11个字节,空间大小发生了变化 3、存储结构:类似于字符数组。字符串非空时,也可以像字符数组一样引用某一个字符:namei。注意:字符串如果为空时,不能引用si赋值,此时可以用连接运算“+”来把每个字符连接起来得到s的新值:s:=s+ch.四、字符串的运算赋值运算:可以一次性输入输出,即作为一个整体赋值。 如:readln(str1); 或:str1:=this is a book; 长度为 14 writeln(str1); 当然也可以逐个元素赋值,如str1 3 :=i;此时就作为字符数组用。 连接运算:+ 如:this + is=this is 2+12=212(14) 但必须注意结果不能超出字符串的长度; 关系运算 : = = 如:abc abcd 比较规则:1、字符的大小顺序按字母顺序决定;( ab)2、当两个字符串长度不相等时,则串短的后面自动补空格,使长度一致;3、再从左向右逐个 比较对应字符的ASCII值,以首次遇到的不相等字符的ASCII值大小决定两个串的大小,若所有字符的ASCII值都相等,则两个串也相等。 如: 12345 2例一:统计一个英文句子中有多少英文单词。假设句子中字符数小于80个,单词间用至少一个空格隔开(可以有多个空格),句子头部也可以有多个空格,句子以*作为结束标志。 如:thisisagoodbook!* 程序如下:var s:string; i,l,t:integer;begin readln(s); s:= +s; l:=length(s); t:=0; for i:= 1 to l do if (si= )and(si+1 ) then inc(t); writeln(t); readln;end.例二:回文数:判断从键盘输入的字符串是否为回文数(从左到右和从右到左读一串字符的值是一样的),如abcdcba,1234321,11,1,串长 100。五、字符串的过程和函数操作 类型 作用 返回值 例子 length(s) 函数 求字符串 s的长度 整型 s:=123456789;l:=length(s);l 的值为 9copy ( s,w,k) 函数 复制 s中从 w开始的 k位 字符串 s:=123456789;s1:=copy(s,3,5);s1 的值是 34567 Pos(c, S) 函数 求字符 c在 s中的位置 整型 S := 123.5;i :=Pos( , S);i 的值为 1 val(s,k) 过程 将字符串 s转为数值,存在 k中; var s:string;k:integer;begins:=1234;val(s,k); 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 := Honest Abe Lincoln;Delete(s,8,4);Writeln(s); Honest Lincoln Insert(s1, S, w) 过程 将 s1插到 s中第 w位 S := Honest Lincoln;Insert(Abe , S, 8); Honest Abe Lincoln 注:函数的结果是一个值,需要赋值给某个变量,而过程是一条语句,独立使用即可。copy ( s,w,k) 函数 复制 s中从 w开始的 k位 字符串 s:=123456789;s1:=copy(s,3,5);s1 的值是 34567 Pos(c, S) 函数 求字符 c在 s中的位置 整型 S := 123.5;i :=Pos( , S);i 的值为 1 例三:求两个字符串的最长公共子串。 例输入: hbcd abcdef 输出: bcd Readln(s); 程序如下: Var s1,s2,s:string; Begin Readln(s1); Readln(s2); L:=length(s1); If length(s2)length(s1) then begin s:=s1; s1:=s2; s2:=s; l:=length(s2);end; f:=false; t:=l;while (f=false) and(t0) do begin for i:=1 to l+1-t doi+t=l+1 begins:=copy(s1,I,t)x:=pos(s,s2)if x0 then begin f:=true;write(s); end; end; t:=t-1; end; end.思考:如果公共子串不止一个或者不存在该怎么办?课后练习: 1、读入一串字符,以句号结束,然后让其倒序输出。如输入:I am a student.输出:tneduts a ma I2、读入一串数字(不超过255个),以句号结束,请统计其中0到9的各个数字的个数。(提示:字符可以做数组元素的下标)如输入:91254782354987012345978.输出:0:1 1:2 2:3 3:2 4:3 5:3 7:3 8:3 9:33、字符串函数与过程练习: 注意:函数不能作为一个语句独立使用,一般是要把函数值复制给某个变量; 过程相当于一条语句,一定要独立使用。 要求如下: 1、键盘读入字符串s:abcdefghijklmn 2、计算输出s的长度 3、用copy求子串函数来截取子串s1:cdefg,输出s1 4、求s1在s中的位置并输出 5、用delete过程删除s中的cdefg,输出s6、用insert过程把s1插入到s中的第三个位置,输出s4字符移除将字符串中的大写字母按照字典序从大到小依次移除。每次移除一种大写字母,如果这个大写字母出现多次,则一并移除。字符串长度不超过80,只有大小写字母,没有其他字符(也没有空格)。例如:theRainInSpainFallsMainlyOnThePlain:theRainInSpainFallsMainlyOnhePlain-第一次移除所有的TtheRainInpainFallsMainlyOnhePlain - 移除所有的StheainInpainFallsMainlyOnhePlain - 移除所有的RtheainInpainFallsMainlyOnhelain - 移除所有的PtheainInpainFallsMainlynhelain - 移除所有的OtheainInpainFallsainlynhelain - 移除所有的MtheainnpainFallsainlynhelain - 移除所有的Itheainnpainallsainlynhelain - 移除所有的F输入:camel.in一个字符串。输出:camel.out每一次移除字母后的结果,一行输出一个字符串。样例:输入theRainInSpainFallsMainlyOnThePlain输出:theRainInSpainFallsMainlyOnhePlaintheRain
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 赶工项目管理办法
- 苏州交评管理办法
- 茶馆行业管理办法
- 济南企业管理办法
- 点评口碑管理办法
- 联合窗口管理办法
- 超市库存管理办法
- 老年人糖尿病管理课件
- 诚信创建管理办法
- 超标登记管理办法
- 2025年十堰市茅箭区公开招聘50名社区工作者笔试备考试题及答案解析
- 2025版新能源汽车充电桩销售安装协议
- 2025年基层调解考试题库及答案
- 2024年西安交通大学国际合作交流处招聘笔试真题
- 2025年吉林省中考生物试卷真题答案详解解读(精校打印)
- 2025年粤东西北教师全员轮训心得体会2篇
- 完整版:美制螺纹尺寸对照表(牙数、牙高、螺距、小径、中径外径、钻孔)
- GB/T 31821-2015电梯主要部件报废技术条件
- 疑似预防接种异常反应报表
- 管桁架施工组织设计方案
- 中国内部审计准则及具体准则(全)
评论
0/150
提交评论