数字和字符处理题型分析Word下载.docx
《数字和字符处理题型分析Word下载.docx》由会员分享,可在线阅读,更多相关《数字和字符处理题型分析Word下载.docx(30页珍藏版)》请在冰豆网上搜索。
![数字和字符处理题型分析Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/26/c57cd725-bd56-4d31-a1c6-d818606e596e/c57cd725-bd56-4d31-a1c6-d818606e596e1.gif)
DimsAsString*1,nAsInteger
dec=Text1
Fori=1ToLen(dec)
s=Mid(dec,i,1)
(19)
Ifn=0Thenn=10
enc=Chr(Asc(s)+n)&
enc
Nexti
Text2=enc
PrivateSubCommand2_Click()'
解密
DimnAsInteger,sAsString*1,pAsInteger
enc=Text2
(20)
Fori=1Ton
s=Mid(enc,i,1)
p=nMod10
Ifp=0Thenp=10
dec=(21)
n=n-1
Text1=dec
n=iMod10n=Len(enc)Chr(Asc(s)-p)&
dec
(4)运行下面的程序,单击窗体后在窗体上显示的第一行结果是 [1] ,第三行结果是 [2] 。
PrivateSubForm_Click()
DimmstAsString,mst1AsString,mst2AsString
DimiAsInteger
mst1="
CeBbAa"
Fori=Len(mst1)To1Step-2
mst2=Mid(mst1,i-1,2)
mst=mst&
mst2
Printmst
mst1
mst2
mst
CeBbAa
Aa
6
AaBb
4
AaBbc
(8)Aa
(9)AaBbCe
Mid()函数的操作方式是从后向前取字符。
(2)执行下面程序,第二行输出结果是 [1] ,第三行输出结果是 [2] 。
DimchAsString,iAsInteger
ch="
ABC"
ch=Mid(ch,2*i-1,1)+Left(ch,Len(ch))
Printch
ch
ABC
Mid("
1,1)+Left("
3)
"
A”+”ABC"
AABC
AABC"
3,1)+Left("
4)
+"
BAABC
BAABC"
5,1)+Left("
5)
C"
CBAABC
(1)BAABC
(2)CBAABC
35.执行下面的程序,单击窗体后在窗体上显示的结果是___35___。
DimStr1AsString,Str2AsString
DimStr3AsString,IAsInteger
Str1="
e"
ForI=1To2
Str2=UCase(Str1)
Str1=Str2&
Str1
Str3=Str3&
Str1=Chr(Asc(Str1)+I)
NextI
PrintStr3
I
Str1
Str2
Str3
F
EeFF
FF
H
(A)EeFF(B)eEFF(C)EEFF(D)eeFF
A
35.在窗体Form1上,有一个列表框控件List1,在窗体的Click事件中有如下代码:
DimkAsInteger
DimentryAsString,itemAsString
entry="
EDCBA"
Fork=Len(entry)To1Step-1
item=LCase(Mid(entry,k,1))&
k
List1.AddItemitem
Nextk
运行此程序,单击窗体后在窗体的列表框中显示的第四个列表项内容是___35___。
(A)b4(B)b2(C)d4(D)d2
D
K
entry
item
添加
5
EDCBA
a5
b4
c3
d2
e1
1.执行下面的程序,在窗体上显示的输出结果的第一行是___thisisabook.___,第二行结果是___ThisIsABook.___。
DimsAsString,iAsInteger,flagAsBoolean
s="
THISISABOOK."
s=LCase(s)
Prints
flag=True
Fori=1ToLen(s)
IfMid(s,i,1)="
"
Then
flag=True
ElseIfflagThen
s=Left(s,i-1)&
UCase(Mid(s,i,1))&
Right(s,Len(s)-i)
flag=False
EndIf
s
flag
THISISABOOK.
True
thisisabook.
Thisisabook.
False
ThisIsabook.
8
ThisIsAbook.
9
10
ThisIsABook.
11
用flag来控制进程的走向,
4.执行下面的程序,图片框第一行内容是CBA,图片框第二行内容是ABC。
DimSAsString
S="
BackS
Picture1.Print
Picture1.PrintS
PrivateSubBack(StAsString)
IfLen(St)>
1Then
Back(Right(St,Len(St)-1))
EndIf
Picture1.PrintLeft(St,1);
St
层次
一
BC
二
三
CB
CBA
这是递归过程。
3.执行下面的程序,单击窗体上的按钮,则在窗体上显示的第一行是 (4) ,第二行是 (5) ,第三行是 (6) 。
DimsAsString,tAsString
DimkAsInteger,mAsInteger
s="
BASICY"
k=1:
m=k
Fork=1ToLen(s)Stepm+1
t=t&
Chr(Asc(Mid(s,m,1))+k)
k=k+1
IfMid(s,k,1)="
Y"
ThenExitFor
m=m+k
Printt
Nextk
Printm
t
k
m
BASICY
1+2=3
CW
3+5=8
7
(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) 。
DimSt0AsString
DimSt1AsString,St2AsString
St0="
ASFRSDCFRSKX"
CallChange_String(St0,St1,St2)
Text1.Text=St1
Text2.Text=St2
PrivateSubChange_String(SAsString,St1AsString,St2AsString)
DimtemAsString,iAsInteger
Fori=1ToLen(S)‘1~12,实际上只循环了4次,读到“R”就退出了
tem=Mid(S,i,1)‘读取一个字符,A、S、F、R、S、……
Iftem="
S"
St2=St2&
at"
ElseIftem="
R"
St1=St1&
T"
ExitFor
Else
tem
Nexti
S
tem
St1
St2
ASFRSDCFRSKX
&
Aat
F"
AF
Aat"
AatF
R
AF"
AFT
(2)AFT
(3)AatF
Mid(x,n1,n2)从x字符串左边第n1个位置开始向右起取n2个字符。
过程Change_String的功能是,将字符串St中的“S”置换为“at”,“R”置换为“T”,并退出For循环。
3.执行下面程序,单击命令按钮Command1,则在窗体上显示的第一行是 (4) ,第二行是 (5) ,第三行是 (6) 。
Dims_dataAsInteger,d_dataAsString,kAsInteger,pAsString
s_data=29
DoUntils_data<
=5
p=s_dataMod5
d_data=d_data&
p
s_data=s_data\5
Loop
d_data=d_data&
s_data
Prints_data
Printd_data
p="
Fork=Len(d_data)To1Step-1‘将d_data的内容颠倒过来
p=p&
Mid(d_data,k,1)
Printp
s_data
p
d_data
29
45
54
(4)5
(5)45
(6)54
本题的难点是字符串和数值之间按VB的默认的方式进行运算和赋值时的类型转换问题。
如果字符串表示数值,则可将字符串赋予数值变量。
也可将数值赋予字符串变量。
VisualBasic会自动强制变量为适当的数据类型。
在转换字符串和数值时要小心;
如果传送字符串中的值不是数值,则在运行时会出错。
Mod运算符用来对两个数作除法并且只返回余数。
2.执行下面的Command1_Click事件过程后,Text1中显示的内容是 ,Text2中显示的内容是 。
DimSAsString,IAsInteger
ConstChAsString="
0123456789."
2L0A03U.1SI0V.11"
ForI=1ToLen(S)
IfInStr(Ch,Mid(S,I,1))=0Then‘视单个字符是否为数值型的
Text1=Mid(S,I,1)&
Text1
Else
Text2=Text2&
Mid(S,I,1)
NextI
Ch
Text1
Text2
2L0A03U.1SI0V.11
0123456789.
L
20
AL
200
2003
UAL
2003.
2003.1
SUAL
ISUAL
12
2003.10
13
VISUAL
14
2003.10.
15
2003.10.11
16
2003.10.1 IVISUAL
1.执行Command1_Click实践过程后,显示在窗体上的第一行内容是 【1】 ,第二行内容是 【2】 ,第三行内容是 【3】 。
S="
TUPMOC"
:
K=Len(S)
ForI=1ToK/2
Mid(S,I,K-2*(I-1))=Mid(S,I+1,K-2*I)&
‘将右边的内容替换左边的内容
PrintS
NextI
【1】UPMOTC
【2】UMOPTC
【3】UMOPTC
Mid(S,I+1,K-2*I)
Mid(S,I,1)
Mid(S,I,K-2*(I-1))
TUPMOC
Mid(S,2,4)
“UPMO”
“T”
Mid(S,1,6)
“UPMOTC”
UPMOTC
Mid(S,3,2)
“MO”
“P”
Mid(S,2,4)
“UMOPTC”
UMOPTC
Mid(S,4,0)
“”
“O”
Mid(S,3,2)
当Mid函数放置在等号的左边的话,是将右边的内容替换坐标的内容。
~~
7.下面程序是把给定的16进制正整数转换为10进制数。
提示:
一个16进制正整数转换为10进制数的方法是直接用下面的幂级数展开运算而得。
(anan-1…a1)16=an*16n-1+an-1*16n-2+…+a1*160
DimStAsString,DemAsLong
St=InputBox("
输入一个十六进制数"
)
Dem=Convert(St)
PrintSt;
="
;
Dem
PrivateFunctionConvert(SAsString)AsLong
DimNAsInteger,IAsInteger,SubstringAsString*1
DimPAsLong,KAsLong,Asc1AsInteger
N=______‘N的作用是字符串的长度(即数值的位数)Len(s)
P=16^N‘P的作用是十六进制数
ForI=1ToN
P=P/16
Substring=______‘Substring的作用是记录每个字符Mid(S,I,1)
SelectCaseSubstring
Case"
0"
To"
9"
K=K+P*Val(Substring)‘K的作用是记录十进制的数,Val(Substring)为0~9
Case______ ’A~F的计算范围"
或Else
Asc1=Asc(Substring)-Asc("
)+10‘Asc1记录A~F的代表的十进制数(10~15)
______‘参照上一句K=K+P*Val(Substring)K=K+P*Asc1
EndSelect
______‘将K值赋值给函数名返回主过程Convert=K
EndFunction
Len(s) Mid(S,I,1) "
或Else K=K+P*Asc1 Convert=K
N的作用是字符串的长度(即数值的位数),Substring的作用是记录每个字符,K的作用是记录十进制的数。
5.执行下面程序,在文本框Text1中输入数据as235gh456yj后单击Command1按钮,在列表框List1中显示的第一行是(12)、第二行是(13);
列表框List2中显示的第一行是(14)、第二行是(15)。
DimstAsString,sAsString,kAsInteger
DimpAsString,num()AsInteger,iAsInteger,nAsInteger
s=Text1
Fori=1ToLen(s)
st=Mid(s,i,1)
Ifst>
="
Andst<
p=p&
st
Else
Ifp<
>
ThenList1.AddItemp
p="
EndIf
ReDimnum(List1.ListCount)
Fori=1ToUBound(num)
p=List1.List(i-1)
num(i)=Val(Left(p,Len(p)-1))
n=Val(Right(p,1))
List2.AddItemchange(num(i),n)
PrivateFunctionchange(xAsInteger,yAsInteger)AsInteger
DimpAsInteger,kAsInteger
Do
p=xMod10
change=change+p*y^k
x=x\10
k=k+1
LoopUntilx<
=0
2354561329
st
List1
num
(1)
n
num
(2)
as235gh456yj
a
235
23