字符處理專題_第1頁(yè)
字符處理專題_第2頁(yè)
字符處理專題_第3頁(yè)
字符處理專題_第4頁(yè)
字符處理專題_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

字符處理專題

1.要求從某一字符串口刪除指定的字符(假設(shè)所含的英文字母均為小寫字母),并

將處理后的字符串重新輸出。

程序界面如圖,在文本框Text」中輸入原始字符串,在文本框Text_2中輸入需

要?jiǎng)h除的字符,單擊”刪除此字符”按鈕(Commandl)后,在文本框Text_3中輸

出處理后的結(jié)果。

??字符?除程序13回區(qū)]

輸入原始字符串|todayisBonday

輸入需要?jiǎng)h除的字符p—

處理后的結(jié)果ifmoney

DimpAsString,kAsString

PrivateSubCommandl_Click()

DimsAsInteger,resultAsString

DimflagAsBoolean

result=w/,

p=Text_l.Text

k=Text_2.Text

Fors=lTo____________

flag=f(s)

IfNotflagThen

result=result+

EndIf

Nexts

解決此問題的算法足

EndSub

Functionf(sAsInteger)AsBoolean

IfMid(p,s,l)=kThenf=True

EndFunction

看三個(gè)字母

2.把某一字符串中的某個(gè)字符替換為另一個(gè)字符[假設(shè)所含的英文字母均為小寫

字母),并將處理后的字符串重新輸出。界面如圖,在文本框Txtl中輸入原始字

符串,在文本框Txt2中輸入查找字符,在文本框Txt3中輸入替換的字符,單擊〃查

找替換〃按鈕(Commandl)后,在文本框Txtout中輸出處理后的結(jié)果。

DimstlAsString,st2AsString

PrivateSubCommandl_Click()

DimiAsInteger,st3AsString,resultAsString,flagAsBoolean

stl=Txtl.Text:st2=Txt2.Text:st3=Txt3.Text

p=Len(stl)

result=〃〃

Fori=lTop

ok=f(i)

Ifok=TrueThen

日se

result=result+Mid(stlJzl)

EndIf

Nexti

EndSub

午函數(shù)用于判斷當(dāng)前字符是否為要替換的字符,若是返回函數(shù)值True,否則返回

False

Functionf(iAsInteger)AsBoolean

IfMid(stlj,l)=Thenf=True

EndFunction

3.小張用VB編寫一個(gè)文本替換程序,功能如下:單擊“替換”按鈕Command'

將文本框Textl中與文本框Text2相同的文本,替換為文本框Text3內(nèi)的文本,并

在文本框Text4中顯示替換后的結(jié)果,以及在標(biāo)簽Label5中輸出替換的總數(shù),運(yùn)

行效果如圖所示。替換算法如下:

(1)將文本框1,2,3中的字符串分別保存到變量s,sl,s2中;

(2)當(dāng)字符串s的i位置右邊長(zhǎng)度超過字符串si長(zhǎng)度時(shí),循環(huán)執(zhí)行下列①、②

步,否則跳轉(zhuǎn)到(3);

①如果S第i個(gè)位置起,查找到與S1相同的文本,則將S替換后的結(jié)果重新賦值

給變量s,i位置跳過字符串s2長(zhǎng)度到達(dá)下一個(gè)查找位置,同時(shí)替換總數(shù)加1;

②否則,i加1跳轉(zhuǎn)到下一個(gè)字符位置;

(3)將替換后的字符串s顯示在文本框Text4中,同時(shí)顯示替換總數(shù)。

Textl

Text3

Text2

Commandl

Text4

PrivateSubCommandl_Click()

DimsAsString,siAsString,s2AsString

DimtotalAsInteger,iAsInteger

s=Textl.Text,原文輸入

si=Text2.Text,目標(biāo)文本輸入

s2=Text3.Text,替換文本輸入

i=1:total=0

DoWhilei<=Len(s)-Len(sl)+1

IfThen

s=Leftfs,i-1)+s2+Mid(s,i+Len(sl))

total=total+1

Else

i=i+l

EndIf

Loop

Text4.Text=s

EndSub

4.用VB編寫一個(gè)程序,用于處理文本框Textl.Text中的內(nèi)容,假設(shè)文本框

Textl.Text中有偶數(shù)個(gè)字符。要求將文本框從頭至中間依次各取字符,組成一個(gè)

新的字符串str2,并在標(biāo)簽Label2上輸出。如:Textl.text=//12345G78/,,則

