第八章字符串

上传人:pu****.1 文档编号:570030024 上传时间:2024-08-01 格式:PPT 页数:28 大小:148.50KB
返回 下载 相关 举报
第八章字符串_第1页
第1页 / 共28页
第八章字符串_第2页
第2页 / 共28页
第八章字符串_第3页
第3页 / 共28页
第八章字符串_第4页
第4页 / 共28页
第八章字符串_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《第八章字符串》由会员分享,可在线阅读,更多相关《第八章字符串(28页珍藏版)》请在金锄头文库上搜索。

1、第八章 字符串字符串常量与变量字符串常量与变量字符串变量的输入法字符串变量的输入法字符串的比较字符串的比较字符串数组字符串数组与字符串有关的函数与字符串有关的函数字符串常量字符串常量是指在程序运行过程中不会改变的字符串。QBASIC允许使用两种形式的字符串常量。1) 显式的字符串常量: 用双引号括起来的一串字符。如This is a string.。 请注意:请注意: 双引号不是字符串的一部分,它只是用作字符串的起止界限。 空格也作为一个字符,如:“a b c”(5个字符),“abc”(3个字符)。 允许有空串。即字符串中不包括任何字符,如:“”。 大写字母和小写字母是有区别的,如:“abc”

2、Abc”。 注意区分数值常量和字符串常量,如8765是数值常量,8765是字符串常量。2) 符号字符串常量: 用一个符号名代表一个字符串常量: CONST s=Wang 在本程序块中,s与“Wang”等价,如果有: PRINT s则输出Wang。字符串变量字符串变量用来存放一个字符串。字符串变量的值是可以改变的。 QBASIC允许使用两类字符串变量:变长的字符串变量和定长的字符串变量。1、 变长字符串变量 在程序执行过程中,它的长度可以增加,也可以缩短,但长度应在0到32767范围内。变长字符串变量使用比较方便灵活,如: a$=Shanghai (包括8个字符) a$=Beijing (减少为

3、7个字符) 定义变长字符串变量的三种方法: 在变量名后加字符串类型说明符“$”。 用DEFSTR语句定义以某字母开头且不包含类型说明符“$”的变量为字符串变量,如 DEFSTR a-b,指定凡以a和b开头的变量名均是字符串变量。 在DIM语句中使用AS STRING,如: DIM nam AS STRING说明:说明: 变量名是不区分大小写的,定义变量时应避开QBASIC中的关键字。2 定长字符串变量 定义定长字符串变量的方法如下: DIM变量名AS STRING *n 如:DIM nam AS STRING *(*为上角标)20 如果赋予定义字符串变量的字符串的实际长度小于定义时指定的字符个

4、数,则字符一律靠左存放,右端补空格。1 用LET语句给字符串变量赋值 其一般格式为: LET字符串变量名=字符串 字符串可以是一个字符串常量,也可以是一个字符串变量,或一个字符串表达式。 程序如下: DIM q AS STRING LET q=QBASIC programming PRINT q END 程序运行结果如下: QBASIC programming字符串变量的赋值字符串变量的赋值2 用INPUT语句给字符串变量赋值 INPUT语句可以用来输入数值或字符串常量,用法与前基本相同。 程序如下: INPUT Input a$ as a string:,a$ PRINT a$ END 程序

5、运行结果如下: Input a$ as a string: String String 从键盘输入时,字符串可以用双引号括起来,也可以不用双引号括起来。如果字符串首尾有空格,不用双引号括起来时,空格将被舍弃。 如果想在输入的字符串中包括逗号,则必须使用双引号把字符串括起来,否则系统会认为是输入两个字符串。字符串变量的赋值3 用LINE INPUT语句给字符串变量赋值 LINE INPUT语句又称为“行输入语句”,通过键盘输入一个整行字符串赋给一个字符串变量。这行上可以包含空格、逗号以及其它字符。 程序如下: PRINT enter 2 lines: LINE INPUT a$ LINE INP

6、UT b$ PRINT a$; “*”;b$ END 程序运行情况如下: enter 2 lines: first line (此处有5个空格) second line first line *second line字符串变量的赋值4 用READ/DATA语句给字符串变量赋值 READ语句中可以包含数值变量和字符串变量。DATA语句中应相应地放置数值常量和字符串常量。 需要说明有两点: READ语句中的变量与DATA语句中的常量,两者的类型要一一对应。 DATA语句中的字符串常量,可以用双引号括起来,也可以不用双引号括起来,如果字符串常量中包括首尾空格或包含逗号,应该用双引号括起来。1 字符串

7、的连接字符串的连接 可能把两个或多个字符串互相连接起来,用“+”作为连接字符串的运算符(“+”此处称为“字符串运算符”)。它的作用是把运算符两侧的字符串连接成一个字符串。例如: PRINT I +study +hard. 将输出一个字符串: I study hard.2 字符串的比较字符串的比较 QBASIC规定字符进行比较的规则为:在比较两个字符的“大小”时,是用它们的ASCII代码来比较的,ASCII代码大的,就认为该字符“大”。 (参见附录1)字符串的连接与比较 两个字符串相比较,是将这两个字符串从左到右逐个相比。两个字符串相比较,是将这两个字符串从左到右逐个相比。 如果两个字符如果两个

