第八章字符串_第1頁
第八章字符串_第2頁
第八章字符串_第3頁
第八章字符串_第4頁
第八章字符串_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第八章 字符串字符串常量與變量字符串常量與變量字符串變量的輸入法字符串變量的輸入法字符串的比較字符串的比較字符串?dāng)?shù)組字符串?dāng)?shù)組與字符串有關(guān)的函數(shù)與字符串有關(guān)的函數(shù)字符串常量字符串常量是指在程序運(yùn)行過程中不會(huì)改變的字符串。QBASIC允許使用兩種形式的字符串常量。1) 顯式的字符串常量: 用雙引號(hào)括起來的一串字符。如This is a string.。 請注意:請注意: 雙引號(hào)不是字符串的一部分,它只是用作字符串的起止界限。 空格也作為一個(gè)字符,如:“a b c”(5個(gè)字符),“abc”(3個(gè)字符)。 允許有空串。即字符串中不包括任何字符,如:“”。 大寫字母和小寫字母是有區(qū)別的,如:“abc”

2、Abc”。 注意區(qū)分?jǐn)?shù)值常量和字符串常量,如8765是數(shù)值常量,8765是字符串常量。2) 符號(hào)字符串常量: 用一個(gè)符號(hào)名代表一個(gè)字符串常量: CONST s=Wang 在本程序塊中,s與“Wang”等價(jià),如果有: PRINT s則輸出Wang。字符串變量字符串變量用來存放一個(gè)字符串。字符串變量的值是可以改變的。 QBASIC允許使用兩類字符串變量:變長的字符串變量和定長的字符串變量。1、 變長字符串變量 在程序執(zhí)行過程中,它的長度可以增加,也可以縮短,但長度應(yīng)在0到32767范圍內(nèi)。變長字符串變量使用比較方便靈活,如: a$=Shanghai (包括8個(gè)字符) a$=Beijing (減少為

3、7個(gè)字符) 定義變長字符串變量的三種方法: 在變量名后加字符串類型說明符“$”。 用DEFSTR語句定義以某字母開頭且不包含類型說明符“$”的變量為字符串變量,如 DEFSTR a-b,指定凡以a和b開頭的變量名均是字符串變量。 在DIM語句中使用AS STRING,如: DIM nam AS STRING說明:說明: 變量名是不區(qū)分大小寫的,定義變量時(shí)應(yīng)避開QBASIC中的關(guān)鍵字。2 定長字符串變量 定義定長字符串變量的方法如下: DIM變量名AS STRING *n 如:DIM nam AS STRING *(*為上角標(biāo))20 如果賦予定義字符串變量的字符串的實(shí)際長度小于定義時(shí)指定的字符個(gè)

4、數(shù),則字符一律靠左存放,右端補(bǔ)空格。1 用LET語句給字符串變量賦值 其一般格式為: LET字符串變量名=字符串 字符串可以是一個(gè)字符串常量,也可以是一個(gè)字符串變量,或一個(gè)字符串表達(dá)式。 程序如下: DIM q AS STRING LET q=QBASIC programming PRINT q END 程序運(yùn)行結(jié)果如下: QBASIC programming字符串變量的賦值字符串變量的賦值2 用INPUT語句給字符串變量賦值 INPUT語句可以用來輸入數(shù)值或字符串常量,用法與前基本相同。 程序如下: INPUT Input a$ as a string:,a$ PRINT a$ END 程序

5、運(yùn)行結(jié)果如下: Input a$ as a string: String String 從鍵盤輸入時(shí),字符串可以用雙引號(hào)括起來,也可以不用雙引號(hào)括起來。如果字符串首尾有空格,不用雙引號(hào)括起來時(shí),空格將被舍棄。 如果想在輸入的字符串中包括逗號(hào),則必須使用雙引號(hào)把字符串括起來,否則系統(tǒng)會(huì)認(rèn)為是輸入兩個(gè)字符串。字符串變量的賦值3 用LINE INPUT語句給字符串變量賦值 LINE INPUT語句又稱為“行輸入語句”,通過鍵盤輸入一個(gè)整行字符串賦給一個(gè)字符串變量。這行上可以包含空格、逗號(hào)以及其它字符。 程序如下: PRINT enter 2 lines: LINE INPUT a$ LINE INP

6、UT b$ PRINT a$; “*”;b$ END 程序運(yùn)行情況如下: enter 2 lines: first line (此處有5個(gè)空格) second line first line *second line字符串變量的賦值4 用READ/DATA語句給字符串變量賦值 READ語句中可以包含數(shù)值變量和字符串變量。DATA語句中應(yīng)相應(yīng)地放置數(shù)值常量和字符串常量。 需要說明有兩點(diǎn): READ語句中的變量與DATA語句中的常量,兩者的類型要一一對應(yīng)。 DATA語句中的字符串常量,可以用雙引號(hào)括起來,也可以不用雙引號(hào)括起來,如果字符串常量中包括首尾空格或包含逗號(hào),應(yīng)該用雙引號(hào)括起來。1 字符串

