VB常见错误和难点分析
1.在选择结构中缺少配对的结束语句
对多行式的If块语句中,应有配对的End If语句结束。否则,在运行时系统会显示”块 If没有End If”的编译错误。同样对Select Case语句也应有与其相对应的End Select语句。
2.多边选择ElseIf关键字的书写和条件表达式的表示
多边选择ElseIf子句的关键字ElseIf之间不能写有空格,即不能写成Else If。
在多个条件表达式的表示时,应从最小或最大的条件依次表示,以避免条件的过滤。例如,已知输入某课程的百分制成绩mark,要求显示对应五级制的讦定,评定条件如下:
有以下几种表示方式,语法上都没有错,但执行后结果有所不同,请分析哪些正确? 哪些错误?
下面给出的答案中,方法一、二、五正确,其余错误,请分析各自的原因。
3.Select Case语句的使用
(1) “表达式列表i” 中不能使用”变量或表达式”中出现的变量。
例如,上述多边选择的例子改为Select Case语句实现,方法一Case子句中出现变量mark,运行时不管mark的值多少,始终执行Case Else子句,运行结果不正确;方法二、方法三正确。
(2) 在”变量或表达式”中不能出现多个变量。
实验三第5题对三门课程奖学金的判断,只能用If语句的多边选择,而不能用SelectCase语句实现。例如,有人用如下语句表示:
Select Case markl,mark2,mark3Case (markl+mark2+mark3)/3>=95Print"一等奖"End Select
这样就会在 “Select Case markl,mark2,mark3” 语句行出现编辑错误, 同时
Case (markl+mark2 +mark3)/3>=95书写也错误。
第四章 常见错误和难点分析
1. 不循环或死循环的问题主要是循环条件、循环初值、循环终值、循环步长的设置有问题。
例如,以下循环语句不执行循环体:
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.循环结构中缺少配对的结束语句
For…Next语句没有配对的Next语句;Do语句没有一个终结的Loop语句等。
3.循环嵌套时,内外循环交叉
For I=1 to 4For j=1 to 5…Next iNext j
上述循环的交叉运行时显示”无效的Next控制变量引用”。
4.累加、连乘时,存放累加、连乘结果的变量赋初值问题
(1) 一重循环
在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。
例如,求1~100的3的倍数和,结果放入Sum变量中,如下程序段,输出结果如何?应作如何改进?
Private SubForm_Click()For i=3 To 100 Step 3Sum=0Sum=Sum+iNext iPrint SumEnd Sub
(2) 多重循环
在多重循环中,存放累加、连乘结果的变量初值设置放在外循环语句前,还是内循环语句前,这要视具体问题分别对待。
例如,期末30位学生参加三门课程的考试,求每个学生的三门课程的平均成绩如下程序能否实现?
aver=0For i=1 To 30For j=1 To 3m=InputBox("输入第"&j&"门课的成绩")aver=aver+mNext javer=aver/3Print averNext I
第五章 常见错误和难点分析
1.Dim数组声明
有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段:
n=InputBox("输入数组的上界")Dim a(1 To n) As Integer
程序运行时将在Dim语句处显示”要求常数表达式”的出错信息。即Dim语句中声明的数组上,下界必须是常数,不能是变量。
解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:
Dim a() As Integern=InputBox ("输入数组的上界")ReDim a(1 To n)As Integer
2.数组下标越界
引用了不存在的数组元素,即下标比数组声明时的下标范围大或小即为越界。例如,要形成有如下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=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.数组维数错
数组声明时的维数与引用数组元素时的维数不一致。例如,下程序段为形成和显示3×5的矩阵:
Dim a(3,5) As LongFor i=1 To 3For j=1 To 5a(i)=i*jPrint a(i);"";Next jPrintNext i
程序运行到a(i)=i*j语句时出现”维数错误”的信息,因为在Dim声明时是二维数组,引用时的一个下标。
4.Aarry函数使用问题
Aarry函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组。赋值后的数组大小由赋值的个数决定。
例如,要将1,2,3,4,5,6,7这些值赋值给数组a,下表列出了三种错误及相应正确的赋值方法。
Aarry函数表示方法
Dim aa=Array(1,2,3,4,5,6,7)
5.如何获得数组的上界、下界
Aarry函数可方便地对数组整体赋值,但在程序中如何获得数组的-上界、下界,以保证访问的数组元素在合法的范围内,可使用UBound和LBound函数来决定数组访问。
在上例中,若要打印a数组的各个值,可通过下面程序段实现:
For i=Lbound(A) To Ubound(A)
Print a(i)
Next l
6.给数组赋值
VB6.0提供了可对数组整体赋值的新功能,方便了数组对数组的赋值操作。但真正使用不那么方便,有不少限制。数组赋值形式如下:数组名2=数组名1
这里的数组名2,实际上在前面的数组声明时,只能声明为Varian的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:
Dim数组名2() 或Dim数组名2 (下标)
程序在运行到上述赋值语句时显示”不能给数组赋值”的出错信息。
第五章 数 组
5.1 知识要点
1.数组的概念
数组:存放具有相同性质的一组数据,也就是数组中的数据必须是同一个类型和性质。
数组元素:数组中的某一个数据项。数组元素的使用同简单变量的使用。
2.静态数组的声明
静态数组:在声明时已确定了数组元素个数。
声明形式:Dim数组名([下界To]上界[,[下界To]上界[,…]])As 类型
此语句声明了数组名、数组维数、数组大小、数组类型。
[注意] 下界、上界必须为常数,不能为表达式或变量:省略下界,默认为0,也可用Option Base语句重新设置下界的值。
3.动态数组的声明
声明形式: Dim数组名 ()
ReDim [Preserve]数组名([下界To]上界[,[下界To]上界[,…]])
[注意]
此时的上界、下界可以是赋了值的变量或表达式。若有Preserve关键字,表示当改变原有数组最末尾的大小时,使用此关键字可以保持数组中原来的数据。
4.控件数组
即相同类型的控件组成的数组。
控件数组的建立:在设计时的窗体上,通过对某控件的复制和粘贴操作:在程序运行时通过Load方法实现。
控件数组元素:由控件的Index属性值表示数组的F标。
5.数组的操作
应掌握的基本操作有:数组初始化、数组输入、数组输出、求数组中的最大(最小)元素及下标、求和、平均值、排序和查找等。
5.2 常见错误和难点分析
1.Dim数组声明
有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段:
n=InputBox("输入数组的上界")Dim a(1 To n) As Integer
程序运行时将在Dim语句处显示”要求常数表达式”的出错信息。即Dim语句中声明的数组上,下界必须是常数,不能是变量。
解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:
Dim a() As Integern=InputBox ("输入数组的上界")ReDim a(1 To n)As Integer
2.数组下标越界
引用了不存在的数组元素,即下标比数组声明时的下标范围大或小即为越界。例如,要形成有如下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=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.数组维数错
数组声明时的维数与引用数组元素时的维数不一致。例如,下程序段为形成和显示3×5的矩阵:
Dim a(3,5) As LongFor i=1 To 3For j=1 To 5a(i)=i*jPrint a(i);"";Next jPrintNext i
程序运行到a(i)=i*j语句时出现”维数错误”的信息,因为在Dim声明时是二维数组,引用时的一个下标。
4.Aarry函数使用问题
Aarry函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组。赋值后的数组大小由赋值的个数决定。
例如,要将1,2,3,4,5,6,7这些值赋值给数组a,下表列出了三种错误及相应正确的赋值方法。
Aarry函数表示方法
5.如何获得数组的上界、下界
Aarry函数可方便地对数组整体赋值,但在程序中如何获得数组的-上界、下界,以保证访问的数组元素在合法的范围内,可使用UBound和LBound函数来决定数组访问。
在上例中,若要打印a数组的各个值,可通过下面程序段实现:
For i=Lbound(A) To Ubound(A)
Print a(i)
Next l
6.给数组赋值
VB6.0提供了可对数组整体赋值的新功能,方便了数组对数组的赋值操作。但真正使用不那么方便,有不少限制。数组赋值形式如下:数组名2=数组名1
这里的数组名2,实际上在前面的数组声明时,只能声明为Varian的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:
Dim数组名2() 或Dim数组名2 (下标)
程序在运行到上述赋值语句时显示”不能给数组赋值”的出错信息。
申明
非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!
博文欢迎转载,但请给出原文连接。
转自:http://wwww.hyit.edu.cn/edu/vb/study/index.htm
VB常见错误和难点分析相关推荐
- 硬件开发设计 - 焊接电路板,介绍焊接概念,焊接步骤,常见错误,难点等
焊接是硬件开发的基本功,硬件开发中常见问题除了电路设计问题,最大的就是手工焊接质量问题,而设计之初,所有的样板基本都要手工去焊接,当然一些大公司会设有焊接岗位,开发人员不需要自己去焊接,焊接功底也应该 ...
- Struts常见错误及原因分析
1 异常 javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login (/Login是你的action名字) 可 ...
- FindBugs常见错误介绍、分析、处理
FindBugs简单了解 FindBugs-IDEA是个好东西,它是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程 ...
- SAP UI5 应用开发教程之三十九 - SAP UI5 应用出现白屏的一些常见错误和分析方法分享试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- VB速查大全(数据库、表格及报表编程) ★ VB错误处理,ado常见错误,VB数据类型等,网上有很多教程是错的,强烈建议看此文
■ 学新的编程语言先仔细看该语言案例教程或从入门到精通的书.对具体语句.函数及可使用对象不了解或忘记的,可在该编程语言的"参考手册"中检索. <如果资料为电子书时,即使不知道 ...
- c51单片机汇编语言语法错误,单片机汇编语言常见错误知识点分析
描述 汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的惟一语言.因而对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的.至于很多需要 ...
- 为什么c语言加法错误,分数的加减法——C语言初学者代码中的常见错误与瑕疵(12)...
重构 题目的修正 我抛弃了原题中"其中a, b, c, d是一个0-9的整数"这样的前提条件,因为这种限制毫无必要.只假设a, b, c, d是十进制整数形式的字符序列. 我也不清 ...
- 万字长文深解金融科技50强、Gartner报告指出企业区块链十大常见错误 | AI金融评论周刊...
业界 万字长文深解金融科技50强:Fintech领域上半场余热未散,下半场大战即将打响 在毕马威Fintech 50强的研讨会上,高瓴资本的董事总经理洪婧女士提到:"Fintech领域分为上 ...
- A/B测试中我们都会犯的十个常见错误
2019-11-29 20:51:46 作者:Romain AYRES 编译:ronghuaiyang 导读 这篇博客文章的目的不是告诉你在运行A/B测试时应该做什么,而是告诉你不应该做什么. &qu ...
最新文章
- 研究揭秘:神经网络越大、表现越好的“神秘力量”
- xshell如何登陆数据库_Xshell连接远程服务器和操作数据库
- VB操作excel文件
- 计算机网络第三章-数据链路层
- freemarker常见语法大全
- valgrind 内存泄漏_应用 AddressSanitizer 发现程序内存错误
- 电子科学与技术与计算机专业,计算机科学与技术专业和电子科学与技术专业,哪个好些?...
- 整理了一个带语法高亮显示,及到处html功能的richtextbox控件
- es6 数组去重,数组里面的对象去重
- win11中gpedit.msc找不到文件怎么办 windows11gepdit.msc找不到文件的解决方法
- Xcode9安装插件,xcode9安装使用Alcatraz
- Java基础--数值和字符串
- RGB图灰度及通道理解
- [unity]实现切水果游戏
- c语言中表明空格的是什么代码,C语言代码中的空白符表示什么
- HTML5+Downloader文件下载
- php音视频同步,FFMPEG转码音视频不同步情况总结
- Vue动态绑定class
- 端口光电口转换和光功率查看命令 (思科 锐捷 华为 华三)
- 易基因|m6A去甲基化酶ALKBH5通过降低PHF20 mRNA甲基化抑制结直肠癌进展 | 肿瘤研究