8、字符串长度相等,且每一个相应位置上的字符都一样,就认为两个字符串相等,如串长度相等,且每一个相应位置上的字符都一样,就认为两个字符串相等,如CHINA=CHINA。但应注意空格也应作为一个字符比较,如:。但应注意空格也应作为一个字符比较,如: CHINACHINA,因为前者第一个字符为空格字符。同样,因为前者第一个字符为空格字符。同样,CHINACHINA 。 如果两个字符串不是所有相应位置上的字符都相等,则以第一次出现的不同如果两个字符串不是所有相应位置上的字符都相等,则以第一次出现的不同字符的比较结果为准。如字符的比较结果为准。如, “yES”YES”。 如果两个字符串前面若干相应的字符都

9、相同,而其中一个字符串长一些,则如果两个字符串前面若干相应的字符都相同,而其中一个字符串长一些,则以长者为大,以长者为大,如:如:“PENCIL”PEN” 。 比较简单的记法是:按英文字典中的位置,出现在字典后面的比出现在前面比较简单的记法是:按英文字典中的位置,出现在字典后面的比出现在前面的值的值大大。字符串比较的规则如BeijingCHINA是一个字符关系表达式,它的值为“真”。 字符关系表达式的形式为: 字符串关系运算符字符串 其中字符串可以是字符串常量、字符串变量、字符串数组元素或字符串表达式。字符关系表达式 字符串数组用来存放字符串。这时在每一个字符串数组元素中存放一个字符串。定义字

10、符串数组的方法与定义数值数组相类似。 下面举例说明字符串数组的应用。 例 有如下12个国家(THAILAND,SINGAPORE,LAOS,BURMA,CHINA,INDIA,NEPAL,JAPAN,KOREA,MONGOLIA,EGYPT,INDONESIA)在我国进行某项体育比赛,依规定入场式时除东道主走在最后外,其它国家依国名的英语字母顺序排列,请编一个程序完成之。 字符串数组程序如下: DIM arr$(12) FOR j=1 TO 11 READ arr$(j) IF arr$(j)=CHINA THEN arr$(12)=CHINA j=j-1 END IF NEXT j FOR

11、j=1 TO 10 For k=j+1 TO 11 IF arr$(j)arr$(k) THEN SWAP arr$(j),arr$(k) NEXT k NEXT j FOR j=1 TO 12 PRINT arr$(j), NEXT j DATA THAILAND,SINGAPORE,LAOS,BURMA,CHINA,INDIA DATA NEPAL,JAPAN,KOREA,MONGOLIA,EGYPT,INDONESIA END 与字符串有关的函数1.求字符串长度的函数;2.把数值转换成字符串和把字符串转化成数值的函数;3.求子串的函数;4.删除字符串首尾空格的函数;5.查子串所在位置的函

12、数;6.大小写字母之间转换的函数;7.ASCII码字符与代码之间转换的函数;8.产生n个相同字符的字符串函数;9.日期和时间函数;10.从终端接受字符的函数。1 测字符串长度的函数 用LEN函数可以测出一个字符串数据中包含多少个字符,其一般形式为: LEN(字符串)REM main programDIM a AS STRING, b AS STRING, c AS STRINGINPUT please input stringa,b,c:; a, b, cIF LEN(b) LEN(a) THEN SWAP b, aIF LEN(c) LEN(a) THEN SWAP c, aIF LEN(c

13、) LEN(b) THEN SWAP c, bPRINT LEN(a), aPRINT LEN(b), bPRINT LEN(c), cEND2 字符串与数值间的转换函数 1).STR$函数 一般格式为:STR$() 此函数的作用是将一个数值表达式的值转换成字符串类型。即将此数值变成用双引号括起来的字符串常量。 例如:STR$(123)将得到123,STR$(-123)将得到-123。 2).VAL函数 一般格式为:VAL(字符串字符串) 此函数的作用是,将字符串中的数字字符转换成数值。例如:VAL(11223)的值为数值11223,VAL(-11223)的值为-11223。 如果字符串既包含

14、数值又包含非数字字符,若数字字符出现在字符串的最左面,则只处理最前面的数字字符。如字符串的最左端不是数字字符或正负号,则得数值0。如: VAL(-123ab456) 函数值为-123(字母后的数字不转换) VAL(“a123.456-789) 函数值为03 求子串函数(1).LEFT$函数它的形式为:LEFT$(,n)函数值为所指定字符串中左面n个字符。这里的“字符串”,可以是字符串常量、字符串变量、字符数组元素或字符表达式。n可以是一个常数,也可以是变量或数值表达式。如:LEFT(”abc de”,4)=“abc d”(2).RIGHT$函数它的形式为:RIGHT$(,n)其作用是给出指定字

