vb.docx
《vb.docx》由会员分享,可在线阅读,更多相关《vb.docx(16页珍藏版)》请在冰豆网上搜索。
vb
1.单击按钮执行在输入样本串中查找字串,删除字串字符后输出至结果文本框。
用复选框可选择查找方式是否区分大小写。
PrivateSubCommand1_Click()
Dimss$,s0$,len0%,ms$,i%
ss=Text1.Text
s0=Text2.Text
If_____
(1)____Then
s0=_____
(2)______
EndIf
len0=Len(s0)
Fori=1ToLen(ss)-len0+1
ms=_____(3)______
IfCheck1.Value=1Then
ms=UCase(ms)
EndIf
If(ms=s0)Then
ss=Mid(ss,1,i-1)+Mid(ss,i+len0)
i=i-1
EndIf
Nexti
Text3.Text=___(4)_____
EndSub
2.单击窗体读当前文件夹中的文本文件data.txt数据,找出其中年龄最大者的年龄、姓名和全部人数,输出并保存在当前文件夹的中result.txt。
data.txt的数据格式形如:
王海涛,18
李林,20
……
PrivateSubForm_Click()
DimName$,Age%,maxName$,maxAge%
n=0
maxAge=0
OpenApp.Path+"\data.txt"ForInputAs#1
DoWhile____
(1)______
Input#1,Name,Age
n=n+1
IfAge>maxAgeThen
____
(2)______
maxName=Name
EndIf
Loop
Close#1
Label1.Caption="最大年龄:
"&maxAge&vbCrLf&"最大年龄姓名:
"&maxName&vbCrLf&"人数:
"&n
OpenApp.Path+"\result.txt"______(3)______
Print#2,maxName,maxAge,n
Close#2
EndSub
单击窗体执行将所输入的整数插入排序后的原数组元素适当位置。
FunctionInsert(s(),ByValkeyAsInteger)AsInteger
Dimk%,i%,j%
k=___
(1)_____
Fori=0ToUBound(s)
Ifkey
k=i
_____
(2)_______
EndIf
Nexti
ReDimPreserves(UBound(s)+1)
Forj=UBound(s)-1TokStep-1
______(3)____
Nextj
s(k)=key
Insert=UBound(s)
EndFunction
PrivateSubForm_Click()
Dima()AsVariant,i%,p%,m%
a=Array(1,3,6,8,9,13,17,20,25)
Fori=0ToUBound(a)
______(4)_____
Nexti
Print:
Print
p=InputBox("请输入要插入的数:
")
m=____(5)____
Fori=0Tom
Printa(i);
Nexti
Print:
Print
EndSub
三、程序调试题(共20分,每错2.5分,第1题有2处错,第2题3处错,第3题3处错)
启动工程文件C:
\ks\cxts3.vbp,程序存在8处错误,请调试改正,并按原文件名和位置保存。
正确结果见样例cxts3.exe。
改错方法:
不能修改或重新定义变量,不允许增加或删除语句,但可以修改语句,所修改的语句必须在句尾加上注释标记'***********。
调试改错题1,有2处错误:
输入18位身份证号码,通过第7~10位取出出生年,给出寄语。
对1959(含)出生的人,寄语为"步入中老年,请您注意身体!
";对1960年代和1990年代出生的人,寄语均为"60后和90后要多沟通,避免代沟!
";对于1970~1989年出生的人,寄语为"70、80后的青年,祝你工作顺利!
";对于2000后出生的人,寄语为"小朋友,祝你茁壮成长!
";其余判断为输入错误,清空文本框并置焦点。
PrivateSubCommand1_Click()
Dimbthyear%,lbltx$
bthyear=Val(Mid(Text1.Text,7,4))
SelectCasebthyear
CaseIs<=1959
lbltx="步入中老年,请您注意身体!
"
Case(bthyear>=1960andbthyear<=1969)or(bthyear>=1990andbthyear<=1999)
lbltx="60后和90后要多沟通,避免代沟!
"
Case"1980"to"1989"
lbltx="70、80后的青年,祝你工作顺利!
"
Case2000,2001,2002To2008,Is>2008
lbltx="小朋友,祝你茁壮成长!
"
CaseElse
lbltx="输入错了吧?
!
请重新输入"
Text1.Text=""
Text1.SetFocus
EndSelect
Label2=lbltx
EndSub
调试改错题2,有3处错误:
产生隔行轮换显示字母和数字的菱形图案(规律如图)
PrivateSubCommand2_Click()
Dimi%,j%,k%,p%
p=3
Fori=0To14
Ifi<=7Then
k=i
Else
k=14-i
EndIf
Picture1.PrintTab(p+7-k);
IfkMod2Then
Forj=kTo3*k
Picture1.PrintChr(66+k);
Nextj
Else
Forj=kTo2*k
Picture1.PrintTrim(Str(k));
Nextj
EndIf
Picture1.Print
Nexti
EndSub
调试改错题3,有3处错误:
随机产生1~20个大写字符串,并随机产生一个大写字母分别填入两个文本框中,统计这个大写字母在该串中出现的次数。
PrivateSubCommand3_Click()
Dimstr1$,str2$,i%,j%,sum%
Text2=""
i=Int(Rnd()*20+1)'产生1~20之间的随机整数
Forj=1Toi
Text2=Text2+Chr(64+Int(Rnd()*26+1))'随机产生大写字母字符串
Next
Text3=Chr(Int(Rnd()*26+1))
str1=Text2
str2=Text3
sum=1
Forj=1Toi
IfLeft(str1,j,1)=str2Then
sum=sum+1
EndIf
Next
Ifsum<>0Then
Label4=str2&"在字符串中出现了"&sum&"次。
"
Else
Label4=str2&"在字符串中没有出现过"
EndIf
EndSub
四、编程题(35分)
1.在C:
\KS目录下新建项目bct0.VBP,按如下要求编程并保存。
2.在Form1窗体上放置两个列表框。
建立如下菜单:
菜单项
备注
应用
一级菜单
产生
二级菜单
筛选
二级菜单
-
分隔线
结束
二级菜单
绘图
一级菜单
3.单击菜单"产生"随机产生10个大写字母,填入List1中。
单击菜单"筛选"将列表框1中"K"以后(含"K",ASCII码值为75)的字母选出,填入List2中。
4.单击"绘图"菜单项时,显示窗体2;单击"结束"菜单项时,结束程序的运行。
5.在窗体2上单击"绘图"命令按钮,设置画布区域为(-10,2)-(10,-2),按以下公式绘制,当Y>0为红色图形,Y<0为蓝色图形,t=-3π~3π:
x=t
y=Sin(t)
(提示:
函数图形通过计算Y的值,画垂直于X轴的直线显示)
单击"返回"命令按钮则关闭窗体2,返回窗体1。