首页 字符数组与字符串类型

字符数组与字符串类型

举报
开通vip

字符数组与字符串类型字符数组与字符串类型 引入: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页):o...

字符数组与字符串类型
字符数组与字符串类型 引入: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’的差别及如何转换 0’到‘9’之间)转化为相应的数字: 例:把字符ch(ch在‘ 转化:ord(ch)-ord(‘0’) 二、字符数组:数组基类型(元素的类型)为字符型。 var a:array [ 1((n ] of char ; 字符数组的用法与普通数值型数组一样,如输入、输出也是用循环语句逐个 元素地给它赋值,即: for i:= 1 to n do read(a[ i ]); 三、字符串类型: 1、字符串常量: 引用字符串需加上引号,引用字符串变量名不需要加引号。 我们经常在writeln语句中用到字符串,例:writeln(‘this is a book。’) 也可以这样用:const str=‘this is a book。’; str); Writeln( 两种用法效果是一样的 2、字符串变量: 一般我们直接定义 var str:string; 这样字符串最长可为255个字符; 也可以这样定义:var str:string[ n ]; 其中:n为字符串最大长度,为1到255之间的整数 如:var name:string[10]; 此外:ansistring 它是一种超长字符串类型。这种字符串的内存动态分配,这类字符串长度没有限制(可以存储多达20亿个字符~),其字符类型也是ANSIChar 类型。当我们对变量进行赋值的时候,AnsiString会根据赋值字符串的大小决定空间的大小,比如: AnsiString str = "111111"; 那么,这个空间现在就是7个字节。如果下一次你又另外的赋值: str = "1111111111"; 那么现在空间就是11个字节,空间大小发生了变化 3、存储结构:类似于字符数组。 字符串非空时,也可以像字符数组一样引用某一个字符:name[i]。 注意:字符串如果为空时,不能引用s[i]赋值,此时可以用连接运算“+”来把每 个字符连接起来得到s的新值:s:=s+ch. 四、字符串的运算 ?赋值运算:可以一次性输入输出,即作为一个整体赋值。 如:readln(str1); 或:str1:=‘this is a book’; { 长度为 14 } writeln(str1); =‘i’;此时就作为字符数组用。 当然也可以逐个元素赋值,如str1[ 3 ] : ?连接运算:‘+’ 如:‘this ’ + ‘is’=‘this is’ ‘2’+‘12’=‘212’(< >‘14’) 但必须注意结果不能超出字符串的长度; ?关系运算 :> < = >= <= <> 如:‘abc’< > ‘abcd’ 比较 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf : 1、字符的大小顺序按字母顺序决定;(‘ a’<’b’) 2、当两个字符串长度不相等时,则串短的后面自动补空格,使长度一致; 3、再从左向右逐个 比较对应字符的ASCII值,以首次遇到的不相等字符的ASCII值大小决定两个串的大小,若所有字符的ASCII值都相等,则两个串也相等。 如: ‘12345’< ‘2’ 例一:统计一个英文句子中有多少英文单词。假设句子中字符数小于80个,单词间用至少一个空格隔开(可以有多个空格),句子头部也可以有多个空格,句子以‘*’作为结束标志。 如:‘???this??is?a??good???book~* ’ 程序如下: var s:string; i,l,t:integer; begin readln(s); s:=' '+s; l:=length(s); t:=0; for i:= 1 to l do if (s[i]=' ')and(s[i+1]<>' ') then inc(t); writeln(t); readln; end. 例二:回文数:判断从键盘输入的字符串是否为回文数(从左到右和从右到左读 一串字符的值是一样的),如abcdcba,1234321,11,1,串长< 100。 五、字符串的过程和函数 操作 类型 作用 返回值 例子 s:='123456789'; 求字符串 l:=length(s);{l 的值为 9} length(s) 函数 整型 s的长度 复制 s中s:='123456789'; copy ( s,w,k) 函数 从 w开始字符串 s1:=copy(s,3,5);{s1 的值是 '34567'} 的 k位 求字符 cS := ' 123.5'; Pos(c, S) 函数 在 s中的整型 i :=Pos(' ', S);{i 的值为 1} 位置 var s:string;k:integer; 将字符串 begin s转为数s:='1234'; val(s,k) 过程 值,存在 kval(s,k); 中; write(k);{k=1234} 将数值 ii:=1234; str(i,s) 过程 转为字符 str(i,s); 串 s write(s);{s='1234'} 在 s中删s := 'Honest Abe Lincoln'; 除从第 wDelete(s,w,k) 过程 Delete(s,8,4); 位开始的 Writeln(s); { 'Honest Lincoln' } k个字符 S := 'Honest Lincoln'; 将 s1插到 Insert('Abe ', S, 8); Insert(s1, S, w) 过程 s中第 w位 { 'Honest Abe Lincoln' } 注:函数的结果是一个值,需要赋值给某个变量,而过程是一条语句,独立使用 即可。 复制 s中s:='123456789'; copy ( s,w,k) 函数 从 w开始字符串 s1:=copy(s,3,5);{s1 的值是 '34567'} 的 k位 求字符 cS := ' 123.5'; Pos(c, S) 函数 在 s中的整型 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)0) do begin for i:=1 to l+1-t do{i+t=l+1} begin s:=copy(s1,I,t) x:=pos(s,s2) if x<>0 then begin f:=true;write(s); end; end; t:=t-1; end; end. 思考:如果公共子串不止一个或者不存在该怎么办, 课后练习: 1、读入一串字符,以句号结束,然后让其倒序输出。 如输入:I am a student. 输出:tneduts a ma I 2、读入一串数字(不超过255个),以句号结束,请统计其中‘0’到‘9’的各个数字的个数。(提示:字符可以做数组元素的下标) 如输入:91254782354987012345978. 输出:0:1 1:2 2:3 3:2 4:3 5:3 7:3 8:3 9:3 3、字符串函数与过程练习: 注意:函数不能作为一个语句独立使用,一般是要把函数值复制给某个变量; 过程相当于一条语句,一定要独立使用。 要求如下: 1、键盘读入字符串s:abcdefghijklmn 2、计算输出s的长度 3、用copy求子串函数来截取子串s1:‘cdefg’,输出s1 4、求s1在s中的位置并输出 5、用delete过程删除s中的‘cdefg’,输出s 6、用insert过程把s1插入到s中的第三个位置,输出s 4(字符移除 将字符串中的大写字母按照字典序从大到小依次移除。每次移除一种大写字母,如果这个大写字母出现多次,则一并移除。字符串长度不超过80,只有大小写字母,没有其他字符(也没有空格)。 例如: 'theRainInSpainFallsMainlyOnThePlain': theRainInSpainFallsMainlyOnhePlain<--第一次移除所有的T theRainInpainFallsMainlyOnhePlain <-- 移除所有的S theainInpainFallsMainlyOnhePlain <-- 移除所有的R theainInpainFallsMainlyOnhelain <-- 移除所有的P theainInpainFallsMainlynhelain <-- 移除所有的O theainInpainFallsainlynhelain <-- 移除所有的M theainnpainFallsainlynhelain <-- 移除所有的I theainnpainallsainlynhelain <-- 移除所有的F 输入:camel.in 一个字符串。 输出:camel.out 每一次移除字母后的结果,一行输出一个字符串。 样例: 输入 theRainInSpainFallsMainlyOnThePlain 输出: theRainInSpainFallsMainlyOnhePlain theRainInpainFallsMainlyOnhePlain theainInpainFallsMainlyOnhePlain theainInpainFallsMainlyOnhelain theainInpainFallsMainlynhelain theainInpainFallsainlynhelain theainnpainFallsainlynhelain theainnpainallsainlynhelain
本文档为【字符数组与字符串类型】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_624976
暂无简介~
格式:doc
大小:24KB
软件:Word
页数:8
分类:生活休闲
上传时间:2017-12-10
浏览量:39