15、符串中最右面的n个字符。如:RIGHT(”bde,2)=“de”(3).MID$函数其形式为:MID$(,p,n)用它求一个字符串中从第p个字符开始的n个字符,如MID$(1234567,2,4) 得到“2345”。 如果用MID$函数时不指定n,则表示从p字符开始的后面的全部字符。例:输入一个字符串,将该字符串分解为单个字符:例:输入一个字符串,将该字符串分解为单个字符:DIM a AS STRING, n AS INTEGER, i AS INTEGERLINE INPUT Input a line string:; an = LEN(a)DIM x(n) AS STRINGPRINT a

16、FOR i = 1 TO n x(i) = MID$(a, i, 1)NEXT iFOR i = 1 TO n PRINT x(i); ;NEXT iEND4 删除字符串首尾空格的函数(删除字符串首尾空格的函数(LTRIM$, RTRIM$):): LTRIM$函数删除字符串中左边的空格;函数删除字符串中左边的空格; RTRIM$函数删除字符串中右边的空格;函数删除字符串中右边的空格;LTRIM$(” abc”)=“abc”RTRIM$(” abc ”)=“ abc”LTRIM$(RTRIM$(” abc ”))=“abc” abc” ” abc ”LTRIM$(” abc”)= RTRIM$

17、(”abc ”)5 查找INSTR函数 它的一般形式为: INSRT(n,字符串1,字符串2) 从“字符串1”第n个位置开始找字符串2开始出现的位置。 如:INSTR(3,a$,b$) 作用是:从a$中第3个位置开始,找b$开始出现的位置。DECLARE SUB delstr (a AS STRING, n AS INTEGER, b AS STRING)DIM a AS STRING, b AS STRINGDIM an AS INTEGER, bn AS INTEGER, i AS INTEGER, find AS INTEGERa = IS WHAT IS ON THIS DEST? T

18、HIS IS A BOOK! ISb = ISPRINT The main string:; aPRINT The substring:; ban = LEN(a)bn = LEN(b)i = 1find = 1WHILE (i = an - bn + 1) AND (find) find = INSTR(i, a, b) IF find THEN CALL delstr(a, find, b)WENDPRINT After delete all ; b; substring the a$ is:; aEND1、主程序、主程序2、删除字符串子程序、删除字符串子程序SUB delstr (a A

19、S STRING, n AS INTEGER, b AS STRING) DIM ma AS INTEGER, mb AS INTEGER DIM l AS STRING, r AS STRING ma = LEN(a): mb = LEN(b) l = LEFT$(a, n - 1) r = RIGHT$(a, ma - (n - 1 + mb) a = l + rEND SUB6 大小写字母之间的转换 1).LCASE$函数 格式为:LCASE$(字符串字符串) 这个函数的作用是将指定的字符串中所有大写字母改变为小写字母。 2).UCASE$函数 格式为:UCASE$(字符串字符串) 这个

20、函数的作用是将指定的字符串中所有小写字母改变为大写字母。 例如: UCASE$(China)得到“CHINA” LCASE$(HOW DO YOU DO)得到“how do you do”。7 字符与ASCII码间的转换函数 1).ASC函数 格式为:ASC(字符串字符串) 作用是:将字符串中第一个字符转换成其相应的以十进制形式表示的ASCII代码。如ASC(a)的值为97,ASC(ABC)的值为65(65是A的ASCII码)。 2).CHR$函数 格式为:CHR$(数值表达式数值表达式) 其作用是:将数值转换成相应的字符。如CHR$(97)的值为“a”。8 建立由相同字符组成的字符串函数 1

21、).STRING$函数 格式为: STRING$(数值表达式数值表达式,字符字符) 作用是:得到一个由n个指定的字符组成的字符串。 STRING$(数值表达式数值表达式,字符串字符串) 得到一个由n个字符串中第一个字符所组成的字符串,这个函数在输出表格时特别有用,如想划60列宽的一条横线可用: PRINT STRING$(60,-) 2).SPACE$函数 格式为: SPACE$(数值表达式) 作用是:得到由n个空格组成的字符串。9 日期和时间函数 用DATE$函数和TIME$函数可以得到当前日期和时间。 DATE$语句的格式为: DATE$ TIME$语句的格式为: TIME$ 时间的格式为

22、:hh:mm:ss/10 INKEY$函数函数 INKEY$函数的作用是从键盘读入一个字符。用户输入字符函数的作用是从键盘读入一个字符。用户输入字符后不需按回车键。如果在执行此函数时用户没有输入任何字符,后不需按回车键。如果在执行此函数时用户没有输入任何字符,它并不等待用户输入,而读入一个空字符它并不等待用户输入,而读入一个空字符(“”)。常常在程序中。常常在程序中利用这一特性,使程序暂时等待,直到用户按下任何一个键,利用这一特性,使程序暂时等待,直到用户按下任何一个键,程序就结束或转入下一步操作。程序就结束或转入下一步操作。PRINT “Press any key to continue:”WHILE (INKEY$=“”)WEND基本要求掌握字符串变量、数组的定义;掌握字符串的赋值、比较和连接方法;掌握常用字符串函数的使用。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号