vb中的常见错误与分析汇总

上传人:枫** 文档编号:503002093 上传时间:2023-12-21 格式:DOC 页数:14 大小:59KB
返回 下载 相关 举报
vb中的常见错误与分析汇总_第1页
第1页 / 共14页
vb中的常见错误与分析汇总_第2页
第2页 / 共14页
vb中的常见错误与分析汇总_第3页
第3页 / 共14页
vb中的常见错误与分析汇总_第4页
第4页 / 共14页
vb中的常见错误与分析汇总_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《vb中的常见错误与分析汇总》由会员分享,可在线阅读,更多相关《vb中的常见错误与分析汇总(14页珍藏版)》请在金锄头文库上搜索。

1、常见错误和难点分析1在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的End If语句结束。否则,在运行时系统会显示块 If没有End If的编译错误。同样对Select Case语句也应有与其相对应的End Select语句。2多边选择ElseIf关键字的书写和条件表达式的表示多边选择ElseIf子句的关键字ElseIf之间不能写有空格,即不能写成Else If。在多个条件表达式的表示时,应从最小或最大的条件依次表示,以避免条件的过滤。例如,已知输入某课程的百分制成绩mark,要求显示对应五级制的讦定,评定条件如下:有以下几种表示方式,语法上都没有错,但执行后结果有所不同,请分

2、析哪些正确? 哪些错误?下面给出的答案中,方法一、二、五正确,其余错误,请分析各自的原因。方法一:方法二:方法三:方法四: 方法五:If mark=90Then Print优ElseIf mark=80Then Print良 ElseIf mark=70Then Print中 ElseIfmark-60Then Print及格If mark60ThenPrint不及格ElseIf mark70Then Print及格ElseIf mark=60Then Print及格ElseIf mark=70Then Print中Elselfmark=80Then Print良Elselfmark=90Th

3、en Print优If mark=90Then Print优 ElseIf 80=mark90 Then Print良ElseIf 70=mark80 Then Print中ElseIf 60=mark=90Then Print优ElseIf 80=mark And mark90 Then Print良ElseIf 70=mark And mark80Then Print中ElseIf 60=mark And mark70Then精选文档Else Print及格End IfElseIf mark=90 Print优 Case mark=80 Print良 Casemark=70 Print中

4、Case mark=60 Print及格 Case Else Print不及格Select Case mark Case Is=90 Print优Casels=80 Print良 Case Is=70 Print中 Case Is=60 Prim及格 Case Else Print不及格 Select Case markCase Is=90 Print优Case 80 To 89Print良Case 70 To 79 Print中Case 60 TO 69 Print及格Case Else Print不及格End Select精选文档End SelectEnd Select(2) 在变量或表达

5、式中不能出现多个变量。实验三第5题对三门课程奖学金的判断,只能用If语句的多边选择,而不能用SelectCase语句实现。例如,有人用如下语句表示: Select Case markl,mark2,mark3 Case (markl+mark2+mark3)/3=95 Print一等奖 End Select这样就会在 Select Case markl,mark2,mark3 语句行出现编辑错误, 同时Case (markl+mark2 +mark3)/3=95书写也错误。第四章 常见错误和难点分析1 不循环或死循环的问题主要是循环条件、循环初值、循环终值、循环步长的设置有问题。例如,以下循环

6、语句不执行循环体:For i=10 To 20 Step-1 步长为负,初值必须大于等于终值,才能循环For i=20 To10 步长为正,初值必须小于等于终值,才能循环Do While False 循环条件永远不满足,不循环例如,以下循环语句死循环:For i=10 To 20 Step 0 步长为零,死循环Do While 1 循环条件永远满足,死循环精选文档2循环结构中缺少配对的结束语句ForNext语句没有配对的Next语句;Do语句没有一个终结的Loop语句等。3循环嵌套时,内外循环交叉 For I=1 to 4 For j=1 to 5 Next i Next j 上述循环的交叉运

7、行时显示无效的Next控制变量引用。4累加、连乘时,存放累加、连乘结果的变量赋初值问题(1) 一重循环在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。例如,求1100的3的倍数和,结果放入Sum变量中,如下程序段,输出结果如何?应作如何改进? Private SubForm_Click() For i=3 To 100 Step 3 Sum=0 Sum=Sum+i Next i Print Sum End Sub(2) 多重循环精选文档在多重循环中,存放累加、连乘结果的变量初值设置放在外循环语句前,还是内循环语句前,这要视具体问题分别对待。例如,期末30位学生参加三门课程的考试,

8、求每个学生的三门课程的平均成绩如下程序能否实现? aver=0 For i=1 To 30 For j=1 To 3 m=InputBox(输入第&j&门课的成绩) aver=aver+m Next j aver=aver/3 Print aver Next I 第五章 常见错误和难点分析1Dim数组声明有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段: n=InputBox(输入数组的上界) Dim a(1 To n) As Integer程序运行时将在Dim语句处显示要求常数表达式的出错信息。即Dim语句中声明的数组上,下界必须是常数,不能是变量。解决程序通用的问题,一是将

9、数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下: Dim a() As Integer n=InputBox (输入数组的上界)精选文档 ReDim a(1 To n)As Integer2数组下标越界引用了不存在的数组元素,即下标比数组声明时的下标范围大或小即为越界。例如,要形成有如下30项的斐波那契数列:1,1,2,3,5,8,13,21,34,317811,514229,832040正确的程序段如下:Dim a(1 To 30) As Long, i%若将For i=3 To 30改为For i=1 To 30,程序运行时会显示下标越界的出错信息,因为开始循环时i

10、=l,执行到循环体语句a(i)=a(i-2)+a(i-1),数组下标i-2、i-1均小于下界1。同样若将上例:a(i)+a(i-2)+a(i-1) 语句改为:a(i+2)=a(i)+a(i+1)程序运行时也会显示下标越界的出错信息,这时是数组下标大于上界30。3数组维数错数组声明时的维数与引用数组元素时的维数不一致。例如,下程序段为形成和显示35的矩阵: Dim a(3,5) As Long For i=1 To 3 For j=1 To 5 a(i)=i*j Print a(i); Next j Print精选文档 Next i程序运行到a(i)=i*j语句时出现维数错误的信息,因为在Dim声明时是二维数组,引用时的一个下标。4Aarry函数使用问题Aarry函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组。赋值后的数组大小由赋值的个数决定。例如,要将1,2,3,4,5,6,7这些值赋值给数组a,下表列出了三种错误及相应正确的赋值方法。Aarry函数表示方法错误的Aarry函数赋值,改正的Aarry函数赋值Dim a(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号