背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-6171.html    注册17xie 一起来写书 实现您的出书梦想!

10.3  字符串变量的赋值

我们已经知道要把一个数值送给一个数值型变量,可以使用LETINPUTREADDATA语句来实现。同理也可以使用这3种赋值语句字符型变量赋值,另外还可以用行输入语句LINE INPUT语句来为串变量赋值。

10.3.1  LET语句赋值

与数值变量相同,但要注意字符串常量必须用双引号括起来。

例如,下面的程序用LET语句对字符型变量赋值。

CLS

LET b$="BeiJing"

LET c$="ShangHai"

PRINT b$,c$

END

运行结果为:

BeiJing        ShangHai

10.3.2  INPUT语句赋值

INPUT语句也可以用来从键盘输入字符串数据,其用法与从键盘输入数值数据基本相同。但要注意:

1)在键盘上输入字符串变量的值时,字符串可用引号也可不用引号括起来。但在下列情况下必须用引号括起来:

n          字符串中有首尾空格时,要用引号括起来。否则首尾空格被删去。

n          字符串中带有逗号时,要用引号括起来。因逗号是两个数的分隔符,否则一个字符串将在逗号处分开。

2)在一个INPUT语句中可以既有数值型变量又有字符串变量,当从键盘回答时,应键入相应的数字和字符串。否则把一个字符串赋给一个数值型变量时将会出错。

3)建议初学者在用INPUT语句给变量赋值时,最好用引号将字符串括起来,以避免不必要的出错。

[10-3]  阅读下面的程序。

'EXAMPLE 3

CLS

INPUT"姓名:";xm$

INPUT"学号:";xh$

PRINT xm$,xh$

运行结果为:

姓名:?  Wang  Hong

学号:?  2000102

Wang Hong                2000102

10.3.3  READ…DATA语句赋值

READ…DATA语句除了可以用来读入数值变量外,还可以读字符串。其用法与数值型数据基本相同。但要注意:

1)在一个READ语句中既可以出现数值型变量,也可以出现字符串变量,同样在DATA语句中也可以出现这两类数据。

2)如果READ语句中既有数值型变量,又有字符型变量,那么DATA语句中相应的数据类型,必须与READ语句中相应的数据类型一致,否则将会出现数据类型不匹配的错误。

3DATA中的字符串可用引号也可不用引号括起来。但在下列情况下必须用引号括起来:

n          字符串中有首尾空格时,要用引号括起来,否则首尾空格被删去。

n          字符串中带有逗号时,要用引号括起来。因逗号是两个数的分隔符,否个字符串将在逗号处分开。

[10-4]  编制程序,输出学生姓名、学号、年龄、成绩,假设总共有6个学生。

程序为:

'EXAMPLE 4

CLS

PRINT"姓名","学号""年龄","总分"

FOR i=1 TO 6

READ  na$,no$,age,totaol

PRINT na$,no$,age,totaol

NEXT i

DATA "丁红莉","101",15,578

DATA "李小翔","102",16,532

DATA "刘大勇","103",15,512

DATA "杜姗姗","104",17,590

DATA "  ","105",16,580

DATA "张小华","106",16,587

END

运行结果为

姓名                  学号     年龄     总分

丁红莉                101      15       578

李小翔                102      16       532

刘大勇                103      15       512

杜姗姗                104      17       590

                  105      16       580

张小华                 106      16       587

10.3.4  LINE INPUT语句赋值

格式:

LINE INPUT[;]["〈提示字符〉";]〈串变量〉

功能:从键盘上读入一整行字符串(从提示字符之后到按回车键之前的所有字符),赋给字符串变量。

说明:

1)如果LINE INPUT后紧跟一个分号,那么按回车键结束输入时,光标仍保留在输入的同一行上。

2LINE INPUT语句称为行输入语句,执行此行语句时,提示字符的后面不显示问号“?”,这一点是与INPUT 语句不同的。

3LINE INPUT 语句对输入的字符没有限制,包括引号、逗号、空格等,这一点弥补了INPUT语句的不足。

4)该语句一行最多可以连续输入32767个字符。

5)输入字符串的中途,按〈Ctrl+Break〉键能停止行输入语句的操作,这时,返回到命令状态并显示OK。如果需要,可以输入CONT命令,再重新执行LINE INPUT语句。

[10-5]  观察下面的程序及运行结果。

程序为:

'EXAMPLE 5

CLS

PRINT"*********************"

LINE INPUT"A$=";a$

PRINT"*********************"

PRINT a$

PRINT"*********************"

END

运行结果为:

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

A$= She said:"Good Moring!"

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

She said:"Good Moring!"

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

10.4  字符串表达式及字符串的比较

10.4.1  字符串表达式

字符串运算符只有一个,就是“+”,它把两个或多个字符串型的常量、变量、函数依次首尾连接起来,组成一个新的字符串。

其一般格式为:

x1$+x2$+x3$+

其中,“+ 连接运算符,x1$,x2$,x3$,,为字符型常量、变量或字符型函数。

