VB程序填空复习题Word文件下载.docx
《VB程序填空复习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《VB程序填空复习题Word文件下载.docx(29页珍藏版)》请在冰点文库上搜索。
![VB程序填空复习题Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/f9bb24fa-7585-4803-813b-14620cba6b81/f9bb24fa-7585-4803-813b-14620cba6b811.gif)
Ifmjy=val(left(mno,1))Then
Tag=1
Else
Tag=0
EndIf
Command1_Click事件用于调用foe子过程,对输入到文本框Text1的准考证号进行校验,如果校验正确,显示“正确”,否则显示“错误”,同时显示正确的校验码。
DimnnAsInteger,mtagAsInteger
IfLen(Text1)<
>
9OrNotIsNumeric(Text1)Then
MsgBox"
非法数据,请重新输入!
"
Text1="
Text1.SetFocus
ExitSub
Callfoe(Text1,nn,mtag)
IfmtagThen
Print"
正确"
Print“错误”;
nn
3.下面的程序按从小到大的顺序随机产生不超过20个介于100到400(包括100、400)的数,每次产生的一个数总大于它前面已产生的数,然后求产生的数的平均值。
数组b(20)用于存放所产生的随机数,运行结果如图所示。
Dimb(20),iAsInteger,jAsInteger,sumAsSingle
j=1
Do
re:
b(j)=Int(Rnd*301+100)
Ifb(j)=400Orj=20Then
ExitDo
ElseIfb(j)<
=b(j-1)Then
GoTore
j=j+1
sum=0
Fori=1Toj
Printb(i);
Sum=sum+b(i)
Nexti
aver="
;
sum/j
4.新的身份证号由18位组成,最低位(右边)为校验位,其算法是:
10-(前17位之和关于10的模)。
函数foe用于对18位的身份证进行校验。
参数mstr存放身份证号,md为产生的校验位,若校验正确,函数返回“True”,否则返回“False”。
PublicFunctionfoe(ByValmstr$,md%)AsBoolean
DimmpAsString,msumAsInteger
Fori=1To17
mp=Mid(mstr,i,1)
msum=msum+Val(mp)
md=10–msummod10
Ifmd=val(right(mstr,1))Then
foe=True
foe=False
EndFunction
Command1_Click事件用于调用foe子过程,对输入到文本框Text1的身份证号进行校验,如果校验正确,显示“True”,否则显示“False”和的校验码值。
DimmmAsInteger
18OrNotIsNumeric(Text1)Then
Iffoe(Text1,mm)=TrueThen
True"
Print“False”;
mm
5.EndSub本程序随机产生N(15)个A到J的大写字母,按字母降序排序后,将连续出现的字用压缩形式显示。
例如,连续5个H字母显示为5*H,参见图例。
数组a()用于存放随机产生的字母。
ConstN=15
Dima(1ToN)AsString*1,c
Dimcount%,i%,j%,k%
Fori=1ToN
a(i)=Chr(Int(Rnd*10+65))
Printa(i);
Print
Fori=1ToN-1
k=i
Forj=i+1ToN
Ifa(j)>
a(k)Thenk=j
c=a(i):
a(i)=a(k):
a(k)=c
"
i=1
DoWhilei<
=N
count=1
Ifi<
NThenj=i+1
DoWhilea(i)=a(j)
count=count+1
Ifj<
NThenj=j+1ElseExitDo
Ifcount=1ThenPrinta(i);
ElsePrintcount;
*"
a(i);
i=i+count
6.本程序的功能是在窗体随机产生10个长度为1~20之间的大写字母字符串,并同时显示最长字符串的字符数及内容,如图所示。
Cls
Dimst(1To10)AsString,cAsString*1
Dimi%,n%
Fori=1To10
____
Forj=1Ton
c=Chr(Int(Rnd*26+65))
st(i)=______
Printst(i)
maxlen=0
maxstr="
If_____Then
maxlen=Len(st(i))
maxstr=______
____
7.两素数的差为2,称此对素数为素数对,下列程序是成对显示100以内的素数对。
其中,函数isP的功能是判断参数m是否为素数,若是返回True,否则返回False。
PublicFunctionisP(m)AsBoolean
Dimi%
Fori=2ToInt(Sqr(m))
IfThenIsP=False
p1=IsP(3)'
第一个可能的素数
Fori=
p2=IsP(i)
IfThenPrinti2,i'
相邻的两个是素数,则打印
p1='
处理下一个素数
8.本程序的功能是求100以内的素数,结果分三列输出,如样例所示。
算法思想:
从2开始,对每一个数判断是否是素数,若是就输出,否则就继续,直至到100。
DimnAsInteger,mAsInteger,iAsInteger
Me.Cls
Forn=2To100
Form=2Ton–1
If=0Then
Nextm
IfThen
Printn,
i=i+1
IfiMod3=0Then
Nextn
9.子过程isH的功能是判断正整数n是否是回文数,若为回文数,则参数Tag返回True。
单击命令按钮,输出随机产生的10个[10,100]之间的回文数(数字左右对称的正整数称为回文数)。
Dimnn%,tAsBoolean,i%
nn=Int(Rnd*991+10)
Call
IftThenPrintnn;
是回文数"
SubisH(ByValnAsInteger,)
Dimlength%,i%,s1$
s1=Trim(Str(n))
tag=
length=
Fori=1Tolength\2
IfMid(s1,i,1)<
Thentag=False
10.本程序的功能是判断一个5位数的最后二位构成的数是否为素数。
在窗体的文本框Text1中输入一个5位数,判断该数的第4、5二位构成的数是否为素数,若是显示“是素数”否则为“非素数”。
例如,32517最后二17构成的数是素数。
DimtagAsBoolean
m=
m=Val(m)
Fori=2To
If=0Thentag=False
Printm;
是素数"
非素数"
11.随机产生100个在闭区间[30,80]之间的整数,存放于数组a中;
并将其中大于50的偶数再存于数组b中;
然后,对数组b用冒泡法从大到小排序后输出。
子过程Output的功能是按每行十个元素输出数组内容。
PrivateSubForm_Click()
Dima(1To100)AsInteger,b(100)AsInteger,mAsInteger,nAsInteger
Randomize
n=0
Fori=1To100
a(i)=Int(Rnd*51+30)
Ifa(i)Mod2=0Then
n=n+1
b(n)=
CallOutput(a(),100)
Fori=1To
Forj=1Ton-i
IfThen
t=b(j):
b(j)=b(j+1):
b(j+1)=t
PrivateSubOutput(x()AsInteger,tAsInteger)
数组输出:
Fori=1Tot
Printx(i);
IfiMod10=0ThenPrint
12.本程序的功能是用于判断输入的正整数是否为升序数。
使用输入对话框输入数据,判断结果显示在标签框Lable1中。
设正整数n=d1d2…dm,如果di<
=di+1(i=1,2,…,m-1),则n是一个升序数(即右边的数字大于等于左边的数字),如:
1269,448是升序数,而2485不是升序数。
DimnAsString,flagAsBoolean
n=(“请输入正整数”)
flag=
ForI=1ToLen(n)–1
IfMid(n,I,1)>
Then
flag=False
EndIf
Label1.Caption=n&
“是升序数”
“不是升序数”
13.下列程序将给定范围内的偶数(大于等于4),表示为两个素数之和。
图例所示为输入10和30后运行结果。
函数子过程fun()的功能是判断数值n是否是为素数,若是返回1,否则返回0。
Dima%,b%,i%,c%,d%
a=Val(Text1.Text):
b=Val(Text2.Text)
t=a:
a=b:
b=t
Fori=aTobStep2
c=c+2
d=i-c
LoopUntil=1
Picture1.Printi;
="
c;
+"
d
Functionfun(nAsInteger)
Dimx!
k%
Fork=2Ton-1
IfnModk=0Then
fun=0
Nextk
14.下面程序的功能是统计文本框中每个数字字符(“0”-“9”)出现的次数。
用num(0)来存放字符“0”的个数,用num
(1)来存放字符“1”的个数,…,用num(9)来存放字符“9”的个数。
字符串由用户在文本框中输入,结果在图形框中输出。
Dimnum(9)AsInteger
Dimi%,m%,j%,cAsString*1,s$
Fori=1Tom
c=Mid(Text1.Text,i,1)
j=Val(c)
Fori=0To9
Picture1.Print"
数字"
;
出现次数为"
num(i)
15.下列程序将求出10000之内的同构数。
并且在窗体标题栏上显示找到同构数的个数,如图所示。
所谓同构数是指,该整数会出现在其平方数的最右端。
例如:
6出现在36的最右端,76出现在5776的最右端。
子函数judge()的功能是判定同构数,若是judge返回True,否则返回False。
判定同构数算法思想:
将数n逐位与n的平方数相同位置上的值相比较。
DimiAsLong
m=0
Fori=1To10000
m=m+1
List1.AddItemStr(i)
List2.AddItemStr(i*i)
="
10000以内的同构数:
&
m&
个"
PrivateFunctionjudge(ByValnAsLong)AsBoolean
Dimn2AsLong
n2=n*n
judge=True
DoWhile
If(nMod10)=Then
n=n\10
n2=n2\10
16.下列程序中的子过程fenge用于实现函数split()的功能(字符分离到数组)。
通过在文本框中输入一个以逗号分隔的数字序列,按回车后调用过程fenge,将数字序列分离后,——转换为数值型数据存放于数组shuzhi()中,并在Picturebox中输出该数组的所有值(假设不存在输入错误,输入的数字元素个数在100个以内)。
PrivateSubText1_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
Callfenge()
PrivateSubfenge(str1)
DimiAsInteger,jAsInteger,shuzhi(100)AsSingle
i=0
j=InStr(str1,"
"
)‘检测第一个逗号的位置
DoWhilej>
0
shuzhi(i)=Val()‘分离数字序列
str1=Mid()
)
‘最后一个数字
Forj=0Toi
17.
下列程序完成如下功能:
在文本框中输入一个20以内的正整数N,单击“开始”按钮后,判断输入的有效性,如果文本框中输入数越界,给出如图所示的相关提示,并要求重新输入,否则随机产生一个大写英文字母,然后以此英文字母为首字母,连续循环变化,输出一个N*N的字符矩阵,并显示“首字母X的N阶字符矩阵”的说明,图示为首字母K的8阶字符矩阵。
Dimi%,k%,n%
n=Val(Text1)
Ifn<
1Orn>
20Then
Text1.SetFocus
s=Int(Rnd*26)+65‘随机产生一个大写字母的Ascii码
Label1="
首字母"
&
的"
n&
阶字符矩阵"
Print:
k=‘以下输出N*N的字符矩阵,K为字符控制变量
Fori=1Ton
PrintTab(5);
Forj=
PrintChr(65+k);
Space
(1);
If‘对字符控制变量进行处理
18.
将100至150之间的偶数,拆分成两个素数之和(只要一对就可以了),最后输出格式如图所示。
函数子过程prime用于判断一个数是否为素数。
PrivateFunctionprime(ByValxAsInteger)AsBoolean
DimiAsInteger
prime=
Fori=2ToSqr(x)
prime=False
ExitFunction
DimiAsInteger,kAsInteger,nAsInteger
Forn=
Fork=3Ton/2
Ifprime(k)AndThen
Printi;
:
n;
k;
n-k
ExitFor
Nextn
19.
在文本框中输入英语句子,每个单词后加一个空格,当按下回车键(回车的Ascii码为13)后结束输入,并将文本框中的内容分离成单词按字典排列方式显示在列表框List1中。
要求列表框中存放的单词不重复出现。
用一个变量存放输入的英语句子,通过查找空格位置分离出左边的一个单词,再在列表框中检查该单词是否存在,若不存在,按字典排列方式插入到列表框中;
然后截去英语句子中第一个单词后,重复上上述过程。
例如,变量st的值为“Itisabook”,分离出第一个单词“it”存放在变量word内,根据要求加入到列表框中;
再使st的值为“isabook”,重复相同处理过程。
Dimst$,word$,i%,inspc%
st=Trim(Text1)&
inspc=InStr(st,"
DoWhileinspc>
word=
Fori=0ToList1.ListCount-1
Ifword=List1.List(i)Then
Exit