7、的連接字符串的連接 可能把兩個(gè)或多個(gè)字符串互相連接起來,用“+”作為連接字符串的運(yùn)算符(“+”此處稱為“字符串運(yùn)算符”)。它的作用是把運(yùn)算符兩側(cè)的字符串連接成一個(gè)字符串。例如: PRINT I +study +hard. 將輸出一個(gè)字符串: I study hard.2 字符串的比較字符串的比較 QBASIC規(guī)定字符進(jìn)行比較的規(guī)則為:在比較兩個(gè)字符的“大小”時(shí),是用它們的ASCII代碼來比較的,ASCII代碼大的,就認(rèn)為該字符“大”。 (參見附錄1)字符串的連接與比較 兩個(gè)字符串相比較,是將這兩個(gè)字符串從左到右逐個(gè)相比。兩個(gè)字符串相比較,是將這兩個(gè)字符串從左到右逐個(gè)相比。 如果兩個(gè)字符如果兩個(gè)

8、字符串長度相等,且每一個(gè)相應(yīng)位置上的字符都一樣,就認(rèn)為兩個(gè)字符串相等,如串長度相等,且每一個(gè)相應(yīng)位置上的字符都一樣,就認(rèn)為兩個(gè)字符串相等,如CHINA=CHINA。但應(yīng)注意空格也應(yīng)作為一個(gè)字符比較,如:。但應(yīng)注意空格也應(yīng)作為一個(gè)字符比較,如: CHINACHINA,因?yàn)榍罢叩谝粋€(gè)字符為空格字符。同樣,因?yàn)榍罢叩谝粋€(gè)字符為空格字符。同樣,CHINACHINA 。 如果兩個(gè)字符串不是所有相應(yīng)位置上的字符都相等,則以第一次出現(xiàn)的不同如果兩個(gè)字符串不是所有相應(yīng)位置上的字符都相等,則以第一次出現(xiàn)的不同字符的比較結(jié)果為準(zhǔn)。如字符的比較結(jié)果為準(zhǔn)。如, “yES”YES”。 如果兩個(gè)字符串前面若干相應(yīng)的字符都

9、相同,而其中一個(gè)字符串長一些,則如果兩個(gè)字符串前面若干相應(yīng)的字符都相同,而其中一個(gè)字符串長一些,則以長者為大,以長者為大,如:如:“PENCIL”PEN” 。 比較簡單的記法是:按英文字典中的位置,出現(xiàn)在字典后面的比出現(xiàn)在前面比較簡單的記法是:按英文字典中的位置,出現(xiàn)在字典后面的比出現(xiàn)在前面的值的值大大。字符串比較的規(guī)則如BeijingCHINA是一個(gè)字符關(guān)系表達(dá)式,它的值為“真”。 字符關(guān)系表達(dá)式的形式為: 字符串關(guān)系運(yùn)算符字符串 其中字符串可以是字符串常量、字符串變量、字符串?dāng)?shù)組元素或字符串表達(dá)式。字符關(guān)系表達(dá)式 字符串?dāng)?shù)組用來存放字符串。這時(shí)在每一個(gè)字符串?dāng)?shù)組元素中存放一個(gè)字符串。定義字

10、符串?dāng)?shù)組的方法與定義數(shù)值數(shù)組相類似。 下面舉例說明字符串?dāng)?shù)組的應(yīng)用。 例 有如下12個(gè)國家(THAILAND,SINGAPORE,LAOS,BURMA,CHINA,INDIA,NEPAL,JAPAN,KOREA,MONGOLIA,EGYPT,INDONESIA)在我國進(jìn)行某項(xiàng)體育比賽,依規(guī)定入場式時(shí)除東道主走在最后外,其它國家依國名的英語字母順序排列,請編一個(gè)程序完成之。 字符串?dāng)?shù)組程序如下: 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 與字符串有關(guān)的函數(shù)1.求字符串長度的函數(shù);2.把數(shù)值轉(zhuǎn)換成字符串和把字符串轉(zhuǎn)化成數(shù)值的函數(shù);3.求子串的函數(shù);4.刪除字符串首尾空格的函數(shù);5.查子串所在位置的函