Str2="18273645〃,運(yùn)行效果如圖所示。處理算法如下:

(1)將文本框中的字符串保存到變量strl中;

(2)當(dāng)strl中字符個(gè)數(shù)是偶數(shù)時(shí),循環(huán)執(zhí)行下列①、②、③步,否則重新輸入。

①設(shè)定循環(huán)初始值m為。;

②當(dāng)m值小于字符串長(zhǎng)度一半時(shí),截取strl從前往后部分的1個(gè)字符,添加到

str2的后面;

③截取strl從后往前部分的1個(gè)字符,添加到str2的后面;

(3)循環(huán)條件結(jié)束后,輸出str2的內(nèi)容到標(biāo)簽Label2上。

PrivateSubCommandl_Click()

DimstrlAsString,str2AsString

strl=______________

str2=""

IfThen

MsgBox”輸入字符個(gè)數(shù)非偶數(shù),請(qǐng)重新輸入”

Textl.Text=""

Else

m=0

DoWhilem<________________

str2=str2+Mid(strlz,1)

str2=str2+Mid(strl,,1)

m=m+1

Loop

Label2.Caption=str2

EndIf

EndSub

5.用VB編寫一個(gè)字符串分行程序,功能如下:單擊〃分行〃按鈕Commandl,將文本

框Textl中的英文文本在列表框Listl中分行顯示(分行時(shí)單詞不得跨行,每行字符

盡可能多但不超過40個(gè)),并在標(biāo)簽Labell中輸出總行數(shù),運(yùn)行效果如圖所示。分

行算法如下:

⑴將文本框中的字符串保存到變量s中;

⑵當(dāng)s中字符個(gè)數(shù)超過40時(shí),循環(huán)執(zhí)行下列①、②、③步,否則跳轉(zhuǎn)到⑶:

①如果第41個(gè)字符不足英文字母,則分行位置p=40;否則,向左逐個(gè)查找,直至找到

第一個(gè)非英文字母,將其位置作為分行位置P;

②截取s的前p個(gè)字符,作為新增行顯示在列表框Listl中,同時(shí)總行數(shù)加1;

③將s中未分行部分重新賦值給變量So

⑶將s作為新增行顯示在列表框Listl中,同時(shí)總行數(shù)加lo

?字符串分行[3回區(qū)

實(shí)現(xiàn)上述功能的VB程序如下,請(qǐng)?jiān)趧澗€處填入合適代碼。

PrivateSubCommandl_Click()

DimsAsString,cAsString

DimrAsInteger,totalAsInteger,pAsInteger

total=0

s=_________________

DoWhileLen(s)>40

r=41

c=Mid(s,r,1)

