




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于自然拼讀理念破解小學(xué)英語(yǔ)諧音式拼讀困境的研究
- 廣告法律問題
- 二手房交易合同三方協(xié)議
- 出租工地鋼管房合同范本
- 兒童服務(wù)協(xié)議書范本模板
- 業(yè)主與租房中介合同范本
- 樁基合同超出金額補(bǔ)充協(xié)議
- 廣東省清遠(yuǎn)市英德市2023-2024學(xué)年七年級(jí)下學(xué)期期末道德與法治試題
- 2026屆長(zhǎng)治市重點(diǎn)中學(xué)化學(xué)高二第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)模擬試題含答案
- 高頻同前綴單詞配套語(yǔ)境填空鞏固練習(xí)題-2026年高考英語(yǔ)一輪復(fù)習(xí)同詞根詞綴單詞大全
- 燃?xì)廨啓C(jī)余熱回收技術(shù)-深度研究
- 2024年江蘇鹽城工業(yè)職業(yè)技術(shù)學(xué)院招聘考試真題
- 老齡化背景下的長(zhǎng)期照護(hù)需求-深度研究
- 《認(rèn)識(shí)創(chuàng)業(yè)投資》課件
- 2025年全國(guó)幼兒園教師資格證考試教育理論知識(shí)押題試題庫(kù)及答案(共九套)
- 專業(yè)鞋品采購(gòu)協(xié)議模板2024版
- 2016建筑抗震設(shè)計(jì)規(guī)范
- 未來產(chǎn)業(yè)的內(nèi)涵、特征、難點(diǎn)及進(jìn)路
- 合伙購(gòu)買礦山開采設(shè)備協(xié)議書
- 《護(hù)士職業(yè)素養(yǎng)》課件
- 掛名法人和實(shí)際控制人之間協(xié)議3篇
評(píng)論
0/150
提交評(píng)論