VB实验任务7答案.docx
- 文档编号:28702889
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:19
- 大小:110.47KB
VB实验任务7答案.docx
《VB实验任务7答案.docx》由会员分享,可在线阅读,更多相关《VB实验任务7答案.docx(19页珍藏版)》请在冰豆网上搜索。
VB实验任务7答案
实验任务7参考答案
课程名称:
程序设计基础VB
实验名称——实验七选择结构程序设计
一、实验目的:
if语句的三种基本结构
实验1编写程序,求解鸡兔同笼问题。
一个笼子中有鸡X只,兔Y只,每只鸡有2只脚,每只兔有4只脚。
今知鸡和兔的总头数为H,总脚数为F。
问笼中鸡和兔各若干?
PrivateSubForm_Click()
DimhAsInteger,fAsInteger,xAsInteger,yAsInteger
h=InputBox("鸡和兔的总头数H=:
","鸡兔同笼",71)
f=InputBox("鸡和兔的总脚数F=:
","鸡兔同笼",158)
x=(4*h-f)/2
y=(f-2*h)/2
MsgBox"笼中鸡数为"&x&vbCrLf&"笼中兔数为"&y
EndSub
实验2实验书100页实验5-5-2改错题
窗体的界面设计如图所示。
在单击命令按钮后,如果选中一个单选按钮和一个或两个复选框,则对文本框中的文字做相应设置。
发现一下程序代码出错,请修改。
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
实验3实验书101页实验5-7(注意If语句的使用格式)
建立一个文本框,在文本框中每输入一个字符,则立即判断:
若是小写字母,则把它的大写形式显示在标签Label1中,若是大写字母,则把它的小写形式显示在Label1中,若是数字字符,则把该字符直接显示在Label1,其他字符不予显示。
输入的字母总数显示在标签Label2中,如图7-4所示。
解法1的程序代码如下。
DimnAsInteger'模块级变量
PrivateSubText1_Change()
DimchAsString*1
ch=Right$(Text1.Text,1)
Ifch>="A"Andch<="Z"Then
Label1.Caption=LCase(ch)
n=n+1
ElseIfch>="a"Andch<="z"Then
Label1.Caption=
n=n+1
ElseIfch>="0"Andch<="9"Then
Label1.Caption=ch
Else
Label1.Caption=""
EndIf
Label2.Caption=n
EndSub
解法2:
在输入时即对每一个输入的字符进行判断,还可放在文本框的KeyPress事件中,符合条件的字符进行处理,不符合条件的字符不予显示。
自行完成编程。
实验4教材120页第5题
编写一个程序,用户输入考试成绩,输出该学生的总评成绩。
总评标准如下:
60分以下为不及格,60~69为及格,70~79为中等,80~89为良好,90~100为优秀。
自行设计界面。
PrivateSubForm_Click()
a=Val(Text1.Text)
SelectCasea
CaseIs<60
b="不及格"
Case60To69
b="及格"
Case70To79
b="良好"
Case80To89
b="良好"
Case90To100
b="优秀"
CaseElse
b="无此成绩"
EndSelect
Label1.Caption=b
EndSub
PrivateSubCommand1_Click()
DimaAsInteger,bAsString
a=Val(Text1.Text)
Ifa<60Then
b="不及格"
ElseIfa>=60Anda<70Then
b="及格"
ElseIfa>=70Anda<80Then
b="中等"
ElseIfa>=80Anda<90Then
b="良好"
ElseIfa>=90Anda<=100Then
b="优秀"
Else
b="无此成绩"
EndIf
Label1.Caption=b
EndSub
实验5建立如下的两个窗体,实现以下功能:
(1)窗体Form1中的用户名边的文本框要保证只能输入26个英文字母,若不是字母则弹出消息框提示“用户名只能输入字符”(参考书上104页例5-6),密码为“12345”,若输入的密码不是“12345”,则弹出消息框“密码错误!
”,并将密码框清空,获得焦点。
(2)单击窗体Form1中的“确定”按钮,如果密码正确,隐藏窗体Form1,显示窗体Form2,单击“返回”按钮退出。
(3)窗体Form2中,单击“确定”按钮,在文本框中输出所选的课程名,单击“取消“按钮则取消所选内容,单击“返回”按钮,隐藏窗体Form2,显示窗体Form1。
单击第一个滚动条改变文本框的文本字号大小(5-30),单击第二个滚动条改变文本框的文本颜色。
1.下列控件中没有Caption属性的是________。
A)框架B)列表框C)复选框D)单选按钮
2.复选框的Value属性为1时,表示________。
A)复选框未被选中B)复选框被选中
C)复选框内有灰色的勾D)复选框操作有误
3.用来设置斜体字的属性是________。
A)FontItalicB)FontBoldC)FontNameD)FontSize
4.将数据项“China”添加到列表框List1中成为第二项应使用________语句。
A)List1.AddItem“China”,1B)List1.AddItem“China”,2
C)List1.AddItem1,“China”D)List1.AddItem2,“China”
5.引用列表框List1最后一个数据项,应使用________语句。
A)List1.List(List1.ListCount)B)List1.List(ListCount)
C)List1.List(List1.ListCount-1)D)List1.List(ListCount-1)
6.假如列表框List1有四个数据项,那么把数据项“China”添加到列表框的最后,应使用________语句。
A)List1.AddItem3,“China”
B)List1.AddItem“China”,List1.ListCount-1
C)List1.AddItem“China”,3
D)List1.AddItem“China”,List1.ListCount
7.执行了下面的程序后,列表框中的数据项有________。
PrivateSubForm_Click()
Fori=1to6
List1.AddItemi
Nexti
Fori=1to3
List1.RemoveItemi
Nexti
EndSub
A)1,5,6B)2,4,6C)4,5,6D)1,3,5
8.如果列表框List1中没有选定的项目,则执行
语句的结果是________。
A)移去第一项B)移去最后一项
C)移去最后加入列表中的一项D)以上都不对
9.如果列表框List1中只有一个项目被用户选定,则执行
List1.Selected(List1.ListIndex)语句的结果是________。
A)在Debug窗口输出被选定的项目的索引值
B)在Debug窗口输出True
C)在窗体上输出被选定的项目的索引值
D)在窗体上输出True
10.在窗体上画一个名称为List1的列表框,一个名称为Label1的标签,列表框中显示若干城市的名称。
但单击列表框中的某个城市名时,该城市名从列表框中消失,并在标签中显示出来。
下列能正确实现上述操作的程序是______。
A)PrivateSubList1_Click()
EndSub
B)PrivateSubList1_Click()
EndSub
C)PrivateSubList1_Click()
EndSub
D)PrivateSubList1_Click()
EndSub
11.下列说法中正确的是________。
A)通过适当的设置,可以在程序运行期间,让时钟控件显示在窗体上
B)在列表框中不能进行多项选择
C)在列表框中能够将项目按字母从大到小排序
D)框架也有Click和DblClick事件
12.为了防止用户随意将光标置于控件之上,应将进行________设置。
A)将控件的TabIndex属性设置为0
B)将控件的TabStop属性设置为True
C)将控件的TabStop属性设置为False
D)将控件的Enabled属性设置为False
13.滚动条产生Change事件是因为________值改变了。
A)SmallChangeB)Value
C)MaxD)LargeChange
14.如果要每隔15s产生一个Timer事件,则Interval属性应设置为________。
A)15B)900C)15000D)150
15.列表框的________属性是数组。
A)List和ListIndexB)List和ListCount
C)List和SelectedD)List和Sorted
16.用户在使用ActiveX控件之前,需要将他们加载到工具箱中,下面________操作可进行ActiveX控件的加载。
A)工程-部件…B)视图-工具箱
C)工具-选项…D)工程-引用
17.在窗体上画一个列表框和一个文本框,然后编写如下两个事件过程:
PrivateSubForm_Load()
List1.AddItem"357"
List1.AddItem"246"
List1.AddItem"123"
List1.AddItem"456"
Text1.Text=""
EndSub
PrivateSubList1_DblClick()
EndSub
程序运行后,在文本框中输入"789",然后双击列表框中的"456",则输出结果为________。
A)1245B)456789C)789456D)0
18.在窗体上画一个列表框,然后编写如下两个事件过程:
PrivateSubForm_Click()
List1.RemoveItem1
List1.RemoveItem3
List1.RemoveItem2
EndSub
PrivateSubForm_Load()
List1.AddItem"ItemA"
List1.AddItem"ItemB"
List1.AddItem"ltemC"
List1.AddItem"ItemD"
List1.AddItem"ItemE"
EndSub
运行上面的程序,然后单击窗体,列表框中所显示的项目为________。
A)ItemA与ItemBB)ItemB与ItemD
C)ItemD与ItemED)ItemA与ItemC
19.假定在图片框Picture1中装入了一个图形,为了清除该图形(不删除图片框),应采用的正确方法是____。
:
A)选择图片框,然后按Del键
B)执行语句Picture1.Picture=LoadPicture(“”)
C)执行语句Picture1.Picture=””
D)选择图片框,在属性窗口中选择Picture属性,然后按回车键
20.在窗体上画一个名称为Text1的文本框,然后画一个名称为HScroll1的滚动条,其Min和Max属性分别为0和100,程序运行后,如果移动滚动框,则在文本框中显示滚动条的当前值。
以下能实现上述操作的程序段是
A)PrivateSubHScroll1_Change()
EndSub
B)PrivateSubHScroll1_Click()
EndSub
C)PrivateSubHScroll1_Change()
EndSub
D)PrivateSubHScroll1_Dblclick()
EndSub
21.如果只允许在列表框中每次只能选择一个列表项时,则应将其Multiselect属性设置为:
_____。
A)0 B)1 C)2 D)3
22.要将一个组合框设置为简单组合框(SimpleCombo),则应该将其Style属性设置为______。
A)0 B)1 C)2 D)3
答案:
1
2
3
4
5
6
7
8
9
10
B
B
A
A
C
D
D
D
B
C
11
12
13
14
15
16
17
18
19
20
D
D
B
C
C
A
B
D
B
A
21
22
A
B
填空:
下列程序段是允许用户按Enter键将一个组合框(CboComputer)中没有的项目添加到组合框中。
SubCboComputer_Keypress(KeyAsciiAsInteger)
DimflagAsBoolean
IfKeyAscii=13Then
flag=False
Fori=0ToCboComputer.ListCount–1
If【1】Then
flag=True
Exitfor
EndIf
Nexti
If【2】Then
【3】
Else
MsgBox(“组合框中已有该项目!
”)
EndIf
EndIf
EndSub
【1】CboComputer.Text=CboComputer.List(i)【2】Notflag或flag=false
【3】CboComputer.AddItemCboComputer.Text
VB中巧用Tab格式函数打印图形
2007-06-0514:
23:
21栏目:
默认栏目
∙
6506
∙0
∙9
在教育科学出版社出版的《算法与程序设计(VB)》(选修)一书中,有关于打印图形的例题,而书中并没有对此作详细的讲解。
为了让学生能更好的理解和掌握双重循环及Tab(x)格式函数的运用,本人结合平时的教学经验,对Tab(x)格式函数的运用进行了归纳和总结,以便使学生能快速地掌握其方法和技巧。
关于图形的打印,我们一般采用双重循环,其中外循环控制打印的行数,内循环控制每行打印的字符个数。
对于图形中各字符位置的确定,则需要用到Tab(x)格式函数进行定位。
如何进行定位,我们可采用两种方法,即“行定位法”和“点定位法”:
一、行定位法:
方法:
确定每行第一个字符所在的位置。
通过图形分析找出各行首字符之间的位置关系,即可得出Tab(x)格式函数中x的表达式。
其程序模式一般为:
Fori=1toA‘i为外循环变量,A控制打印的行数
PrintTab(x);‘x为每行首字符所在的位置,可以为常量,也可以为变量或表达式
Forj=1toB‘j为内循环变量,B控制每行打印的字符个数
Print“@”;
Nextj
Nexti
对于所打印的图形,我们基本可将它们分为四类:
l 基于左端对齐的图形(如图1所示):
由于各行首字符的位置在同一列上,且各行所有字符依次打印于首字符之后,则此时只有当x为某一常量时,才能保证图形左端对齐。
如Tab(20),若A=3,B=4,则打印图形为3行4列的矩形;若此时A=6,B=i,则打印图形为直角三角形(如图1所示)。
l 基于向左倾斜的图形(如图2所示):
由于各行首字符的位置与前一行首字符相比,有向左移动的趋势,即此时x的值逐渐递减,且x每次变化值为1。
由于i的值每循环一次递增1,因此x必定是关于i的表达式即x=常量 -i,才能使x的值呈递减趋势,从而达到图形左倾的效果。
如Tab(20-i),若A=3,B=4,则打印图形为3行4列左倾的平形四边形;若A=6,B=i或B=2*i+1的表达式,则打印图形为左倾的直角三角形(如图2所示)或等腰三角形。
l 基于向右倾斜的图形(如图3所示):
由于各行首字符的位置与前一行首字符相比,有向右移动的趋势,即此时x的值逐渐递增,且x每次变化值为1。
由于i的值每循环一次递增1,因此x必定是关于i的表达式即x=常量+i,才能使x的值呈递增趋势,从而达到图形右倾的效果。
如Tab(20+i),若A=3,B=4,则打印图形为3行4列右倾的平形四边形;若A=6,B=A+1-i或B=2*(A+1)-(2*i+1),则打印图形为倒直角三角形(如图3所示)或倒等腰三角形。
l 基于上下对称的图形(如图4所示):
图形为上下对称,上半部分为正三角形,下半部分为倒三角形,中间一行的字符最多。
我们可以设定中间最长的一行的i值为0作为临界值,上半部分图形中i值设为负,下半部分图形中i值设为正,即i的变化范围是从[-A,+A],A的值可以根据上半部分图形的行数所确定。
此时x和B则是关于i的绝对值的表达式,即x=常量-abs(i),B=2*(A+1-abs(i))-1。
若打印如图4的图形效果,则根据图形分析可知i的变化范围为[-3,3],x=20-abs(i),B=2*(4-abs(i))-1。
由以上四种图形分析可知,对于不对称图形(如图1、2、3)而言,x的常量值(如20)是以每个图形的第一行第一个字符所在位置为基准,各行首字符的位置在此基础上进行加或减的操作,从而使图形出现右倾或左倾;而对于对称图形(如图4)而言,x的常量值(如20)所表示的是图形中最长的一行左边第一个字符所在位置,相对于它所在位置,上下两部分的图形中各行的首字符呈递增趋势,且由于i是由负值变化到正值,故对各行首字符进行绝对值的加操作。
在“行定位法”中,Tab(x)格式函数是在外循环和内循环之间,因此每次执行时所确定的是各行第一个字符所在的位置。
依照此程序模式所打印的图形存在一定的局限性,即当确定各行首字符位置之后,该行所有字符均按紧凑格式打印其后,且各字符之间排列紧密,无空格,因而本方法只适用于打印紧凑格式的实心图形,如直角三角形或每行为奇数(2*i+1)个字符的等腰三角形,而对于如图5所示的各字符间有间隔的图形则不能实现。
若要打印图5所示的三角形,我们一般采用第二种方法“点定位法”。
二、点定位法:
方法:
在打印图形时,对每行中的每个字符的位置都进行定位。
这一方法使用起来比较灵活,适用于各种图形的打印。
其程序模式如下:
Fori=1toA‘i为外循环变量,A控制打印的行数
Forj=1toB‘j为内循环变量,B控制每行所打印的字符个数
PrintTab(x);“@”;‘x为每个字符所在的位置,是关于i和j的表达式
Nextj
Nexti
在此程序中,与“点定位法”不同之处在于,我们把Tab(x)格式函数放置于内循环之中。
在图形中,由于i值的变化而使图形呈左倾或右倾的变化趋势,由于j值的变化而使同一行中不同字符的位置发生了变化,因此x是关于i和j的表达式。
要实现对每个字符进行精确定位,我们只需将“点定位法”各图形中x的表达式增加一个j值即可。
如对以上所分析的四种图形中x的表达式分别为:
x=20+j(图1),x=20-i+j(图2),x=20+i+j(图3),x=20+abs(i)+j(图4)。
对于以上的四种图形,我们将它们称为紧凑格式的图形,是由于各字符是按紧凑格式依次输出,此时i与j的系数比为1:
1。
若想拉大各字符间的间距,我们只需同时扩大i和j的倍数即可如图6所示。
而对于如图5所示的空心图形,各字符间存在一定的间距,通过各行首字符间的间距及每行中各字符之间的间距来确定i和j的系数比,即可得出x的表达式。
若要打印如图5所示的图形,我们可以通过图形分析可知各行首字符间距为1,每行中各字符之间的间距为2,因此x表达式中i与j的系数比为1:
2,即可设x=20+i+2*j。
若要扩大每行中各字符之间的间距,则只需同时扩大i和j的倍数。
基于以上分析,对于任何一种图形,我们均应先观察图形中各行首字符位置所呈现的变化趋势,根据趋势确定变量i的符号是加还是减;其次观察分析图形中各行首字符间的间距与每行中各字符之间的间距的比值,若为1:
1,则两种方法均可使用,若为1:
n,则应运用“点定位法”,将Tab(x)格式函数放置于内循环之中,再对图形中的各字符进行逐个定位,方可打印出合适的图形。
由于“行定位法”只与i有关,而“点定位法”与i,j两变量有关,因而“点定位法”具有一定的灵活性。
因此我们在打印较为复杂的图形时,可运用“点定位法”。
附图形及代码如下表:
图 形
行定位法(代码)
点定位法(代码)
图1
@
@@
@@@
@@@@
@@@@@
@@@@@@
Fori=1to6
PrintTab(20);
Forj=1toi
Print“@”;
Nextj
NextiI
Fori=1to6
Forj=1toi
PrintTab(20+j);“@”;
Nextj
Nexti
图2
@
@@
@@@
@@@@
@@@@@
@@@@@@
Fori=1to6
PrintTab(20-i)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 实验 任务 答案