IfNot((c>=〃a〃Andc<=//z/,)Or(c>=//A//Andc<=〃Z〃))Then

p=40

Else

,從第41個(gè)字符開始向左找到第1個(gè)非英文字母,并將其位置值賦給p

DoWhile(c>="a〃Andc<=〃z〃)Or(c>="A〃Andc<=〃Z〃)

c=Mid(s,r,l)

Loop

P=_______

EndIf

Listl.AdditemMid(s,l,p)

total=total+l

s=________________

Loop

Listl.Addltems

total=total+l

Labell.Caption=〃共〃+Str(total)+“行〃

EndSub

6.在VB程序中編寫一個(gè)子過程Delstr(sl,s2),實(shí)現(xiàn)功能如下:

在Textl中輸入字符串si,在Text2中輸入子字符串s2,單擊Commandl按鈕,

從左向右依次查找字符串si中所有出現(xiàn)的字符串S2,并將其刪除,每次刪除后

結(jié)果還存放在si中,最終結(jié)果顯示在Label3中。程序運(yùn)行界面如圖所示:

PrivateSubDelstr(slAsString,s2AsString)

DimnlAsInteger,n2AsInteger,iAsInteger

nl=Len(sl)

n2=Len(s2)

i=1

DoWhile'直到查找到所有的子字符串,退出循環(huán)

IfMid(sl,i,n2)=s2Then

_________________________,取值后結(jié)果繼續(xù)存放在si中

nl=Len(sl)'重新獲得新的si的長(zhǎng)度

Else

i=i+l

EndIf

Loop

EndSub

PrivateSubCommandl_Click()

DimtlAsString,t2AsString

tl=Text1.Text

t2=Text2.Text

Delstrtl,t2

Label3.Caption="刪除后字符串變?yōu)椋?&tl

EndSub

問:若按上圖所示結(jié)果,D。循環(huán)應(yīng)執(zhí)行次后退出循環(huán)

7.統(tǒng)計(jì)單詞個(gè)數(shù)。小明要參加英語(yǔ)等級(jí)考試,正在苦練寫作,為了快速統(tǒng)計(jì)文

字中單詞的個(gè)數(shù),他設(shè)計(jì)了如下VB程序,只要在文本框Textl中輸入短文,單

擊統(tǒng)計(jì)按鈕,單詞的個(gè)數(shù)就在Text2中顯示(假定每個(gè)單詞中不包含英文字母以

外的其他字符)。

算法的基本思路:按位取出字符,如果是字母,并且flag=False,說明是一人單

詞的開始,則單詞個(gè)數(shù)增加1,flag置為True,余下的連續(xù)字母不再計(jì)數(shù)。如果

讀入非字母,則表示一個(gè)單詞已經(jīng)完成,flag重新置為False,繼續(xù)循環(huán)。

程序界面如圖所示,按此要求編寫程序如下,但加框處代碼有錯(cuò),請(qǐng)改正。

PrivateSubCommandl_Click()

DimxAsString,yAsString

DimnAsInteger,mAsInteger,flagAsBoolean

x=Text1.Text

m=0:flag=False

Fori=1ToLen(x)

y=xtod(Mid(x,i,1))

Ify>="A"Andy<="Z"Then

IfflagThen

m=m+1

flag=True

EndIf

Else

flag=False

EndIf

Nexti

Text2.Text=Str(m)

EndSub

,將小寫字母轉(zhuǎn)化為大寫字母。

Functionxtod(chAsString)AsString

Ifch>="a"Andch<="z"Then

xtod=Asc(Chr(ch)-32)

Else

xtod=ch

EndIf

EndFunction

8.編寫VB應(yīng)用程序,實(shí)現(xiàn)以下功能:在文本框Textl中輸入一串由字母、數(shù)字

等字符組成的字符串,點(diǎn)擊“統(tǒng)計(jì)”按鈕Command1,在列表框Listl中統(tǒng)計(jì)每

個(gè)字母出現(xiàn)的次數(shù)(不分大小寫)。程序運(yùn)行界面如圖。

實(shí)現(xiàn)上述功能的VB程序如下,但加框處代碼有錯(cuò),請(qǐng)改正。

函數(shù)IsLetter(x)功能,若x是字母,則返回值為字母x在字母序列〃A〃/Z〃中的序

號(hào),如字母"A”的序號(hào)為0,字母"D”的序號(hào)為3。若x不是宇母,則返回值為-1。

(1)加框處①有錯(cuò),應(yīng)改為_______________________________

(2)加框處②有錯(cuò),應(yīng)改為_______________________________

(3)虛線框處的程序,采用的查找算法是

FunctionlsLetter(xAsString)AsInteger

If"A"<=xAndx<="Z"Then

IsLetter=Asc(x)-Asc("A")

Elself"a"<=xAndx<="z"Then

IsLetter=Asc(x)-Ascf'a")

Else

IsLetter=1

EndIf

EndFunction

PrivateSubCommandl_Click()

Dimf(25)AsInteger,mAsInteger,nAsInteger

DimsAsString,cAsString

Listl.Clear

Form=0To25'初始化數(shù)組f

f(m)=0

Nextm

s=Text1.Text

Form=1ToLen(s)

c=Mid(s,m,1)

n=IsLetter(c)

Ifn<>-1Then

f(m)=f(m)+1

EndIf

Nextm

Form=0To25

Iff(m)<>0Then

Listl.AddltemChr(m+Asc("a"))&&f(m)

EndIf

Nextm

EndSub

9.某數(shù)據(jù)加密方法描述如下:

⑴以字節(jié)為單位進(jìn)行加密處理;

⑵將1個(gè)字節(jié)的8位二進(jìn)制數(shù)分割成前4位與后4位兩個(gè)二進(jìn)制數(shù):

⑶分別將上述兩個(gè)4位二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù);

⑷將每個(gè)十進(jìn)制數(shù)轉(zhuǎn)換為1個(gè)加密字符,對(duì)應(yīng)的"密碼表〃如下:

值(十進(jìn)制)0123456789101112131415

加密字符I1keCIINPostcard

小明按照上述方法,設(shè)計(jì)了一個(gè)字符串(僅包含ASCII字符)加密的VB程序,功能

如下:?jiǎn)螕簟凹用堋ò粹oCommands程序依次將文本框Textl中每個(gè)字符的ASCII