例如:

"THIS"+"IS"+"A"+"BOOK"

将得到一个新的字符串:

THIS IS A BOOK

用“+”将字符串数据连接起来的式子,称为字符串表达式。连接后的字符串长度不应超过32767个字符。

+”两侧可以是字符串常量、字符串变量或值为字符串的函数。

同数值表达式一样,可以将一个字符串表达式的值赋给一个字符串变量或字符串数组元素。例如:

ss$="THIS"+"IS"+"A"+"BOOK"

ss$的值为

THIS IS A BOOK

10.4.2  字符关系表达式

在非数值计算中,经常会遇到字符串的排序或检索问题。例如要求检索学生学号,并按学号排序,这就产生了字符串的比较问题。

用关系运算符可以写出各种不同的关系表达式。例如:

x$="Quick BASIC"

"THE"<"THESE"

"NAME"+"LI HAO">"LIU BING"

关系表达式只有“真”、“假”两个值。如执行第一句时,若x$中存放的也是Quick BASIC,则表达式的值为“真”,否则为“假”(式中的“=”是关系运算符,而不是赋值语句)。

10.4.3  两个字符串大小的比较

在计算机内部,所有字符都是以ASCII码表示的。比较两个字符的大小,就是比较它们ASCII码值大小,例如字符AASCII码值为65B66,所以关系表达式"B">"A"的值为“真”。

当两字符串的长度不等时,其比较的方法是将两个字符串从左至右逐个字符进行比较,直到出现不同的字符为止,其字符串的大小就由这两个不同的字符在ASCII码中的位置而定。

字符串比较有如下简单的规律:

1)同规格的字母比较,按字母的顺序排,后面的大。

2)大小写字母比较,小写字母大于该大写字母。

3)数字字符比较,按数值的大小排,数值大的大。

4)字母与数字比较,数字(0~9)的代码均小于字母(A~Z)的代码。

5)空格比数字、标点、字母等常见符号都小。

记住这以上几点就可以较快得出比较的结论。

[10-6]  阅读下面的程序。

'EXAMPLE 6

CLS

INPUT"ARE YOU A TEACHER?";x$

IF x$="YES"THEN

PRINT"YOU ARE A TEACHER!"

ELSE

PRINT"YOU ARE NOT A TEACHER!"

END IF

END

在执行该程序时,如果输入“YES”,则程序自动输出“YOU ARE A TEACHER!”,如果输入“yes”,则程序就按非“YES”对待,程序将自动输出“YOU ARE NOT A TEACHER!”,这是因为大小写字母是不同的字符,另外空格也参与比较,“YES”与“ YES”是不相等的两个字符串。

[10-7]  有若干个城市的名字,找出按英字母顺序排列在最后面的城市名字。

程序为:

'EXAMPLE 7

CLS

READ a$                        '读入第一个名字

FOR i=1 TO 7

READ b$                        '读数

IF a$<b$ THEN a$=b$            '比较较大字符串数据

NEXT i

PRITN  "This last city is:";a$  '输出结果

END

DATA "BEI JING","SHANG HAI""CHANG CHUN","WU HAN"

DATA"XI AN","LUO YANG","ZHENG ZHOU","ZHOU KOU"

程序运行结果为:

This last city is : ZHOU KOU

10.4.4  字符串的检索

在用计算机进行文字处理时,常利用INSTR函数来从一段文章中查找某一个关键字。其查找过程无非是利用字符串的比较来进行的。

格式:INSTRn,y$,x$

功能:从y$中但找子串x$的位置。

说明:

1n为一数值表达式,其值表示查找的起始位置,1n255.省略n时,默认为1

2x$,y$为字符串表达式。

3)如果y$中含有x$,则输出x$y$中的位置。

如果n>LENy$)或者找不到x$,则INSTR函数的值为0

如果从n开始,x$y$中不止出现一次,则只指出第一次出现的位置。

[10-8]  阅读下面的程序。

'EXAMPLE 8

a$="BASIC PROGRAMMING"

PRINT INSTRa$,"BASIC",

PRINT INSTRa$,"A",

PRINT INSTR4,a$,"A",

PRINT INSTRa$,"Y"

END

运行结果为:

1     2     12     0

[10-9]  编制一个查找某学生姓名的程序。

问题分析:

1)将全部学生的学号和名字放在DATA语句中。

2)输入要找的学生名字,与注册的学生名一一进行比较,如找到了(两名字相等)就输出结果,并显示是否还要找?如果找不到,就显示“找不到”等信息。

设置变量:

n$,c       为在册学生名及学号

x$         为要找的学生名

d$         回答是否还要继续找

f          判断标志

f=0        表示没有找到

f=1        表示已找到

n          在册学生数

I          计数器

程序为:

'EXAMPLE 9

f=0

i=1

n=6                      '假设学生数为6

DO WHILE f=0


字数:7285    最后更新:1年以前 [08-16 19:51]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第十章 字符处理  [后一页]:第十章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号