x=x+i
EndIf
Nexti
该程序段运行后,x的值为( c )
A.2 B.4 C.5 D.7
【分析】 本题也考查For语句和If语句的综合运用。
通过分析,只有当i=3时,才满足x
要点6 程序调试
【要点点拨】 程序调试的目的是为了发现程序中存在的不合理的语法或逻辑问题。
在调试程序时,要充分依据系统给出的错误提示进行分析与纠正,分析错误原因,找出解决方法。
【例6】 某VB程序的一个事件过程如下:
Private Sub Command1_Click( )
Dim a As Integer
a=Val(Text1.Text)
Text1.Text=Str(Sqr(a))
End Sub
程序运行时,单击命令按钮Command1后弹出如图所示的错误信息提示。
出现错误的原因是( c )
A.Sqr函数计算时出现错误
B.Str函数计算时出现错误
C.界面上缺少文本框Text1
D.变量a类型定义错误
【分析】 本题考查对VB程序的综合分析能力和程序调试能力。
此过程的功能是从文本框对象Text1中读入变量a的值,经过Sqr函数求算术平方根后,将结果在文本框Text1中显示。
图中显示的错误提示:
要求对象,即在VB界面上缺少程序代码中出现的对象。
由分析得知,代码中出现了Text1这个对象,故答案为界面上缺少文本框Text1。
【备选例题】 奥运会参赛选手要进行体重检查,他们的体检标准为:
Bim=w/(h*h),为此设计VisualBasic程序如下。
PrivateSubcom1_Click()
DimwAsSingle
DimhAsSingle
DimbmiAsSingle
w=Val(Text1.Text)
h=Val(Text2.Text)
bmi=w/(h*h)
Ifbmi>=20Andbmi<=25Then
Label3.Caption=Str(bmi)+”合格” '输出bmi指数及健康状态
Else
Label3.Caption=Str(bmi)+”不合格” '输出bmi指数及健康状态
EndSub
调试程序时,单击命令按钮“com1”,出现如右图所示的提示信息:
出现该错误的原因是( d )
A.变量h类型定义错误
B.变量bmi类型定义错误
C.If语句缺少Else
D.If语句缺少EndIf
【分析】 本题主要考查对VisualBasic程序代码的理解与程序调试的能力。
要求学生能根据错误提示分析错误原因,找出解决方法。
图中显示的错误提示:
语法错误。
一般把观察方向指向语法结构的完整性。
由分析得知,程序中每个If都需要有一个EndIf与之相配套。
因为本题是If语句缺少EndIf。
要点7 事件处理过程名
【要点点拨】 事件处理过程名由对象名、事件名组成。
在属性窗口中,可以看出对象名、类型及该对象的相关属性。
根据题中给出的用户事件及对象名,即可得出事件处理过程名;或者根据题意,正确选择对象和合适的事件。
【例7】 小李在设计VB程序时所使用的复选框对象的属性窗口如图所示,他想编制该复选框单击事件的处理过程,则该事件处理过程名是( c )
A.CheckBox_ClickB.加粗_Click
C.Check1_ClickD.复选框_Click
【分析】 本题主要考查事件处理过程名以及学生的实际运用能力。
本题具有一定的迷惑性,很容易被提供的图片所吸引,其实在图中仅可以看出复选框对象的名称为“Check1”,对于相应的触发事件则隐含在题干“复选框单击事件”中。
【备选例题】 程序运行界面如图所示。
要求在文本框Text1中输入字符串,单击“翻转”按钮Command1后,在标签Text2中显示处理后的字符串。
需要编写的VB事件处理过程的名称为( a )
A.Command1_ClickB.Text1_Click
C.Form_ClickD.Label2_Click
【分析】 本题考查能否根据题意正确选择对象和合适的事件。
要求学生能正确掌握事件名、方法、属性名、属性值等概念。
要点8 解析算法
【要点点拨】 解析算法的基本思想是用解析的方法找出表示问题的前提条件与所求结果之间关系的数学表达式,深刻理解题意后,建立正确的数学模型,列出数学表达式,以实现问题的求解。
【例8】 某景点规定,身高在1.2米以下的儿童免票,身高在1.2~1.5米的儿童购买半价票,身高超过1.5米的购买全价票。
则此算法是( b )
A.枚举算法B.解析算法
C.对分查找D.排序算法
【分析】 本题考查解析算法的基本思想。
根据题意,以三种情况计算门票价格,用分支模式进行分类计算,符合解析算法的思想。
【备选例题】 某地出租车按照行驶距离(以千米为单位按整数计,小数部分四舍五入)计费,行驶距离取整后,计费规则如下:
3千米(包括3千米)以内10元;超过3千米但低于10千米(包括10千米)时,超过部分每千米2元;超过10千米时,超过部分每千米3元。
例如,行驶距离8千米时将收取10+(8-3)×2=20元,行驶距离12千米时将收取10+(10-3)×2+(12-10)×3=30元。
现要求编写VB程序(运行界面如图所示),实现如下功能:
在文本框Text1中输入行驶距离,单击“计算”按钮Command1,在标签Label3中显示相应的费用。
某同学按此要求编写的程序如下,其中函数f(x)用于计算费用,但加框处代码有错,请改正。
Functionf(xAsInteger)AsInteger
If
Then ′①
f=10
ElseIfx<=10Then
f=
′②
Else
f=10+(10-3)*2+(x-10)*3
EndIf
EndFunction
PrivateSubCommand1_Click( )
DimnAsInteger,rAsInteger
n=Int(Val(Text1.Text)+0.5) ′n为取整后的行驶距离
r=f(n) ′r为需收取的费用
Label3.Caption=Str(r)
EndSub
【分析】 本题是一道典型的解析算法考题。
公式都已经直接提供,所以都比较简单,只要看清题目,再把公式转换成VB的表达式就可以了。
题目描述中提到“3千米(包括3千米)以内10元”,所以①处应该改为x<=3;②处是x<=10的情况,除了超过部分的(x-3)*2,还需要再加上3千米以内的10元。
【答案】 ①x<=3 ②(x-3)*2+10
要点9 枚举算法
【要点点拨】 枚举算法即指根据问题的本身性质,一一列举出该问题所有可能的情况,并在逐一列举的过程中,检验每个可能解是否是问题的真正解。
在列举过程中要尽可能让列举范围最小化,但是列举的时候,不能遗漏,避免重复。
【例9】 在给定的正整数区间[10,55]中寻找能被3除余1,被7除余2的正整数的个数的算法是( c )
A.解析算法B.排序算法
C.枚举算法D.对分查找
【分析】 本题考查枚举算法的基本思想。
枚举算法的两个关键点:
一是一一列举出所有的可能,二是逐个验证是否是问题的真正解。
本题要求从正整数区间[10,55]中寻找能被3除余1,被7除余2的正整数的个数,就需要从10到55的整数中,一个一个进行判断,符合枚举算法的思想。
【备选例题】 徐一易的Email邮箱密码忘记了,但他急需要收一封很重要的来信,请你帮他找出密码。
他只记得密码的一些零星信息:
①密码是六位数字,前面两位为31;
②最后两位数字相同;
③能被12和28整除。
程序界面如图所示,单击“帮助找回密码”按钮(Command1)后,可能的密码显示在列表框List1中。
解决此问题的相应程序如下:
PrivateSubCommand1_Change() ①
DimaAsInteger,SAsLong,bAsInteger,IAsInteger
ForI=0To9999
S=310000+I
IfSMod12=0orSMod28=0Then ②
a=Smod10
b=(SMod100)\10
Ifa=bThen
List1.AddItemStr(S)
EndIf
EndIf
NextI
EndSub
纠正程序①和②的错误处,填入适当的语句或表达式,把程序补充完整:
程序中①处应更改为__________________________________________。
程序中②处应更改为__________________________________________。
【分析】 本题考查学生对枚举法的理解。
代码中出现两处错误,其中一处是事件处理过程名,题干中指出“单击‘帮助找回密码’按钮”,则事件处理过程名是Command1_click。
题干中指出“能被12和28整除”,则逻辑运算符应该为and。
故纠错还是比较容易的。
【答案】 ①Command1_click
②SMod12=0andSMod28=0
【】【】【当堂巩固】】】】】】】】
1.下列步骤是用计算机解决物质密度计算问题时经历的三个阶段:
①编制计算机程序,用计算机进行处理
②确定密度计算公式,设计算法
③分析问题,确定计算机解题任务为“根据物质的质量与体积计算密度”
上述阶段的正确顺序是(a)
A.③②①B.③①②
C.①②③D.①③②
2.不能用算法描述“输出自然界中的所有质数”,是因为解决该问题的算法不具有(a)
A.确定性B.有效性
C.能行性D.有0个或多个输入
3.VisualBasic中,添加一个文本框,在工具箱中要选择最适合的控件是(b)
A.
B.
C.
D.
4.已知有如下VisualBasic程序段:
PrivateSubCommand1_dbclick()
a=”Visual”
b=”Basic”
Text2.Text=a+b
EndSub
程序运行后,如果单击命令按钮,则在文本框中显示的是(c)
A.VisualB.BasicC.VisualBasicD.出错
5.有如下VisualBasic程序段:
s=0;k=1
Do while k<=4
If8/k>=3Thens=s+k
k=k+1
Loop
该程序段运行后,变量s的值是__3____。
6.设计VB程序,使其具有下列功能:
在文本框Text1中输入一串字符(数字、字母均可),单击“开始”按钮Command1,在标签Label2中输出结果。
该程序的设计界面如图所示:
PrivateSubCommand1_Click()
DimchAsString,shAsString
DimiAsInteger,jAsInteger
ch=Text1.Text
Fori=1ToLen(ch)
j=Asc(Mid(ch,i,1))
Ifj>96Andj<123Then
sh=sh+Chr(j-32)
Else
①
EndIf
Next
②
EndSub
(1)根据输出结果,分析该程序的功能是( )
A.将输入的字符串原样输出
B.将输入的字符串转换成ASCII码后输出
C.将输入的字符串中小写字母转换成大写字母后输出
(2)当运行调试程序时,发现________(填“①”或“②”)处有错误,应改为________。
【答案】
(1)C
(2)② Label2.Caption=sh