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

PRINT TAB20;"输入学生名:"

INPUT x$

DO

READ n$,c                '每次读一个学生名及学号

IF x$=n$ THEN f=1        'f=1表示已找到

i=i+1

LOOP UNTIL i>n OR f=1

IF f=0 THEN

PRINT TAB20;"没有找到!"

ELSE

PRINT"姓名:"x$;"已找到""学号为"c

END IF

PRINT"继续找吗(Y/N)?"

INPUT d$

IF d$="Y"ORd$="y"THEN

f=0

RESTORE                   '要继续找,则重新设f=0并恢复数据区

ELSE

f=1

END IF

i=1

LOOP

DATA Li Fang,1,Yang Hua,2,Liu Ying,3,Du Hua,4,Sun Hong,5,Wang Xiw,6

END

程序运行结果为:

输入学生名:Wang Hong

没有找到!

继续找吗(Y/N)?Y

输入学生名: LiFang

姓名:Li Fang   已找到     学号为 1

继续找吗(Y/N)?N          (结束程序)

10.5  取子字符串

子字符串是从一个字符串中抽出一组相连的字符组成的中一个新的字符串,简称子串,又称字符串的分割。实际上,子串是字符串的一部发。例如a$的值为“ABCDEFG”则“DEF”就是a$的一个子串,当然一个字符串可以有多个子串,如“ABC”,“A”,“EFG”等等都是a$的子串。

取子串的方法,可以利用LEFT$RIGHT$MID$等函数从一个字符串的左边、右边或中间取一部分字符出来。

10.5.1  LEFT$函数

格式:

LEFT$x$,n

功能:从x$的左边第一个字符起,取出n个字符组成一个子字符串。

说明:

10n255

2)如果nx$的长度时,则得到整个字符串;如果n=0,则得到空字符串(即子串长度为零)。

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

'EXAMPLE 10

a$="KAIFENG.HENAN.CHINA"

PRINT LEFT$a$,8

END

运行结果为

KAIFENG.

[10-11]  有一批城市名字是用汉语拼音拼写的,希望打印出字母以“ZH”开头的城市名。

程序为:

'EXAMPLE 11

CLS

FOR i=1 TO 8

READ a$

IF LEFT$a$,2="ZH"THEN PRINT a$

NEXT i

DATA "ZHU HAI""XI AN","ZHENG ZHOU","ZHOU KOU"

DATA"LUO HE","SAN MEN XIA","ZHU MA DIAN","ZHEN JIANG"

END

运行结果为:

ZHU HAI

ZHENG ZHOU

ZHOU KOU

ZHU MA DLAN

ZHEN JIANG

10.5.2  RIGHT$函数

格式:

RIGHT$x$,n

功能:从x$的右边取出n个字符串组成一个子字符串。

说明:同LEFT$函数一样。

[10-12]某校学生学号的最后两位是表示学生性别 ,后面两位是“10则认为是女同学,其他的为男同学。要求输入学生学号,并统计出男、女同学的人数。

程序为:

'EXAMPLE 12

boy=0                           '男生人数计数器赋初值

girl=0                          '女生人数计数器赋初值

INPUT "输入需统计的学生总数:"n

FOR i=1 TO n                    '输入n个学生学号

INPUT "请输入学生学号:"a$

IF RIGHT$a$,2="10"THEN

girl=girl+1

ELSE

boy=boy+1

END IF

NEXT i

PRINT "boy=";boy

PRINT "girl=";girl

END

程序运行结果为:

输入需统计的学生总数:  6

请输入学生学号:   9910110

请输入学生学号:   9934044

请输入学生学号:   9910230

请输入学生学号:   10010110

请输入学生学号:   45800610

请输入学生学号:   902218810

boy= 2

girl= 4

10.5.3  MID$函数

格式:

MID$x$,m[,n]

功能:从x$中第m个字符开始,取n个字符组成一个子字符串。

说明:

11m255,0n255

2)当n=0m大于字符串的长度时,得到空字符串。

3)当n省略或大于要取的字符串长度时,则得到从m开始的怕有字符。

[10-13]  26个英文字母按逆序打印出来。

'EXAMPLE 13

CLS

a$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"

PRINT"逆序打印26个英文字母为:"

FOR i=26 TO 1 STEP -1

PRINT MID$a$,i,1;

NEXT i

PRINT

END

程序运行结果为:

逆序打印26上英文字母为:

ZYXWVUTSRQPONMLKJIHGFEDCBA

10.5.4  删除字符串的首尾空格

在用定长字符串时,经常要删除其首尾空格。可利用下面的函数实现。

格式:

LTRIM$x$

RTRIM$x$

功能:LTRIM$x$)函数能删除x$开头的空格;RTRIM$x$)函数能删除x$结尾的空格。

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

'EXAMPLE 14

CLS

DEFSTR x                          'x为可变长字符串变量

DIM x AS STRING*8y AS STRING*8  'x,y为定长串变量

x="Quick BASIC,"

y="    good"

PRINT x,"长度="LENx