碼值作為1個(gè)字節(jié)轉(zhuǎn)換為兩個(gè)加密字符,連接這些加密字符,最后在文本框Text2

中輸出加密結(jié)果。下表顯示了字符串中一個(gè)字符的加密過程:

程序運(yùn)行效果如圖所示:

實(shí)現(xiàn)上述功能的VB程序如下:

⑴請(qǐng)?jiān)趧澗€處填入合適代碼。

PrivateSubCommandl_Click()

DimnAsInteger;sAsString,iAsInteger,ssAsString

DimaAsInteger,存儲(chǔ)加密前字符的ASCII碼

DimblAsInteger,b2AsInteger'分別存儲(chǔ)分割、轉(zhuǎn)換后的兩個(gè)十進(jìn)制數(shù)

s=Text1.Text

Fori=1Ton

a=Asc(Mid(s,i,1))

bl=a\16

b2=aMod16

ss=ss+Code2Char(bl)+Code2Char(b2)

Nexti

Text2.Text=ss

EndSub

'十進(jìn)制值轉(zhuǎn)換為加密字符的函數(shù)

FunctionCode2Char(cAsInteger)AsString

DimsAsString

s=w11ikeCHNpostcardw

Code2Char=______________

EndFunction

⑵若將“密碼表〃中值為“0〃對(duì)應(yīng)的加密字符"'改成"i〃,加密后的密文可能無(wú)法解

密,原因是0

10.某數(shù)據(jù)壓縮方法描述如下:

1)原始數(shù)據(jù)中,某數(shù)不為o且相鄰無(wú)重復(fù),JE縮數(shù)據(jù)用該數(shù)據(jù)表示;

2)原始數(shù)據(jù)中,某數(shù)為。且相鄰無(wú)重復(fù),壓縮數(shù)據(jù)用兩個(gè)數(shù)表示:第1個(gè)為

0,第2個(gè)為0;

3)原始數(shù)據(jù)中,某數(shù)據(jù)相鄰有重復(fù),壓縮數(shù)據(jù)用3個(gè)數(shù)表示:第1個(gè)為0,

第2個(gè)為重復(fù)數(shù)的個(gè)數(shù),第3個(gè)為該數(shù)本身。

根據(jù)上述壓縮方法,對(duì)應(yīng)的解壓縮方法示例如圖a所示。

小明編寫了一個(gè)解壓送VB程序,功能如下:窗體加載時(shí),自動(dòng)讀取壓縮數(shù)據(jù),

依次存儲(chǔ)在數(shù)組元素a(l)、a(2)、a(3)……中,壓縮數(shù)據(jù)的個(gè)數(shù)存儲(chǔ)在變量n中,

壓縮數(shù)據(jù)顯示在文本框Textl中。單擊“解壓縮”按鈕Command1,程序?qū)嚎s

數(shù)據(jù)依次進(jìn)行解壓縮處理,解壓縮數(shù)據(jù)顯示在文本框Text2中。程序運(yùn)行界面如

圖b所示。

圖b

(1)如果壓縮數(shù)據(jù)為“23,0,21,66,0,0,77,0,5,0”,則解壓縮數(shù)據(jù)的個(gè)數(shù)是

(2)實(shí)現(xiàn)上述功能的VB程序如下。請(qǐng)?jiān)趧澗€處填入合適代碼。

Dima(lTo100)AsInteger,存儲(chǔ)壓縮數(shù)據(jù),最大處理個(gè)數(shù)為100

Dimb(lTo1000)AsInteger'存儲(chǔ)解壓縮數(shù)據(jù),最大處理個(gè)數(shù)為1000

DimnAsInteger'存儲(chǔ)壓縮數(shù)據(jù)的個(gè)數(shù)

PrivateSubForm_Load()

'壓縮數(shù)據(jù)由上述壓縮方法生成

'本過程用丁讀取壓縮數(shù)據(jù)并存儲(chǔ)在數(shù)組日,壓縮數(shù)據(jù)個(gè)數(shù)存儲(chǔ)在變量n中

’代碼略

EndSub

PrivateSubCommandl_Click()

DimpaAsInteger,存儲(chǔ)壓縮數(shù)組當(dāng)前處理位置

DimpbAsInteger'存儲(chǔ)解壓縮數(shù)組當(dāng)前處理位置

DimfirstdataAsInteger,countAsInteger,iAsInteger

pa=1:pb=1

DoWhilepa<=n

firstdata=a(

溫馨提示

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

評(píng)論

0/150

提交評(píng)論