数字和字符处理题型分析.doc_第1页
数字和字符处理题型分析.doc_第2页
数字和字符处理题型分析.doc_第3页
数字和字符处理题型分析.doc_第4页
数字和字符处理题型分析.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字和字符处理题型分析(2)执行下面的程序,单击窗体后在窗体上显示的第一行结果是1,第三行结果是_2_。Private Sub Command1_Click()Dim Mystr, MyStr1, Mystr2 As StringMyStr1 = BFor i = 1 To 3Mystr2 = LCase(MyStr1)MyStr1 = MyStr1 & Mystr2Mystr = Mystr & MyStr1Print MystrMyStr1 = Chr(Asc(MyStr1)+ i)Next iEnd SubiMyStr1MyStr2MyStr打印B1BbbBbBbC2CccEBbCcBbCc3EeeBbCcEeBbCcEe答案:(1)Bb(2)BbCcEe分析:Asc()函数只取第一个字符的数值。7.下面是一个加密/解密程序,加密的算法是:将原文中每个字符的ASCII代码加上该字符在原文中的位置数(设字符在原文中是第n个字符,在其位置是n被10除的余数,当余数为0时,其位置数为10。例如原文字符串为“meet me at sunset”,第一个字符“m”,其位置数为1,而“s”为第12个字符,其位置数是被10除的余数2,其余依次类推)作为密文字符的代码,再将密码字符逆序排列(例如ABCD,逆序排列为DCBA)即为密文。解密算法是加密算法的逆运算。Option ExplicitPrivate Sub Command1_Click() 加密 Dim enc As String, dec As String, i As Integer Dim s As String * 1, n As Integer dec = Text1 For i = 1 To Len(dec) s = Mid(dec, i, 1) (19) If n = 0 Then n = 10 enc = Chr(Asc(s) + n) & enc Next i Text2 = encEnd SubPrivate Sub Command2_Click() 解密 Dim enc As String, dec As String, i As Integer Dim n As Integer, s As String * 1, p As Integer enc = Text2 (20) For i = 1 To n s = Mid(enc, i, 1) p = n Mod 10 If p = 0 Then p = 10 dec = (21) n = n - 1 Next i Text1 = decEnd Sub答案:n = i Mod 10n = Len(enc)Chr(Asc(s) - p) & dec(4)运行下面的程序,单击窗体后在窗体上显示的第一行结果是1,第三行结果是2。Private Sub Form_Click()Dim mst As String, mst1 As String, mst2 As StringDim i As Integermst1 = CeBbAaFor i = Len(mst1) To 1 Step -2mst2 = Mid(mst1, i - 1, 2)mst = mst & mst2Print mstNext iEnd Submst1mst2msti打印CeBbAaAaAa6AaBbAaBb4AaBbCcAaBbc2AaBbc答案:(8)Aa(9)AaBbCe分析:Mid()函数的操作方式是从后向前取字符。(2)执行下面程序,第二行输出结果是1,第三行输出结果是2。Private Sub Form_Click()Dim ch As String, i As Integerch = ABCFor i = 1 To 3ch = Mid(ch, 2 * i - 1, 1)+ Left(ch, Len(ch)Print chNext iEnd Subchi打印ABC1Mid(ABC,1,1)+Left(ABC,3)A”+”ABCAABCAABC2Mid(AABC,3,1)+Left(AABC,4)B+AABCBAABCBAABC3Mid(BAABC,5,1)+Left(BAABC,5)C+BAABCCBAABCCBAABC答案:(1)BAABC(2)CBAABC35. 执行下面的程序,单击窗体后在窗体上显示的结果是_35_。Private Sub Form_Click() Dim Str1 As String, Str2 As String Dim Str3 As String, I As Integer Str1=e For I=1 To 2 Str2=UCase(Str1) Str1=Str2 & Str1 Str3=Str3 & Str1 Str1=Chr(Asc(Str1)+I) Next I Print Str3End SubIStr1Str2Str3打印1eEEeEe2FFEeFFFFHEeFF(A)EeFF(B)eEFF(C)EEFF(D)eeFF答案:A分析:35. 在窗体Form1上,有一个列表框控件List1,在窗体的Click事件中有如下代码:Private Sub Form_Click()Dim k As IntegerDim entry As String, item As Stringentry=EDCBAFor k=Len(entry)To 1 Step -1item=LCase(Mid(entry,k,1) & kList1.AddItem itemNext kEnd Sub运行此程序,单击窗体后在窗体的列表框中显示的第四个列表项内容是_35_。(A)b4(B)b2(C)d4(D)d2答案:D分析:Kentryitem添加5EDCBAa5a54b4b43c3c32d2d21e1e11. 执行下面的程序,在窗体上显示的输出结果的第一行是_this is a book._,第二行结果是_This Is A Book._。Option ExplicitPrivate Sub Form_Click()Dim s As String, i As Integer, flag As Booleans = THIS IS A BOOK.s = LCase(s)Print sflag = TrueFor i = 1 To Len(s)If Mid(s, i, 1)= Thenflag = TrueElseIf flag Thens = Left(s, i - 1) & UCase(Mid(s, i, 1) & Right(s, Len(s)- i)flag = FalseEnd IfNext iPrint sEnd Subsiflag打印THIS IS A BOOK.1Truethis is a book.this is a book.This is a book.False5TrueThis Is a book.6False8TrueThis Is A book.9False10TrueThis Is A Book.11FalseThis Is A Book.分析:用flag来控制进程的走向,4. 执行下面的程序,图片框第一行内容是 CBA ,图片框第二行内容是 ABC 。Option ExplicitPrivate Sub Command1_Click()Dim S As StringS = ABCBack SPicture1.PrintPicture1.Print SEnd SubPrivate Sub Back(St As String)If Len(St) 1 ThenBack(Right(St, Len(St)- 1)End IfPicture1.Print Left(St, 1);End SubSt层次打印ABC一BC二C三CBC二CBABC一CBA0ABC分析:这是递归过程。3执行下面的程序,单击窗体上的按钮,则在窗体上显示的第一行是(4),第二行是(5),第三行是(6)。Private Sub Command1_Click()Dim s As String, t As StringDim k As Integer, m As Integers = BASICYk = 1: m = kFor k = 1 To Len(s) Step m + 1t = t & Chr(Asc(Mid(s, m, 1)+ k)k = k + 1If Mid(s, k, 1)= Y Then Exit Form = m + kPrint tNext kPrint mEnd Substkm打印BASICYC11C21+2=3CW43+5=8CW78答案:(4)C(5)CW(6)8分析:要记住Chr(65)A,Chr(97)a。Chr(x)返回以x为ASCII代码值的字符, Asc(x)为求单个字符ASCII代码函数,Mid(x,n1,n2)从x字符串左边第n1个位置开始向右起取n2个字符。注意:循环变量k在循环体参与了运算,实际步长为3。变量m的赋值过程为1、3、8。2运行下面的程序,当单击窗体时,文本框Text1中的内容是(2),文本框Text2中的内容是(3)。Private Sub Form_Click()Dim St0 As StringDim St1 As String, St2 As StringSt0 = ASFRSDCFRSKXCall Change_String(St0, St1, St2)Text1.Text = St1Text2.Text = St2End SubPrivate Sub Change_String(S As String, St1 As String, St2 As String)Dim tem As String, i As IntegerFor i = 1 To Len(S)112,实际上只循环了4次,读到“R”就退出了 tem = Mid(S, i, 1)读取一个字符, A、S、F、R、S、If tem = S ThenSt2 = St2 & atElseIf tem = R ThenSt1 = St1 & TExit ForElseSt1 = St1 & temSt2 = St2 & temEnd IfNext iEnd Sub答案:iStemSt1St21ASFRSDCFRSKXAAA2SA & atAat3FA & FAFAat & FAatF4RAF & TAFT(2)AFT(3)AatF分析:Mid(x,n1,n2)从x字符串左边第n1个位置开始向右起取n2个字符。过程Change_String的功能是,将字符串St中的“S”置换为“at”,“R”置换为“T”,并退出For循环。3执行下面程序,单击命令按钮Command1,则在窗体上显示的第一行是(4),第二行是(5),第三行是(6)。Private Sub Command1_Click()Dim s_data As Integer, d_data As String, k As Integer, p As Strings_data = 29Do Until s_data = 0 And st = 9 Then p = p & st Else If p Then List1.AddItem p p = End If Next i If p Then List1.AddItem p ReDim num(List1.ListCount) For i = 1 To UBound(num) p = List1.List(i - 1) num(i) = Val(Left(p, Len(p) - 1) n = Val(Right(p, 1) List2.AddItem change(num(i), n) Next iEnd SubPrivate Function change(x As Integer, y As Integer) As Integer Dim p As Integer, k As Integer Do p = x Mod 10 change = change + p * y k x = x 10 k = k + 1 Loop Until x 0j = j + 1j记录有几组4位的十进制n=num Mod 10用n取num的个位数s=cover(n) & s用cover函数求n的二进制数,用s连接起来_ _去掉num的个位数num=num 10LoopFor i=1 To 4-j如果j小于4就在前面加0000s=0000& sNext iText1.Text=十进制数 & CStr(M) & 的转换结果是: & sEnd SubPrivate Function cover(ByVal n As Integer)As StringDim i As Integer, s As String, k As IntegerDo Until n1_ _取n除2的余数,这是十进制转变成二进制的方法k=n Mod 2s= CStr(k) & s用s将二进制数连接起来n=n 2LoopIf Len(s)4 Then如果二进制数不够4位,在左边加0000s=0000 & Scover=_ _只取右边的4位,截去多余的0。right(s,4)Elsecover=sEnd IfEnd Function7下面程序的功能是将以“12;3;15”形式输入的字符串分解为数字12、3、15,分别赋给3个数组元素,并对其进行简单运算(图2为本程序执行画面)。图2Private Sub Command1_Click()Dim a(3)As Integer, i As Integer, n As IntegerDim s As Strings = Text1.TextFor i = 1 To 2n = (16) n记录“;”的位置InStr(s, ;)或Mid(s, n + 1, Len(s)-n)a(i)= Left(s, n - 1)将“;”左边的字符记录给a(1)和a(2)s = (17) 将“;”右边的字符记录给s。Mid(s, n + 1, Len(s)-n)Next i(18) 将最右边的字符(数)赋值给a(3)。A(3)= Val( s )Text2.Text = a(1)* a(2)+ a(3)End Sub答案:(16)InStr(s, ;)(17)Mid(s, n + 1, n + 1)或Mid(s, n + 1, Len(s)-n)(18) A(3)= Val( s )分析:Mid(x,n1,n2)从x字符串左边第n1个位置开始向右起取n2个字符,Left(x,n)从x字符串左边起取n个字符。本题的难点是如何利用字符串函数从字符串中分离出数字的字符串。8本程序是找零巧数。所谓零巧数是具有下述特性的四位正整数:其百位数为0,如果去掉0,得到一个三位正整数,而该正整数乘以9,等于原数。例如20252259,所以2025是零巧数(如图3所示)。图3Private Function Change(s As String)As StringDim p As String, i As IntegerFor i = 1 To Len(s)If i 2 Thenp = (19) 用Mid函数逐个读取s中的字符,i=2除外。p & Mid(s, i, 1)End IfNext iChange = pEnd FunctionPrivate Sub Command1_Click()Dim i As Integer, s As StringFor i = 1000 To 9999(20) 将i转变成字符串s,s = CStr(i)If Mid(s, 2, 1)= 0 Then判别s的百位是否为“0”。If Val(Change(s)* 9 = i Then将去掉百位数为“0”的数乘9是否等于i(21)按图例中的格式添加到列表框中List1.AddItem CStr(i)+ = +Change(s)+ *9End IfEnd IfNext iEnd Sub答案:(19)p + Mid(s, i, 1)(20)s = CStr(i)(21)List1.AddItem CStr(i)+ = +Change(s)+ *9分析:Mid(x,n1,n2)从x字符串左边第n1个位置开始向右起取n2个字符,CStr(n)将一数值n转换成第一位非空字符的字符串型。过程Change的功能是将字符串s左边第二个“0”字符剔除掉,重新组成新字符串p返回。选择(21)要根据图3的内容来确定。8下面的程序可从一个由字母与数字相混的字符串中选出数字串,并把数字串构成的数写入一个名为List1的列表框中(图1是程序执行的画面)。图1 运行界面Option ExplicitPrivate Sub Cmd1_Click()Dim s As String, k As Integer, c()As StringDim p As String, i As Integers = Text1.Text(19) k记录数据段的个数k = 1For i = 1 To Len(s)If Mid(s, i, 1)= 0 And Mid(s, i, 1)= 0 And Mid(s, i + 1, 1)= 9 And i 1 Then 下一个字符是否为字母If p Then如果p不为空的话,即其中还有内容(21) 增加一个数组ReDim Preserve c(k),下列句子有提示c(k)= p数值记录到数组k = k + 1(22) 清空p的内容p = End IfEnd IfNext iReDim Preserve c(k)c(k)= pFor i = 1 To k(23) 将数组的内容逐个添加到列表框内List1.AddItem c(i)Next iEnd Sub答案:(19)k = 1(20)p & Mid(s, i, 1)(21)ReDim Preserve c(k)(22)p = (23)List1.AddItem c(i)分析:由于在Dim s()时没有定义数组的大小,所以在过程中一定要用ReDim重新定义数组。变量k为数组的大小数,变量p为单个数字的字符串,数组c被赋予各数字的字符串。AddItem的功能是向列表框添入一项数据。8.以下是一个加密程序,其中r1与r2是两个密钥表,分别对应字母az及空格。加密方法是从原文的字符串中取一个字符,再根据该字符在原文中的排位次序是奇数还是偶数,分别从r1或r2密钥表中查出相应的替代字符。如原文为“meet me at sunset”,其首字符为m,排位为1,则使用密钥表r1,由于在字母表中m为第13个字符,而r1中对应字符为t,故将m替换成t。其余类推。原文中如包含大写字母,则应先全部转换为小写字母。Const r1 As String * 27 = qzawsxedcrfvtgbyhnujm ikolp Const r2 As String * 27 = poi uytrewqasdfghjklmnbvcxzPrivate Sub Command1_Click()Dim I As Integer, code As String, s As String * 1Dim n As Integer, decode As Stringcode =【23】 读取Text1中的内容Text1.textFor i = 1 To Len( code )s = Mid( code , i , 1 )读取一个字符赋值给sIf s then字符是否为空格,不是空格【24】n记录字符在字母表的序号,例如“b”为2。n=Asc(s)- 96If i Mod 20 then判断奇偶数Decode = decode & Mid( r1,n,1 )Else【25】参照上一句decode = decode &Mid(r2,n,1)End IfElse是空格If i Mod 20 then奇数【26】参照下一句,第27个字符为空格Else偶数Decode = decode & Mid( r2, 27, 1 )第27个字符为空格End IfEnd IfNext iText2 = decodeEnd Sub答案:【23】Text1.text答案:【24】n=Asc(s)- 96答案:【25】decode = decode &Mid(r2,n,1)答案:【26】decode = decode & Mid(r1,27,1)7.本程序是一个采用矩阵变换对西文进行加密的程序。取大于或等于原文长度的最小平方数n2,构造一个nn的矩阵,将原文中的字符逐个按行写入该矩阵,多余的矩阵元素则写入空格字符,再按列读出此矩阵,即为密文。程序界面参见图1。(2004.9)图1Option ExplicitPrivate Sub Command1_Click()Dim msg As Stringmsg = Text1Text2 = encode(msg)返回字符串,显示在Text2中End SubPrivate Function sr(n As Integer) As IntegerDim k As Integerk = nk为矩阵大小kn为字符串长度DoIf (18) Thenk是否能整数开方 sqr(k)=Int(sqr(k) sr = Sqr(k): Exit DoElse(19)k加1 kk+1End IfLoopEnd FunctionPrivate Function encode(ore As String) As StringDim n1 As Integer, n2 As Integer, m() As String * 1Dim i As Integer, j As Integer, k As Integern1 = Len(ore)n2 = sr(n1)n2为矩阵的大小k = 1(20)重新定义数组的大小ReDim m(n2,n2)For i = 1 To n2For j = 1 To n2If k 1 And Len(p) Len(sta) Thensta = _ sta是上一次的最长的字符串。pEnd If_下一组的开头一个字符。p = Mid(st, i + 1, 1)End IfNext iIf Len(p) 1 And Len(p) Len(sta)Then_p为最长的字符串max_st pElsemax_st = sta否则上一组字符串为最长End IfEnd Function答案:p & Mid(st, i + 1, 1) pp = Mid(st, i + 1, 1)max_st = p8下面程序的功能是找出由两个不同的数字组成的回文平方数。程序界面参见图 2 。图2Option ExplicitPrivate Sub Command1_Click()Dim a(0 To 9) As Integer, i As Long, flg As BooleanDim L As Long, j As Integer, sum As IntegerFor i = 10 To 1000L = I * I_清除数组a的内容,Erase aCall _调用函数sun1,参照形参的内容,L,a,flg。 sub1(L), a, flg)If flg Thenflg是实参返回的值For j = 0 To 9sum = sum + a(j)统计数组中有几个1Next jIf sum = 2 Then如果有2个1,就满足条件,否则不满足条件List1.AddItem CStr(i) & 2= & S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论