PRINT y,"长度="LENy

x=RTRIM$x                              '消右边空格

y=LTRIM$y                              '消左边空格

PRINT x,"长度=";LENx

PRINT y,"长度=";LENy

END

运行结果为:

Quick BASIC,        长度=8              x的右边补1个空格)

good                长度=8  

Quick BASIC,        长度=8               x的右边补1个空格)

good                长度=8

10.6  字符串的生成

前面介绍了用赋值的方法可以生成一个字符串,现在我们介绍使用STRING$,SPACE$函数来生成一串由某个字符重复组成的字符串。

10.6.1  STRING$函数

格式:

STRING$n,mx$

功能:得到一个由nASCIIm个对应的字符组成的字符串,或得到由nx$中第一个字符所组成的字符串。

说明:

10n255,0m255m为数值时,则代表该字符的ASCII码。

2)这个函数常用于制图或打印表格,例如打印一行“-”或“*”等。

[10-15]  阅读下面程序。

'EXAMPLE 15

PRINT STRING$10,"*"

PRINT STRING$7,66

PRINT STRING$10,"-"

PRINT STRING$12,"bcd"

END

程序运行后输出:

**********

BBBBBBB

----------

bbbbbbbbbbbb

10.6.2  SPACE$函数

格式:

SPACE$n

功能:产生n个空格组成的空格字符串。

说明:

10n255

2)该函数常用于数据对齐、规定格式等输出。

10.6.3  字符串中大小写字母之间的转换

在程序中经常需要将某些大写字母改写成小写字母,或把小写字母改写成大写字母。在Quick BASIC中可以利用LCASE$UCASE$函数进行变换。

格式:

LCASE$x$

      UCASE$x$

功能:LCASE$x$)函数把x$中的大写字母改写成小写字母;UCASE$x$)函数把x$中的小写字母改写成大写字母。

例如:

PRINT LCASE$"ABCdefghijk"

PRINT UCASE$"ABCdefghijk"

输出:

abcdefghijk

ABCDEFGHIJK

这两个函数可以使键盘输入标准化,简化两个字符间的比较。例如:

INPUT"输入(yes/no";a$

IF LEFT$a$,1="Y"OR LEFT$a$,1="y"THEN n=n+1

可以利用UCASE$函数简写为:

IF UCASE$LEFT$a$,1))="Y"THEN n=n+1

10.6.4  改变字符串中的字符语句MID$

字符串中的字符一般是没有改变的,若要改变,需重新设置一个串变量。而Quick BASIC提供的MID$语句(不要与MID$函数混淆)能够通过置换的办法来改变字符串中的字符。

格式:

MID$x$,m,n=y$

功能:在x$中从位置m开始被y$中的前n个字符置换,从而改变x$的值。

说明:

11m255,0n255

2)选择项n表示改变x$中字符的个数,如果省略nn>LENy$,则用y$的全部字符去置换。

3)执行此语句后,x$的长度是不能改变 。当需要置换的位置不够时,多余的y$中的字符被截去。

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

'EXAMPLE 16

a$="ABCDEFG"

b$=a$:c$=a$:d$=a$

MID$b$,4,3="XXX"

MID$d$,4,3="XX"

MID$d$,4,3="XXXXXX"

PRINT a$;b$;c$:d$

END

运行结果为:

ABCDEFG   ABCXXXG     ABCXXFG        ABCXXXG

[10-17]  编制程序,将"Your are a student"中的小写字母全部改成大写字母。

问题分析:

1)从ASCII码表中查得,小写字母在97~122之间,与大写字母的ASCII码值相差32。从标题中逐个取出字符,用ASC函数将它转换成ASCII码,如果此值在97~122之间,说明它为小写字母。

2)将小写字母的ASCII码值减去32后,利用CHR$函数和MID$语句转换成大写字母,去置换相应的小写字母,即MID$x$,1,1=CHR$x-32)。

程序为:

'EXAMPLE 17

CLS

a$="You are a student"

cd=LENa$

FOR i=1 TO cd

dgzf=ASCMID$a$,i,1))                  '取一个字符转换成ASCII

IF dgzf>96 AND dgzf<123 THEN            '判断是否为小写字母

MID$a$,i,1=CHR$dgzf-32              '用大写字母置换小写字母

END

NEXT i

PRINT a$

END

运行结果为:

YOU ARE A STUDENT

10.7  字符串与数值的相互转换

Quick BASIC不允许将数值赋值给一个字符串变量,也不允许将字符串变量赋给数值变量,否则将会产生数据类型不匹配的错误。现在我们介绍ASCII码与字符的相互转换以及数值与字符的相互转换。

10.7.1  ASCII码与字符的相互转换

1.ASC函数

格式:

ASCx$

功能:将x$的第一个字符转换成它所对应的ASCII码,并以十进制形式表示。

说明:如果x$是空串,则输出“非法函数调用”的错误信息。

例如:

PRINT ASC"A"              '输出:65

PRINT ASC"J"              '输出:74

PRINT ASC"BGFJ"           '输出:66


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

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

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