※数字和字符处理题型分析(2)执行下面的程序,单击窗体后在窗体上显示的第一行结果是[1],第三行结果是__[2]__。PrivateSubCommand1_Click()DimMystr,MyStr1,Mystr2AsStringMyStr1=BFori=1To3Mystr2=LCase(MyStr1)MyStr1=MyStr1&Mystr2Mystr=Mystr&MyStr1PrintMystrMyStr1=Chr(Asc(MyStr1)+i)NextiEndSubiMyStr1MyStr2MyStr打印B1BbbBbBbC2CccEBbCcBbCc3EeeBbCcEeBbCcEe答案:(1)Bb(2)BbCcEe分析:Asc()函数只取第一个字符的数值。7.下面是一个加密/解密程序,加密的算法是:将原文中每个字符的ASCII代码加上该字符在原文中的位置数(设字符在原文中是第n个字符,在其位置是n被10除的余数,当余数为0时,其位置数为10。例如原文字符串为“meetmeatsunset”,第一个字符“m”,其位置数为1,而“s”为第12个字符,其位置数是被10除的余数2,其余依次类推)作为密文字符的代码,再将密码字符逆序排列(例如ABCD,逆序排列为DCBA)即为密文。解密算法是加密算法的逆运算。OptionExplicitPrivateSubCommand1_Click()'加密DimencAsString,decAsString,iAsIntegerDimsAsString*1,nAsIntegerdec=Text1Fori=1ToLen(dec)s=Mid(dec,i,1)(19)Ifn=0Thenn=10enc=Chr(Asc(s)+n)&encNextiText2=encEndSubPrivateSubCommand2_Click()'解密DimencAsString,decAsString,iAsIntegerDimnAsInteger,sAsString*1,pAsIntegerenc=Text2(20)Fori=1Tons=Mid(enc,i,1)p=nMod10Ifp=0Thenp=10dec=(21)n=n-1NextiText1=decEndSub答案:n=iMod10n=Len(enc)Chr(Asc(s)-p)&dec(4)运行下面的程序,单击窗体后在窗体上显示的第一行结果是[1],第三行结果是[2]。PrivateSubForm_Click()DimmstAsString,mst1AsString,mst2AsStringDimiAsIntegermst1=CeBbAaFori=Len(mst1)To1Step-2mst2=Mid(mst1,i-1,2)mst=mst&mst2PrintmstNextiEndSubmst1mst2msti打印CeBbAaAaAa6AaBbAaBb4AaBbCcAaBbc2AaBbc答案:(8)Aa(9)AaBbCe分析:Mid()函数的操作方式是从后向前取字符。(2)执行下面程序,第二行输出结果是[1],第三行输出结果是[2]。PrivateSubForm_Click()DimchAsString,iAsIntegerch=ABCFori=1To3ch=Mid(ch,2*i-1,1)+Left(ch,Len(ch))PrintchNextiEndSubchi打印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___。PrivateSubForm_Click()DimStr1AsString,Str2AsStringDimStr3AsString,IAsIntegerStr1=eForI=1To2Str2=UCase(Str1)Str1=Str2&Str1Str3=Str3&Str1Str1=Chr(Asc(Str1)+I)NextIPrintStr3EndSubIStr1Str2Str3打印1eEEeEe2FFEeFFFFHEeFF(A)EeFF(B)eEFF(C)EEFF(D)eeFF答案:A分析:35.在窗体Form1上,有一个列表框控件List1,在窗体的Click事件中有如下代码:PrivateSubForm_Click()DimkAsIntegerDimentryAsString,itemAsStringentry=EDCBAFork=Len(entry)To1Step-1item=LCase(Mid(entry,k,1))&kList1.AddItemitemNextkEndSub运行此程序,单击窗体后在窗体的列表框中显示的第四个列表项内容是___35___。(A)b4(B)b2(C)d4(D)d2答案:D分析:Kentryitem添加5EDCBAa5a54b4b43c3c32d2d21e1e11.执行下面的程序,在窗体上显示的输出结果的第一行是___thisisabook.___,第二行结果是___ThisIsABook.___。OptionExplicitPrivateSubForm_Click()DimsAsString,iAsInteger,flagAsBooleans=THISISABOOK.s=LCase(s)Printsflag=TrueFori=1ToLen(s)IfMid(s,i,1)=Thenflag=TrueElseIfflagThens=Left(s,i-1)&UCase(Mid(s,i,1))&Right(s,Len(s)-i)flag=FalseEndIfNextiPrintsEndSubsiflag打印THISISABOOK.1Truethisisabook.thisisabook.Thisisabook.False5TrueThisIsabook.6False8TrueThisIsAbook.9False10TrueThisIsABook.11FalseThisIsABook.分析:用flag来控制进程的走向,4.执行下面的程序,图片框第一行内容是CBA,图片框第二行内容是ABC。OptionExplicitPrivateSubCommand1_Click()DimSAsStringS=ABCBackSPicture1.PrintPicture1.PrintSEndSubPrivateSubBack(StAsString)IfLen(St)1ThenBack(Right(St,Len(St)-1))EndIfPicture1.PrintLeft(St,1);EndSubSt层次打印ABC一BC二C三CBC二CBABC一CBA0ABC分析:这是递归过程。3.执行下面的程序,单击窗体上的按钮,则在窗体上显示的第一行是(4),第二行是(5),第三行是(6)。PrivateSubCommand1_Click()DimsAsString,tAsStringDimkAsInteger,mAsIntegers=BASICYk=1:m=kFork=1ToLen(s)Stepm+1t=t&Chr(Asc(Mid(s,m,1))+k)k=k+1IfMid(s,k,1)=YThenExitForm=m+kPrinttNextkPrintmEndSubstkm打印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)。PrivateSubForm_Click()DimSt0AsStringDimSt1AsString,St2AsStringSt0=ASFRSDCFRSKXCallChange_String(St0,St1,St2)Text1.Text=St1Text2.Text=St2EndSubPrivateSubChange_String(SAsString,St1AsString,St2AsString)DimtemAsString,iAsIntegerFori=1ToLen(S)‘1~12,实际上只循环了4次,读到“R”就退出了tem=Mid(S,i,1)‘读取一个字符,A、S、F、R、S、……Iftem=SThenSt2=St2&atElseIftem=RThenSt1=St1&TExitForElseSt1=St1&temSt2=St2&temEndIfNextiEndSub答案: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)。PrivateSubCommand1_Click()Dims_dataAsInteger,d_dataAsString,kAsInteger,pAsStrings_data=29DoUntils_data=5p=s_dataMod5d_data=d_data&ps_data=s_data\5Loopd_data=d_data&s_dataPrints_dataPrintd_datap=Fork=Len(d_data)To1Step-1‘将d_data的内容颠倒过来p=p&Mid(d_data,k,1)NextkPrintpEndSub答案:s_datapd_datak打印29445455524554154(4)5(5)45(6)54分析:本题的难点是字符串和数值之间按VB的默认的方式进行运算和赋值时的类型转换问题。如果字符串表示数值,则可将字符串赋予数值变量。也可将数值赋予字符串变量。VisualBasic会自动强制变量为适当的数据类型。在转换字符串和数值时要小心;如果传送字符串中的值不是数值,则在运行时会出错。Mod运算符用来对两个数作除法并且只返回余数。2.执行下面的Command1_Click事件过程后,Text1中显示的内容是,Text2中显示的内容是。PrivateSubCommand1_Click()DimSAsString,IAsIntegerConstChAsString=0123456789.S=2L0A03U.1SI0V.11ForI=1ToLen(S)IfInStr(Ch,Mid(S,I,1))=0Then‘视单个字符是否为数值型的Text1=Mid(S,I,1)&Text1ElseText2=Text2&Mid(S,I,1)EndIfNextIEndSubSIChText1Text22L0A03U.1SI0V.1110123456789.22L3204AL5200620037UAL82003.92003.110SUAL11ISUAL122003.1013VISUAL142003.10.152003.10.1116VISUAL答案:2003.10.1IVISUAL1.执行Command1_Click实践过程后,显示在窗体上的第