=90ThenIfmark>=90ThenPrint"Print"不及格"Pri"/> =90ThenIfmark>=90ThenPrint"Print"不及格"Pri"/>
首页 vb中的常见错误与分析汇总

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

举报
开通vip

vb中的常见错误与分析汇总常见错误和难点分析•在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的EndIf语句结束。否则,在运行时系统会显示"块If没有EndIf"的编译错误。同样对SelectCase语句也应有与其相对应的EndSelect语句。•多边选择Elself关键字的书写和条件表达式的表示多边选择Elself子句的关键字Elself之间不能写有空格,即不能写成ElseIf=90Thenfmark=60ThenIfmark>=90ThenIfmark>=90ThenPrint"Print"不及格"Pri...

vb中的常见错误与分析汇总
常见错误和难点分析•在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的EndIf语句结束。否则,在运行时系统会显示"块If没有EndIf"的编译错误。同样对SelectCase语句也应有与其相对应的EndSelect语句。•多边选择Elself关键字的书写和条件 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式的表示多边选择Elself子句的关键字Elself之间不能写有空格,即不能写成ElseIf<在多个条件表达式的表示时,应从最小或最大的条件依次表示,以避免条件的过滤。例如,已知输入某课程的百分制成绩mark,要求显示对应五级制的讦定,评定条件如下:有以下几种表示方式,语法上都没有错,但执行后结果有所不同,请分析哪些正确?哪些错误?下面给出的 答案 八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案 中,方法一、二、五正确,其余错误,请分析各自的原因。方法一:方法二:方法三:方法四:五:方fmark>=90Thenfmark<60ThenIfmark>=60ThenIfmark>=90ThenIfmark>=90ThenPrint"Print"不及格"Print"Print"Pr优"ElseIfmark<70Then及格"优“优"ElseIfmark>=80ThenElseIfmark>=70ThenElseIf80<=mark<90ElseIf80<=markAndPrint"Thenmark<90ThenPrint"及格“Print"良“ElseIfmark<80Then中"良“Print"良"PrElseIfmark>=70ThenElselfmark>=80ThenPrint"ElseIf70<=mark<80ElseIf70<=markAndPrint"中"Print"Thenmark<80Then中"ElseIfmark<90Then良“Print"PrElselfmark>-60ThenPrint"Elselfmark>=90Then中"良“Print"Print"ElseIf60<=mark<70及格“Else优"ThenElsePrint"ElsePrint"优"及格"Print"Print"及格“EndIf不及格"ElseEndIfEndIfPrint"不及格"EndIf中"Elself60<=markAndmark<70ThenPr及格"ElsePr不及格”EndIf3.SelectCase语句的使用(1)"表达式列表i"中不能使用"变量或表达式"中出现的变量例如,上述多边选择的例子改为SelectCase语句实现,方法一Case子句中出现变量mark,运行时不管mark的值多少,始终执行CaseElse子句,运行结果不正确;方法二、方法三正确。方法一:方法二:方法三:SelectCasemarkSelectCaseSelectCasemarkmarkCaseCaseIs>=90mark>=90CaseIs>=90PrinPrint"Print"优"优"t"优"Case80To89Casemark>=80Casels>=80Print"良"Print"良"t"良PrinCase70To79Casemark>=70IIPrint"中"CaseIs>=70Print"Case60TO69中"PrinPrinCasemark>=60t"中"t"及格"Print"CaseIs>=60CaseElse及格"CaseElsePrim"及格"Print"不及格"Print"CaseElseEndSelect不及格"EndSelectPrint"不及格"EndSelect⑵在"变量或表达式"中不能出现多个变量。实验三第5题对三门课程奖学金的判断,只能用If语句的多边选择,而不能用SelectCase语句实现。例如,有人用如下语句表示:SelectCasemarkl,mark2,mark3Case(markl+mark2+mark3)/3>=95Print"一等奖"EndSelect这样就会在"SelectCasemarkl,mark2,mark3"语句行出现编辑错误,同时Case(markl+mark2+mark3)/3>=95书写也错误。第四章常见错误和难点分析1.不循环或死循环的问题主要是循环条件、循环初值、循环终值、循环步长的设置有问题。例如,以下循环语句不执行循环体:Fori=10To20Step-1步长为负,初值必须大于等于终值,才能循环DoWhileFalse'循环条件永远不满足,不循环例如,以下循环语句死循环:Fori=10To20Step0'步长为零,死循环DoWhile1'循环条件永远满足,死循环2.循环结构中缺少配对的结束语句For…Next语句没有配对的Next语句;Do语句没有一个终结的Loop语句等。3.循环嵌套时,外循环交叉ForI=1to4Forj=1to5NextiNextj上述循环的交叉运行时显示"无效的Next控制变量引用"。4.累加、连乘时,存放累加、连乘结果的变量赋初值问题(1)一重循环在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。例如,求1〜100的3的倍数和,结果放入Sum变量中,如下程序段,输出结果如何?应作如何改进?PrivateSubForm_Click()Fori=3To100Step3Sum=0Sum=Sum+iNextiPrintSumEndSub(2)多重循环在多重循环中,存放累加、连乘结果的变量初值设置放在外循环语句前,还是循环语句前,这要视具体问题分别对待。例如,期末30位学生参加三门课程的考试,求每个学生的三门课程的平均成绩如下程序能否实现?aver=0Fori=1To30Forj=1To3m=InputBox("输入第"&j&"门课的成绩")aver=aver+mNextjaver=aver/3PrintaverNextI第五章常见错误和难点分析1.Dim数组声明有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段:n=InputBox("输入数组的上界")Dima(1Ton)AsInteger程序运行时将在Dim语句处显示"要求常数表达式"的出错信息。即Dim语句中声明的数组上,下界必须是常数,不能是变量。解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:Dima()AsIntegern=InputBox("输入数组的上界")ReDima(1Ton)AsInteger2.数组下标越界引用了不存在的数组元素,即下标比数组声明时的下标围大或小即为越界。例如,要形成有如下30项的斐波那契数列:1,1,2,3,5,8,13,21,34,…,317811,514229,832040正确的程序段如下:Dima(1To30)AsLong,i%若将Fori=3To30改为Fori=1To30,程序运行时会显示"下标越界"的出错信息,因为开始循环时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.数组维数错数组声明时的维数与引用数组元素时的维数不一致。例如,下程序段为形成和显示3X5的矩阵:Dima(3,5)AsLongFori=1To3Forj=1To5a(i)=i*jPrinta(i);"";NextjPrintNexti程序运行到a(i)=i*j语句时出现"维数错误"的信息,因为在Dim声明时是二维数组,引用时的一个下标。4.Aarry函数使用问题Aarry函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组。赋值后的数组大小由赋值的个数决定。例如,要将1,2,3,4,5,6,7这些值赋值给数组a,下表列出了三种错误及相应正确的赋值方法。Aarry函数表示方法错误的Aarry函数赋值,改正的Aarry函数赋值Dima(1To8)a=Array(1,2,3,4,5,6,7,8)Dima()a=Array(1,2,3,4,5,6,7)DimaAsntegera=Array(1,2,3,4,5,6,7)Dimaa=Array(1,2,3,4,5,6,7)Dimaa()=Array(1,2,3,4,5,6,7)Dimaa=Array(1,2,3,4,5,6,7)5.如何获得数组的上界、下界Aarry函数可方便地对数组整体赋值,但在程序中如何获得数组的-上界、下界,以保证访问的数组元素在合法的围,可使用UBounc和LBound函数来决定数组访问。在上例中,若要打印a数组的各个值,可通过下面程序段实现:Fori=Lbound(A)ToUbound(A)Printa(i)Nextl6.给数组赋值VB6.0提供了可对数组整体赋值的新功能,方便了数组对数组的赋值操作。但真正使用不那么方便,有不少限制。数组赋值形式如下:数组名2=数组名1这里的数组名2,实际上在前面的数组声明时,只能声明为Varian的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:Dim数组名2()或Dim数组名2(下标)程序在运行到上述赋值语句时显示"不能给数组赋值"的出错信息。第五章数5.1知识要点1.数组的概念数组:存放具有相同性质的一组数据,也就是数组中的数据必须是同一个类型和性质。数组元素:数组中的某一个数据项。数组元素的使用同简单变量的使用。2.静态数组的声明静态数组:在声明时已确定了数组元素个数。声明形式:Dim数组名([下界To]上界[,[下界To]上界[,…]])As类型此语句声明了数组名、数组维数、数组大小、数组类型。[注意]下界、上界必须为常数,不能为表达式或变量:省略下界,默认为0,也可用OptionBase语句重新设置下界的值。3.动态数组的声明声明形式:Dim数组名()ReDim[Preserve]数组名([下界To]上界[,[下界To]上界[,…]])[注意]此时的上界、下界可以是赋了值的变量或表达式。若有Preserve关键字,表示当改变原有数组最末尾的大小时,使用此关键字可以保持数组中原来的数据。4.控件数组即相同类型的控件组成的数组控件数组的建立:在设计时的窗体上,通过对某控件的复制和粘贴操作:在程序运行时通过Load方法实现。控件数组元素:由控件的Index属性值表示数组的F标。5.数组的操作应掌握的基本操作有:数组初始化、数组输入、数组输出、求数组中的最大(最小)元素及下标、求和、平均值、排序和查找等。5.2常见错误和难点分析Dim数组声明有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段:n=InputBox("输入数组的上界")Dima(1Ton)AsInteger程序运行时将在Dim语句处显示"要求常数表达式"的出错信息。即Dim语句中声明的数组上,下界必须是常数,不能是变量。解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:Dima()AsIntegern=InputBox("输入数组的上界")ReDima(1Ton)AsInteger数组下标越界引用了不存在的数组元素,即下标比数组声明时的下标围大或小即为越界。例如,要形成有如下30项的斐波那契数列:正确的程序段如下:Dima(1To30)AsLong,i%若将Fori=3To30改为Fori=1To30,程序运行时会显示"下标越界"的出错信息,因为开始循环时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.数组维数错数组声明时的维数与引用数组元素时的维数不一致。例如,下程序段为形成和显示3X5的矩阵:Dima(3,5)AsLongFori=1To3Forj=1To5a(i)=i*jPrinta(i);"";NextjPrintNexti程序运行到a(i)=i*j语句时出现"维数错误"的信息,因为在Dim声明时是二维数组,引用时的一个下标。4.Aarry函数使用问题Aarry函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组。赋值后的数组大小由赋值的个数决定。例如,要将1,2,3,4,5,6,7这些值赋值给数组a,下表列出了三种错误及相应正确的赋值方法。Aarry函数表示方法错误的Aarry函数赋值,改正的Aarry函数赋值Dima(1To8)a=Array(1,2,3,4,5,6,7,8)Dima()a=Array(1,2,3,4,5,6,7)DimaAsntegera=Array(1,2,3,4,5,6,7)Dimaa=Array(1,2,3,4,5,6,7)Dimaa()=Array(1,2,3,4,5,6,7)Dimaa=Array(1,2,3,4,5,6,7)5•如何获得数组的上界、下界Aarry函数可方便地对数组整体赋值,但在程序中如何获得数组的-上界、下界,以保证访问的数组元素在合法的围,可使用UBounc和LBound函数来决定数组访问。在上例中,若要打印a数组的各个值,可通过下面程序段实现:Fori=Lbound(A)ToUbound(A)Printa(i)Nextl6•给数组赋值VB6.0提供了可对数组整体赋值的新功能,方便了数组对数组的赋值操作。但真正使用不那么方便,有不少限制。数组赋值形式如下:数组名2=数组名1这里的数组名2,实际上在前面的数组声明时,只能声明为Varian的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:Dim数组名2()或Dim数组名2(下标)程序在运行到上述赋值语句时显示"不能给数组赋值"的出错信息。
本文档为【vb中的常见错误与分析汇总】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_179289
暂无简介~
格式:doc
大小:23KB
软件:Word
页数:13
分类:
上传时间:2021-11-18
浏览量:0