12、數(shù);6.大小寫字母之間轉(zhuǎn)換的函數(shù);7.ASCII碼字符與代碼之間轉(zhuǎn)換的函數(shù);8.產(chǎn)生n個(gè)相同字符的字符串函數(shù);9.日期和時(shí)間函數(shù);10. 從終端接受字符的函數(shù)。1 測字符串長度的函數(shù) 用LEN函數(shù)可以測出一個(gè)字符串?dāng)?shù)據(jù)中包含多少個(gè)字符,其一般形式為: 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(

13、c) LEN(b) THEN SWAP c, bPRINT LEN(a), aPRINT LEN(b), bPRINT LEN(c), cEND2 字符串與數(shù)值間的轉(zhuǎn)換函數(shù) 1).STR$函數(shù) 一般格式為:STR$() 此函數(shù)的作用是將一個(gè)數(shù)值表達(dá)式的值轉(zhuǎn)換成字符串類型。即將此數(shù)值變成用雙引號(hào)括起來的字符串常量。 例如:STR$(123)將得到123,STR$(-123)將得到-123。 2).VAL函數(shù) 一般格式為:VAL(字符串字符串) 此函數(shù)的作用是,將字符串中的數(shù)字字符轉(zhuǎn)換成數(shù)值。例如:VAL(11223)的值為數(shù)值11223,VAL(-11223)的值為-11223。 如果字符串既包

14、含數(shù)值又包含非數(shù)字字符,若數(shù)字字符出現(xiàn)在字符串的最左面,則只處理最前面的數(shù)字字符。如字符串的最左端不是數(shù)字字符或正負(fù)號(hào),則得數(shù)值0。如: VAL(-123ab456) 函數(shù)值為-123(字母后的數(shù)字不轉(zhuǎn)換) VAL(“a123.456-789) 函數(shù)值為03 求子串函數(shù)(1).LEFT$函數(shù)它的形式為:LEFT$(,n)函數(shù)值為所指定字符串中左面n個(gè)字符。這里的“字符串”,可以是字符串常量、字符串變量、字符數(shù)組元素或字符表達(dá)式。n可以是一個(gè)常數(shù),也可以是變量或數(shù)值表達(dá)式。如:LEFT(”abc de”,4)=“abc d”(2).RIGHT$函數(shù)它的形式為:RIGHT$(,n)其作用是給出指定

15、字符串中最右面的n個(gè)字符。如:RIGHT(”bde,2)=“de”(3).MID$函數(shù)其形式為:MID$(,p,n)用它求一個(gè)字符串中從第p個(gè)字符開始的n個(gè)字符,如MID$(1234567,2,4) 得到“2345”。 如果用MID$函數(shù)時(shí)不指定n,則表示從p字符開始的后面的全部字符。例:輸入一個(gè)字符串,將該字符串分解為單個(gè)字符:例:輸入一個(gè)字符串,將該字符串分解為單個(gè)字符:DIM a AS STRING, n AS INTEGER, i AS INTEGERLINE INPUT Input a line string:; an = LEN(a)DIM x(n) AS STRINGPRINT

16、aFOR i = 1 TO n x(i) = MID$(a, i, 1)NEXT iFOR i = 1 TO n PRINT x(i); ;NEXT iEND4 刪除字符串首尾空格的函數(shù)(刪除字符串首尾空格的函數(shù)(LTRIM$, RTRIM$):): LTRIM$函數(shù)刪除字符串中左邊的空格;函數(shù)刪除字符串中左邊的空格; RTRIM$函數(shù)刪除字符串中右邊的空格;函數(shù)刪除字符串中右邊的空格;LTRIM$(” abc”)=“abc”RTRIM$(” abc ”)=“ abc”LTRIM$(RTRIM$(” abc ”))=“abc” abc” ” abc ”LTRIM$(” abc”)= RTRIM

17、$(”abc ”)5 查找INSTR函數(shù) 它的一般形式為: INSRT(n,字符串1,字符串2) 從“字符串1”第n個(gè)位置開始找字符串2開始出現(xiàn)的位置。 如:INSTR(3,a$,b$) 作用是:從a$中第3個(gè)位置開始,找b$開始出現(xiàn)的位置。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?

18、THIS 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

19、AS 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 大小寫字母之間的轉(zhuǎn)換 1).LCASE$函數(shù) 格式為:LCASE$(字符串字符串) 這個(gè)函數(shù)的作用是將指定的字符串中所有大寫字母改變?yōu)樾懽帜浮?2).UCASE$函數(shù) 格式為:UCASE$(字符串字符串) 這

20、個(gè)函數(shù)的作用是將指定的字符串中所有小寫字母改變?yōu)榇髮懽帜浮?例如: UCASE$(China)得到“CHINA” LCASE$(HOW DO YOU DO)得到“how do you do”。7 字符與ASCII碼間的轉(zhuǎn)換函數(shù) 1).ASC函數(shù) 格式為:ASC(字符串字符串) 作用是:將字符串中第一個(gè)字符轉(zhuǎn)換成其相應(yīng)的以十進(jìn)制形式表示的ASCII代碼。如ASC(a)的值為97,ASC(ABC)的值為65(65是A的ASCII碼)。 2).CHR$函數(shù) 格式為:CHR$(數(shù)值表達(dá)式數(shù)值表達(dá)式) 其作用是:將數(shù)值轉(zhuǎn)換成相應(yīng)的字符。如CHR$(97)的值為“a”。8 建立由相同字符組成的字符串函數(shù) 1).

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論