VB调试题解答07317Word文档下载推荐.docx
- 文档编号:19903221
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:51
- 大小:34.87KB
VB调试题解答07317Word文档下载推荐.docx
《VB调试题解答07317Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VB调试题解答07317Word文档下载推荐.docx(51页珍藏版)》请在冰豆网上搜索。
‘Form1.printHex&
“转换为十进制数为”&
EndSub
PublicFunctionnumber(strAsString)AsInteger
SelectCasestr
Case"
a"
"
A"
number=10
b"
B"
number=11
c"
C"
number=12
d"
D"
number=13
e"
E"
number=14
f"
F"
number=15
CaseElse
number=Val(str)
EndSelect
EndFunction
[题2]Modify.bas模块中的BubbleSort过程是冒泡排序法;
GenerateData过程产生个[1,20]之间互不相同的随机整数;
Swap过程交换两个变量的数值。
PrivateConstn=10
Privatea(1Ton)AsInteger
'
BubbleSort过程是冒泡排序
Swap过程交换两个变量数值
GenerateData过程产生10个[1,20]之间互不相同的随机整数
PublicSubBubbleSort()
DimiAsInteger,jAsInteger
i=1
Forj=i+1Ton
Ifa(j)>
a(i)Then
*******1*********
Swap(a(j),a(i))
‘.Swapa(j),a(i)
EndIf
Nextj
*******2*******
LoopWhilei=n
‘Loopwhilei<
n
Form1.Print"
排序结果"
Fori=1Ton
Form1.Printa(i);
Nexti
PublicSubGenerateData()
DimjAsInteger
DimbAsBoolean
b=False
DoWhileNotb
a(i)=Int(20*Rnd+1)
b=True
******3******
Forj=1Toi
‘forj=1toi-1
Ifa(i)=a(j)Then
ExitFor
Loop
Form1.Printa(i)
********4********
PublicSubSwap(ByValaAsInteger,ByValbAsInteger)
‘PublicSubSwap(aasinteger,basinteger)
DimtempAsInteger
temp=a
a=b
b=temp
[题3]Modify.bas模块中的wrap过程用于判断一个字符串是否“回文”。
所谓“回文”是指字符串顺读与倒读都是一样的,如“潮起潮落,落潮起潮”。
PublicSubWrap()
DimlengthAsInteger
Dimstr1AsString
DimstrleftAsString
DimstrrightAsString
DimkAsInteger
str1=InputBox("
请输入任意的字符串"
)'
输入任意字符串
****错误1*****
length=Val(str1)
‘length=len(str1)
k=1
****错误2*****
strleft=Left(str1,k)'
从左边起逐个取出一个字符
‘strleft=mid(str1,k,1)
****错误3*****
strright=Right(str1,k)'
从右边起逐个取出一个字符
‘strright=mid(str1,length-k+1,1)
****错误4****
Ifstrleft=strrightThen
‘Ifstrleft<
>
strrightThen
ExitDo
k=k+1
LoopWhilek<
=length/2
Ifk>
length/2Then
Form1.Printstr1&
是回文"
Else
不是回文"
[题4]Modify.bas模块中的MaxLine过程用于查找一个5行4列的二维数组中行平均值最大的行,并将该行所有数据调整到第一行的位置。
Modify.bas模块中的DataProduce过程用于产生原始数据;
Average过程用于计算各行的平均值;
PrintArraay过程用于打印二维数组和行平均值。
Dima(1To5,1To4)AsInteger
Dimave(1To5)AsInteger
PublicSubMaxLine()
DimLine_noAsInteger'
最大平均值的行号
找出最大平均值所在行
Line_no=1
Fori=2To5
Ifave(Line_no)>
=ave(i)Then
‘Ifave(Line_no)<
ave(i)then
Line_no=ave(i)
‘Line_no=i
交换第一行与最大平均值所在行
Forj=1To4
temp=a(1,j)
******错误3******
a(Line_no,j)=a(1,j)
‘a(1,j)=a(Line_no,j)
a(Line_no,j)=temp
交换对应行的平均值
temp=ave
(1)
ave
(1)=ave(Line_no)
ave(Line_no)=temp
打印交换后的数据
交换后的数据和平均值"
PrintArray
PublicSubDataProduce()
产生5*4数组
Fori=1To5
a(i,j)=Int(100*Rnd)
PublicSubAverage()
DimsumAsInteger
计算各行平均值
sum=0
sum=a(i,j)
‘sum=sum+a(i,j)
ave(i)=sum/4
将数组和平均值打印出来
原始数据和平均值"
PublicSubPrintArray()
Form1.Printa(i,j);
Spc(3);
平均值="
;
ave(i)
[题5]Modify.bas模块中的TJ过程是将一批数据中小于零的数及它们的积打印出来,但不完整,请在横线上填入必要的内容,使其完整。
Modify.bas模块中的SCSJ过程是产生数据,数据的取值范围为-10~10之间的随机数。
TJ过程是将一批数据中小于零的数及它们的积打印出来
数据由SCSJ过程产生,数据的取值范围为-10~10之间的随机整数数
PublicSubTJ()
DimtAsSingle
--------1--------t=1
Fori=1To10
If--------2--------a(i)<
0Then
t=t*a(i)
T="
t
PublicSubSCSJ()
Randomize
原始数据"
随机产生0或1,为0时取负,为1时取正
j=Int(Rnd*2)
If------3-----j=0ThenJ=-1
a(i)=j*Int(Rnd*(n+1))
Form1.Print
[题6]Modify.bas模块中的calculate过程是产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来.
Publicsubcalculate()
Dima(1to100)asinteger
Dimx(1to10)asinteger
DimIasinteger,pasinteger
‘产生100个[0,99]范围内的随机整数
‘每行10个打印出来
forI=1to100
‘**********1**********
a(i)=rnd*100
‘a(i)=int(Rnd*100)
ifa(i)<
10then
form1.printspace
(2);
a(i)
else
form1.printspace
(1);
a(i);
endif
ifImod10=0thenform1.print
nextI
‘统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数
‘并将统计结果保存在数组x
(1),x
(2),……,x(10)中,将统计结果打印出来
‘**********2**********
p=int(a(i)/10)‘求个位上的数字
p=a(i)mod10
ifp=0thenp=10
‘**********3**********
x(p)=x(p)-1
x(p)=x(p)+1
form1.print“统计结果”
forI=1to10
p=I
ifI=10thenp=0
‘**********4**********
form1.print“个位数为”+str(p)+”共
“+str(x(p))+”个”
Form1.print“个位数为”+str(p)+”共”+str(x(i))
endsub
[题7]Modify.bas模块中的PrintArray过程是用于打印一个5行5列的数字方阵,并使两对角线上元素均为1,其余均为2。
要求打印的数字方阵两列数字之间空3格,两行之间空一行。
下面程序用于打印5行5列的数字方阵
使两对角线上元素均为1,其余均为2
要求打印的数字方阵两列数字之间空3格,两行之间空一行
只要修改标出出错位置的下面那一条语句
Dima(5,5)AsInteger
Forj=1To5
********错误1*********
Ifi<
jOri<
6-jThen
Ifi<
jandi<
6-jthen
a(i,j)=2
a(i,j)=1
********错误2*********
Form1.Printa(i,j)+Space(3);
Form1.printa(I,j);
space(3);
*******错误3*******
form1.print:
form1.print
[题8]Modify.bas模块中的Guess过程是猜数游戏,由计算机产生一个[1,100]的任意整数,输入猜数后计算机给出提示,如果5次后还没有猜中就结束游戏并公布正确答案,请改正其中的错误。
说明:
只要修改标出出错位置的下面那条语句。
PublicSubGuess()
DimRAsInterger
DimXAsInteger
DimtimeAsInteger
----1----
R=Rnd*100'
产生一个1—100的任意整数
R=int(rnd*100)+1
Times=1
Do
X=Val(InputBox("
输入猜数X"
SelectCaseX
CaseR
猜中了"
----2----
CaseX>
R
CaseIs>
Form1.Print"
太大了,继续猜!
"
太小了,继续猜!
EndSelect
Times=times+1
----3----
LoopWhiletimes>
5
Loopuntiltimes>
Iftimes>
5Then
猜数失败,游戏结束!
----4----
正确答案为"
Str(x)
Form1.print“正确答案为”&
str(r)
[题9]Modify.bas模块中的Findat过程是用于在一个字符串变量中查找”at”,并用消息框给出查找结果的报告:
没有找到或找到的个数。
PublicSubFindat()
在字符串str1中查找"
at"
DimlengthAsInteger'
字符串长度
DimsumAsInteger'
查到的个数
请输入一个字符串"
length=----1----Len(str1)
DoWhilei<
=----2----length-1
If----3----mid(str1,I,2)="
Then
sum=sum+1
If----4----sum=0Then
MsgBox"
没有找到!
找到了"
Str(sum)&
个"
[题10]本程序从键盘上输入一个任意的字符串,将该字符串的所有组成字符拆分开,再按照字符ASCII码从小到大的顺序将这些字符重新组成新的字符串。
例如输入a4fkze5,重新组合的字符串为45aefkz。
请在横线上填入出境必要的内容。
OptionExplicit
PublicSubsortchar()
DimxAsString'
原始字符串
DimyAsString'
重新组合的字符串
Dimc()AsString'
拆分出的字符
DimlasInteger'
DimIasInteger,jAsInteger
DimtempAsString
X=InputBox("
输入一个字符串"
L=------1------len(x)
ReDimc
(1)AsString
字符串拆分
ForI=1tol
C(i)=------2------mid(x,i,1)
NextI
字符排序
ForI=1tol-1
Forj=------3------i+1tol
Ifc(i)>
c(j)Then
Temp=c(i)
C(i)=c(j)
C(j)=temp
排序后的字符组成新字符串
y="
------4------y=y&
c(i)
原始字符串"
;
x
重新组合的字符串"
y
EndSub
[题11]sum过程用于计算f=1-1/(2*3)+1/(3*4)-1/(4*5)+……+1/(19*20),请在横线上填入必要的内容。
OptionExplicit
PublicSubsum()
DimfAsSingle
DimsignAsInteger
------1------sign=-1
f=1
------2------forI=2to19
f=f+sign/(i*(i+1))
------3------sign=-sign
f="
f
[题12]有一个数列,它的前三个数是0,1,2,从第四个数起,每个数都是它前面的两个数之和(斐邦纳契数列),过程Fabonia用于求出该数列的第17个数是多少?
求出该数列的第几个数起每个数都超过1E+8?
请在横线上填入必要的内容。
PublicSubFabonia()
Dimlast_oneAsLong
Dimlast_twoAsLong
Dimthis_oneAsLong
last_one=1'
数列的第二个数
last_two=2'
数列的第三个数
i=4'
从数列的第四个数求起
this_one=last_one+last_two
------1------last_one=last_two
------2------last_two=this_one
Ifi=17Then
No:
17="
this_one
------3------i=i+1
LoopWhilethis_one<
=100000000#
------4------i-1;
is>
1E+8
[题13]以下程序完成下列功能:
随机产生9个[1-100]的整数数组,并按从小到大的顺序进行排序,从键盘输入一个正数,找到该数在原来9个数中的插入点,使得该数插入数组后,数组的10个数依然是从小到大的顺序。
PublicSubInsert()
Dimx(10)AsInteger
DiminsAsInteger,posAsInteger
随机产生9个1--100的整数并排序
Fori=1To9
------1------x(i)=int(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 调试 题解 07317