《第16节 VB程序改错 学案(含答案)》由会员分享,可在线阅读,更多相关《第16节 VB程序改错 学案(含答案)(7页珍藏版)》请在七七文库上搜索。
1、第16节VB程序改错学习目标知识条目考试要求考试属性考试形式语法错误应用学考 加试客观主观逻辑错误应用加试主观1语法错误在VB程序编写过程当中,经常会出现各类语法错误,导致编译出错,无法运行程序。常见的语法错误有数据类型不匹配、数据溢出、除数为0、对象不存在、无效的属性和方法等。(1)数据类型不匹配类型不匹配的表现有:数值与其他类型变量运算,输入时数据类型与变量类型不匹配,输出时变量没有转换为字符串不匹配或已经是字符串用Str函数导致错误。(2)数据溢出,一般是指整型和长整型变量超出数据类型能表示的范围。(3)除数为0,在计算表达式中,除数的值为0。(4)对象、事件、方法、函数等名称出错或不存
2、在在代码中出现的控件在窗体中不存在,会报错“对象不存在”;主程序代码中的函数名称没有定义,会报错“子程序或函数未定义”;事件写错,触发事件时没有任何反应;方法或属性写错会报错“未找到方法或数据成员”。(5)数组下标越界一个数组在定义时有明确的下标范围,如Dim a(2 To 5),第一个元素是a(2),使用a(1)时,下标超出定义范围出错。2逻辑错误逻辑错误指的是程序编译可以运行,但运行结果与预想算法推理不一致的错误。逻辑错误在学考中不要求,只在加试题中出现。例1下列程序段运行后,说法正确的是()Dim i As Integer,a As Stringi10:a”s104”iiaAi的值为10
3、 Bi的值为20Ca的值为10 D类型不匹配例2运行如下程序后,下列说法正确的是()Private Sub Command1 Click()Dim i As String,a As Integera0:i ”10”a1/Sqr(a)Text1.Text Str(i)aaiEnd SubA除数为0 B类型不匹配C数据溢出 D对象不存在一、基础巩固1以下定义和赋值语句匹配的是()ADim a As Integer:a2aBDim b As Double:bSqr(4)CDim c As String:cFalse/10DDim d As Boolean:20d2有一个变量为 x”abcdefg”,
4、则以下应用错误的是()ALen(x) BInt(x) CMid(x,1,3 ) Dx”20”3有一个变量的定义为Dim a As Single,则以下表达式错误的是()ALen(a) BInt(a)Ca”bai” Da104有一个变量为Dim a As Integer:a400,则以下表达式错误的是()ALen(”400”) BInt(a2)CStr(a) DSqr(a/10)5以下代码写法错误的是()AText1.Text”你好”BLabel2.Caption”hello”CForm.VisibleTrueDList1AddItem x6有如下代码:Private Sub Command1
5、Click()Dim a As Integer,b As Boolean,c As Integera4:b16ca/Sqr(b)Text1.Text Str(c)End Sub运行出错,原因是()A除数为0 B无效的过程调用或参数C数据溢出 D下标越界二、能力提升7以下定义和赋值语句不匹配的是()ADim a As Long:a300000BDim b As Single:b”gaosu235”CDim c As String:c”hangzhou”xihu”DDim d As Boolean:dTrue8以下程序计算10!(即10()Dim a As Integer,s As Longs1F
6、or a10 To 1ss*aNext aA除数为0 B类型不匹配 C退出循环 D对象不存在9以下VB语句运行时出错,原因是()Dim a As Integer,b As String,c As Longa36 : b”it”:c50000cabcA除数为0 B类型不匹配C数据溢出 D对象不存在10以下VB语句运行时出错,错误的提示应该是()Dim a As Integer,b As Booleana100:bTrueIf Not b ThenaSqr(a)Else aa*2Text1.TextStr(a)A变量类型不匹配 B除数为0CIf没有和它相对应的End If D没有Text1对象11
7、有以下代码,已知在窗体中有Command1和Text1两个对象,运行出错,原因是()Private Sub Command1 Click()Dim a(1 To 10) As Integer,i As IntegerFor i 1 To 10a(i) Int(Rnd() * 20 80)Next iText1.Text Str(a(i)End SubA下标越界 B函数未定义 C数据溢出 D除数为012有下列程序,运行出错,错误在()Private Sub Command1 Click()Dim a(1 To 10) As Integer,i As Integer1For i 1 To 10a(
8、i) Int(Rnd() * 50) 502List1.AddItem Str(a(i)3Next a4End SubA1处 B2处 C3处 D4处13百鸡问题:公鸡5文钱一只,母鸡3文钱一只,小鸡1.5文钱1只。如果用100文钱买100只鸡,那么公鸡、母鸡和小鸡各应该买多少只呢?代码如下,请修改加框处代码。Private Sub Command1 Click()Dim xj As Integer,mj As Integer,gj As IntegerFor mj 0 To 33If (xj *1.5 gj * 5 mj*3) 100 ThenList1.AddItem ”小鸡” Str(xj
9、) ”公鸡” Str(gj) ”母鸡” Str(mj)End IfNext mjNext gjEnd Sub 。 。14任何一个正整数的立方都可以写成一串连续奇数的和,如下所示:13 1;2335;337911;4313151719。如下是程序实现,请修改加框处代码:Private Sub Command1 Click()Dim i As Integer,i3 As Long,shuchu As String,j As Long,sum As Longi Val(Text1.Text):i3 i 3: flag FalseFor j 1 To i3 Step 2两层循环判断正确的结果sum j
10、Do While sum 0以下计算字符串并输出shuchu shuchu Str(j)sum sumjLoopLabel1.Caption shuchuEnd Sub答案精析典例精析例1D一个数值10与一个字符串“s104”无法相加,类型不匹配。例2A当一个程序中包含多个错误时,系统在编译时会停在检测到的第一个错误位置,后面的错误无法运行证实。执行a1/Sqr(a)出错,除数为0,后面是否有错误就无法验证了。事实上,后面的代码中Text1对象是否存在不确定,Str(i)肯定会显示类型不匹配。达标检测1BA中2a不能作为数值,B中Sqr(4)2,符合,C中,False不能除10,D不是赋值语句
11、,只能做条件表达式。2BInt函数只能用于数值。3C数值与包含字母的字符串不能比较。4BInteger的范围小于等于32767,4002会超出范围,引发溢出的错误。5D一般写法AddItem是列表框的方法,用法是List1.AddItem ,题中用法会认为这是一个自定义函数。6Bb做为逻辑型变量,赋给非0值的结果是True,但用Sqr函数无法计算,参数错误。7B单精度实数不能赋值包含字母的字符串。8C循环步长为1,循环执行条件是循环变量小于或等于终值,但终值为1,初始值a10,条件a1不成立,循环退出。9B字符串不能和数字相加。10C在块结构中,每个If应该有一个End If相对应。11A语句Text1.Text Str(a(i)运行时,i11,定义中没有a(11)。12D前文循环变量为i,4处用Next a,不对应。13gj0 To 20xj100gjmj解析公鸡每只5文,最少0只,最多20只,所以gj0 To 20,处三种鸡全部是100只,根据公鸡和母鸡数可得出小鸡数的公式xj100gjmj。14sum sum j 2jj 2解析sum是存储从j开始连续的奇数之和,用sum sumj2。处,程序中在探讨奇数,偶数可以跳过。
链接地址:https://www.77wenku.com/p-103412.html