VB练习题上机含答案.docx
《VB练习题上机含答案.docx》由会员分享,可在线阅读,更多相关《VB练习题上机含答案.docx(25页珍藏版)》请在冰豆网上搜索。
![VB练习题上机含答案.docx](https://file1.bdocx.com/fileroot1/2023-1/9/2761f815-a329-4092-a245-b6a06571318b/2761f815-a329-4092-a245-b6a06571318b1.gif)
VB练习题上机含答案
第一部分
1在窗体上添加一个命令按钮(名称为Cmd1,标题为"输出平均值")。
程序运行后,单击命令按钮完成以下工作:
①随机产生20个0到1000的整数,将其放入一个一维数组中
②求出所有元素的平均值,并显示在窗体上(如下图所示)
PrivateSubCmd1_Click()
Dima%(19),i%,sum!
aver!
Randomize
Fori=0To19
a(i)=Int(Rnd*1001)
sum=sum+a(i)
Nexti
aver=sum/20
Printaver
EndSub
2请在名称为Form1的窗体上添加一个名称为Text1的文本框和一个名称为C1、标题为"转换"的命令按钮,如下图所示。
在程序运行时,单击"转换"按钮,可以把Text1中的小写字母转换为大写,把大写字母转换为小写,其他字符不变。
PrivateSubC1_Click()
DimchAsString,ch1AsString,i%
ch=Text1
Fori=1ToLen(ch)
IfAsc(Mid(ch,i,1))>=65AndAsc(Mid(ch,i,1))<=90Then
ch1=ch1+LCase(Mid(ch,i,1))
Else
ch1=ch1+UCase(Mid(ch,i,1))
EndIf
Nexti
Text1=Text1+vbCrLf
Text1=Text1+ch1
EndSub
3在窗体上添加一个命令按钮(名称为MyCmd1,标题为"输出最大值")。
程序运行后,单击命令按钮完成以下工作:
①随机产生30个0~1000的整数,将其放入一个一维数组中
②求出其中的最大值,并显示在窗体上。
PrivateSubMyCmd1_Click()
Dima%(29),i%,max%
Randomize
Fori=0To29
a(i)=Int(Rnd*1001)
Nexti
max=a(0)
Fori=1To29
Ifa(i)>maxThenmax=a(i)
Nexti
Printmax
EndSub
4请设计如下图所示窗体界面。
程序运行时,在选中一个或两个复选框和一个单选按钮时,单击命令按钮,则对文本框中的文本内容做相应的设置。
请编写适当的事件过程,完成上述功能。
PrivateSubCommand1_Click()
IfOption1.Value=TrueThen
Text1.FontName="宋体"
Else
Text1.FontName="隶书"
EndIf
IfCheck1.Value=1Then
Text1.FontUnderline=True
Else
Text1.FontUnderline=False
EndIf
IfCheck2.Value=1Then
Text1.FontItalic=True
Else
Text1.FontItalic=False
EndIf
EndSub
5在名称为Form1的窗体上添加一个名称为Text1的文本框;添加两个标题分别为"对齐方式"、"字体",名称分别为Fm1、Fm2的框架;在Fm1框架中添加三个单选按钮,标题分别为"左对齐"、"居中"、"右对齐",名称分别为Opt1、Opt2、Opt3;在Fm2框架中添加两个单选按钮,标题分别为"宋体"、"黑体",名称分别为Opt4、Opt5。
要求:
编写五个单选按钮的Click事件过程,使程序运行时,单击这些单选按钮,可以对文本框中的内容实现相应的操作(如图所示)。
PrivateSubOpt1_Click()
IfOpt1ThenText1.Alignment=0
EndSub
PrivateSubOpt2_Click()
IfOpt2ThenText1.Alignment=2
EndSub
PrivateSubOpt3_Click()
IfOpt3ThenText1.Alignment=1
EndSub
PrivateSubOpt4_Click()
IfOpt4ThenText1.FontName="宋体"
EndSub
PrivateSubOpt5_Click()
IfOpt5ThenText1.FontName="黑体"
EndSub
6请设计如下图所示窗体界面。
运行程序时,先向左侧文本框中输入一个不超过10的正整数,然后选择"N的阶乘"或"(N+2)的阶乘"单选钮,即可进行计算,计算结果在右侧文本框中显示。
请编写程序完成上述功能。
Dimn%
PrivateSubForm_Load()
EndSub
PrivateSubOption1_Click()
Dimi%
n=Val(Text1)
m=1
Fori=1Ton
m=m*i
Nexti
Text2=m
EndSub
PrivateSubOption2_Click()
Dimi%
m=1
Fori=1Ton+2
m=m*i
Nexti
Text2=m
EndSub
7在窗体上添加两个文本框和三个标签,设置它们的属性,达到下图效果。
程序运行时,在第一个文本框输入一串字符,在第二个文本框中输入一个字符,然后单击"统计"命令按钮,统计第二个文本框中字符(大小写被认为是不同的字母)在第一个文本框中出现的次数,统计结果在标签Label3中显示。
PrivateSubCommand1_Click()
Dimi%,n%
Fori=1ToLen(Text1)
IfMid(Text1,i,1)=Text2Thenn=n+1
Nexti
Label3=n
EndSub
PrivateSubLabel3_Click()
EndSub
8在窗体上添加一个文本框和一个命令按钮。
程序运行后,单击命令按钮,即可计算出0~200范围内能被3或7整除的所有整数的和,并显示在文本框中。
程序运行界面如下图所示。
PrivateSubCommand1_Click()
Dimi%,sum%
Fori=0To200
IfiMod3=0OriMod7=0Thensum=sum+i
Nexti
Text1=sum
EndSub
PrivateSubText1_Change()
EndSub
9请设计如下图所示界面(文本框名称为:
Txt1,按钮名称为:
Cmd1)。
程序运行时在文本框中输入字符串,点击命令按钮,判断文本框中的字符串是否是回文,将判断结果显示在窗体上。
所谓回文是指字符串正序和逆序的结果相同,如“aBCCBa”是回文,“aBCcBa”不是回文。
PrivateSubCmd1_Click()
DimchAsString
Fori=Len(Txt1)To1Step-1
ch=ch+Mid(Txt1,i,1)
Nexti
IfTxt1=chThen
PrintTxt1+"是回文"
Else
PrintTxt1+"不是回文"
EndIf
EndSub
PrivateSubForm_Load()
EndSub
10编程实现求
(n为小于等于20的整数)。
程序运行界面如下图所示。
程序运行时,在文本框中输入n的值,点击“计算”命令按钮,将计算结果显示在标签上。
PrivateSubCommand1_Click()
Dimi%,mAsLong,sumAsDouble
n=Val(Text1)
m=1
Fori=1Ton
m=m*i
sum=sum+1/m
Nexti
Label2="sum="&sum
EndSub
PrivateSubForm_Load()
EndSub
第二部分
1已知在同一个笼子里有总数M只鸡和兔,鸡和兔的总脚数为N只,编程求出鸡和兔各有多少只。
要求:
程序运行后,在两个文本框中分别输入M和N的值,单击“计算”命令按钮,在两个标签框中分别输出鸡和兔的数量。
程序运行界面如下图。
提示:
N≥2×M的偶数。
PrivateSubCommand1_Click()
m=Val(Text1)
n=Val(Text2)
IfnMod2<>0Then
MsgBox("脚数必须为偶数")
Text2=""
Text2.SetFocus
Else
y=n/2-m
Ify<0Then
MsgBox("脚数必须>=只数的2倍,请重新输入")
Text2=""
Text2.SetFocus
Else
x=m-y
Label3=x
Label4=y
EndIf
EndIf
EndSub
PrivateSubForm_Load()
EndSub
2若一个3位正整数中各位数字的立方和等于该数字本身,则该数称之为“水仙花数”。
例如153是水仙花数,因为153=1*1*1+5*5*5+3*3*3。
编程求出100~999之间所有的“水仙花数”。
要求:
程序运行后,单击“查找”按钮,在窗体上显示找到的“水仙花数”。
程序运行界面如下图。
PrivateSubCommand1_Click()
Print"水仙花数:
";
Fori=100To999
X1=iMod10'分离出个位数
X2=(iMod100)\10'分离出十位数
x3=i\100'分离出百位数
Ifi=X1^3+X2^3+x3^3ThenPrinti;
Nexti
EndSub
PrivateSubForm_Load()
EndSub
3编写程序,要求程序运行后,单击“开始”按钮,随机产生20个学生的成绩(0~100的整数),并在左边图片框中输出(一行5个成绩),并在右边图片框中输出平均分和及格的人数,程序运行界面如下图。
PrivateSubCommand1_Click()
Dima(1To20)AsInteger,i%,n%
Picture1.Cls
Picture2.Cls
Fori=1To20
a(i)=Int(Rnd*101)
Picture1.Printa(i);
IfiMod5=0ThenPicture1.Print
Ifa(i)>=60Thenn=n+1
Sum=Sum+a(i)
Nexti
Picture2.Print"平均分:
";Sum/20
Picture2.Print;"及格人数:
";n
EndSub
PrivateSubPicture2_Click()
EndSub
4编写程序实现:
程序运行时,单击窗体则显示如下图所示的图案。
PrivateSubForm_Click()
Fori=1To5
PrintTab(10-i);String(2*i-1,"*")
Nexti
Fori=1To4
PrintTab(5+i);String(9-2*i,"*")
Nexti
EndSub
5编程实现:
在窗体中有一个文本框,一个计时器和两个命令按钮。
其功能是:
程序的运行时,单击“开始计数”按钮,就开始计数,每间隔1秒,文本框中的数增加1;单击“停止计数”按钮,则计数停止。
PrivateSubCommand1_Click()
Timer1.Enabled=True
EndSub
PrivateSubCommand2_Click()
Timer1.Enabled=False
EndSub
PrivateSubForm_Load()
EndSub
PrivateSubTimer1_Timer()
Text1=Val(Text1)+1
EndSub
'在属性窗口设置定时器的interval属性值为1000
6以下程序运行界面如下图所示。
其功能如下:
1)单击"读数据"按钮(Command1),可将随机产生100个三位正整数存到数组a中;
2)单击"计算"按钮(Command2),则根据从组合框Combo1中选中的项目,对数组a中的数据计算平均值,并将计算结果四舍五入取整后显示在文本框Text1中。
题目提供的程序代码不完整,请设计下图界面并录入代码,将程序中的?
改为正确的内容。
注意:
不能修改程序的其他部分。
题目提供的程序代码:
Dima(100)AsInteger
PrivateSubCommand1Click()
DimnAsInteger
Forn=1To100
a(n)=Int(Rnd*?
)
Nextn
EndSub
PrivateSubCommand2Click()
Dimx&,y&,z&,i%,j%,k%
Fori=1To100
Ifa(i)Mod?
Then
x=x+a(i):
j=j+1
Else
y=y+a(i)
?
EndIf
Nextk
x=Int(x/j+0.5):
y=Int(y/k+0.5)
z=Int((x+y)/(j+k)+0.5)
SelectCaseCombo1.Text
Case"所有偶数"
Text1=?
Case"所有奇数"
Text1=?
Case"所有数"
Text1=?
EndSelect
EndSub
Dima(1To100)AsInteger
PrivateSubCommand1_Click()
DimnAsInteger
Forn=1To100
a(n)=Int(Rnd*900+100)
Nextn
EndSub
PrivateSubCommand2_Click()
Dimx&,y&,z&,i%,j%,k%
Fori=1To100
Ifa(i)Mod2=0Then
x=x+a(i):
j=j+1
Else
y=y+a(i):
k=k+1
EndIf
Nexti
x=Int(x/j+0.5):
y=Int(y/k+0.5)
z=Int((x+y)/(j+k)+0.5)
SelectCaseCombo1.Text
Case"所有偶数"
Text1=x
Case"所有奇数"
Text1=y
Case"所有数"
Text1=x+y
EndSelect
EndSub
'在combo1的属性窗口设置list属性,添加列表项
PrivateSubLabel1_Click()
EndSub
7编写程序。
要求:
程序运行后,单击“开始”按钮,则随机产生20个2位数输出到窗体上,每行10个数。
同时对所产生的20个数从小到大排序,将排序后的数再次输出在窗体上。
程序运行界面如下图。
PrivateSubCommand1_Click()
Dima%(1To20),i%
Print"排序前数据排列:
"
Fori=1To20
a(i)=Int(Rnd*90+10)
Printa(i);
IfiMod10=0ThenPrint
Nexti
Fori=1To20'冒泡排序
Forj=1To20-i
Ifa(j)>a(j+1)Then
t=a(j):
a(j)=a(j+1):
a(j+1)=t
EndIf
Nextj
Nexti
Print"排序后数据排列:
"
Fori=1To20
Printa(i);
IfiMod10=0ThenPrint
Nexti
EndSub
PrivateSubForm_Load()
EndSub
8编写程序,程序的功能是:
程序运行后,在文本框中输入一串字符,单击标题为"统计"的命令按钮,分别统计输入字符串中大写字母、小写字母以及其他字符的个数,并将统计结果分别在相应的标签框中显示。
程序运行界面如下图。
PrivateSubCommand1_Click()
Dimi%,m%,n%,z%
Fori=1ToLen(Text1)
IfAsc(Mid(Text1,i,1))>=65AndAsc(Mid(Text1,i,1))<=90Then
n=n+1
ElseIfAsc(Mid(Text1,i,1))>=97AndAsc(Mid(Text1,i,1))<=122Then
m=m+1
Else
z=z+1
EndIf
Nexti
Label2=n
Label4=m
Label6=z
EndSub
PrivateSubForm_Load()
EndSub
9编写程序。
程序功能是:
程序运行后在文本框中输入一个正整数,单击“判断”按钮,在标签框中输出“该数是一个素数”或“该数不是一个素数”的信息。
程序运行界面如下图。
PrivateSubCommand1_Click()
Dimn%
n=Val(Text1)
Fori=2Ton-1
IfnModi=0ThenLabel1=n&"不是素数":
GoTonotm
Nexti
Label1=n&"是素数"
notm:
EndSub
PrivateSubForm_Load()
EndSub
10编写程序,程序的功能是:
程序运行后,单击“开始”按钮,在窗体上显示出10个小于100的随机正整数,单击“查找”按钮,则在窗体的下一行显示出这10个数中的最大的数以及最大数在此数列中的位置号。
程序运行界面如下图。
Dima%(1To10)
PrivateSubCommand1_Click()
Dimi%
Randomize
Fori=1To10
a(i)=Int(Rnd*101)
Printa(i);
Nexti
EndSub
PrivateSubCommand2_Click()
Dimmax%,imax%
max=a
(1):
imax=1
Fori=2To10
Ifa(i)>maxThenmax=a(i):
imax=i
Nexti
Print
Print
Print"最大数是:
";max;Spc(5);"位置号是:
";imax
EndSub
PrivateSubForm_Load()
EndSub
第三部分
1在窗体Form1上添加两个文本框,一个“转换”命令按钮和三个单选按钮(名称分别为Opt1、Opt2、Opt3,标题分别为“大小写转换”、“全部大写”、“全部小写”)。
程序功能:
在上方文本框Text1中输入一字符串,选中“大小写转换”,单击“转换”按钮后,Text2中显示大小写相反的字符串;选中“全部大写”,单击转换按钮后,Text2中显示全部大写字符串,选中“全部小写”,单击转换按钮后,Text2中显示全部小写字符串。
程序运行界面如下图。
要求:
①请按要求完成窗体界面设计②程序的部分代码已给出如下,但不完整。
请录入下面代码,并将“?
”处补充完整。
PrivateSubCommand1_Click()
DimnAsInteger,kAsInteger,chAsString,aAsString
ch=""
IfOpt1.Value=TrueThen
n=Len(?
)
Fork=1Ton
a=Mid$(Text1,k,?
)
Ifa>="a"Anda<="z"Then
ch=ch+UCase(a)
ElseIfa>="A"Anda<="Z"Then
ch=ch+LCase(a)
Else
ch=ch+a
EndIf
Nextk
EndIf
IfOpt2.Value=TrueThench=UCase(Text1)
IfOpt3.Value=TrueThench=?
(Text1)
Text2=ch
EndSub
答案PrivateSubCommand1_Click()
DimnAsInteger,kAsInteger,chAsString,aAsString
ch=""
IfOpt1.Value=TrueThen
n=Len(Text1)
Fork=1Ton
a=Mid$(Text1,k,1)
Ifa>="a"Anda<="z"Then
ch=ch+UCase(a)
ElseIfa>="A"Anda<="Z"Then
ch=ch+LCase(a)
Else
ch=ch+a
EndIf
Nextk
EndIf
IfOpt2.Value=TrueThench=UCase(Text1)
IfOpt3.Value=TrueThench=LCase(Text1)
Text2=ch
EndSub
PrivateSubForm_Load()
EndSub
2编写程序,演示列表框控件的基本操作。
在窗体上建立两个列表框,两个命令按钮。
程序运行后,在左边列表框中选中所需要的项目,单击“添加”按钮,则把所选中的项目移到右边列表框中。
如果单击“删除”按钮,则删除左边列表框中选中的项目。
程序运行时的窗体界面如图。
PrivateSubCommand1_