VB 里 步长不能被上限整除时会怎么样?

For i=1 To 88 Step 3
那么在i取到87以后下再加3会出现大于88,这时候i实际是取90还是88不动了?

常考的内部函数:
ASC:返回一个 Integer,代表字符串中首字母的字符代码。
例:ASC("A")=65

ABS:返回参数的绝对值,其类型和参数相同
例:Abs(-50.3)=50.3

SGN:返回一个 Variant (Integer),指出参数的正负号。
例:MySign = Sgn(5) ' 返回 1。
MySign = Sgn(-6) ' 返回 -1。
MySign = Sgn(0) ' 返回 0。

Sqr:返回一个 Double,指定参数的平方根。
例:MySqr = Sqr(4) ' 返回 2。

space:返回特定数目空格的 Variant (String)。
例:Dim MyString
' 返回 10 个空格的字符串。
MyString = Space(10)

' 将 10 个空格插入两个字符串中间。
MyString = "Hello" & Space(10) & "World"

spc:与 Print # 语句或 Print 方法一起使用,对输出进行定位。用spc(n)函数可以跳过n个空格。
例:print "abc";spc(n);"def"
但是注意:print "abc"+spc(n)+"def"则是错误的而print "abc"+space(n)+"def"则是正确的,spc不能用于表达式。

instr:返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置
格式:instr([首字符位置,]字符串1。字符串2,[,n])
n用来指定字符串比较方式。
n=0时,进行二进制比较,区分大小写。(默认)
n=1时,比较时忽略大小写
n=2时,则基于数据库中包含的信息进行比较,这个很少会考到。
例:instr(4,"space","e",1) '返回5,意思是在space的第四个字符开始查找字符e,并忽略大小写,返回结果表示e的位置在space的第五个字符,要注意的是instr要数空格,比如space前有2个空格,那么返回的就是7了。

left:返回 Variant (String),其中包含字符串中从左边算起指定数量的字符。
例:left("abcde",3) '返回的是abc
right:返回 Variant (String),其中包含从字符串右边取出的指定数量的字符。
例:right("abcde",3) '返回的是cde
mid:返回 Variant (String),其中包含字符串中指定数量的字符
例:mid("abcdehjgd",3,4) '返回的是cdeh,意思是从字符串中的第3个字符开始取4个字符。
注意:这三个函数是要数空格的;
还有这里mid是个函数,mid还可以是个字符串语句,其格式为mid$(字符串,位置[,L])=子字符串,意思是把从“字符串”的位置开始的字符用子字符串代替,如果有L自变量,则替换的内容是子字符串左部的L个字符。

ucase:把小写字母转换为大写字母
例:ucase("fkjf") '返回FKJF
Lcase:把大写字母转换为小写字母
例:lcase("jJKg") '返回jjkg

lbound:返回一个 Long 型数据,其值为指定数组维可用的最小下标。
例:Dim Lower
Dim MyArray(1 To 10, 5 To 15, 10 To 20) '声明数组变量。
Dim AnyArray(10)
Lower = Lbound(MyArray, 1) '返回 1。
Lower = Lbound(MyArray, 3) '返回 10。
Lower = Lbound(AnyArray) '返回 0 或 1,取决于
'Option Base 的设置。

ubound:返回一个 Long 型数据,其值为指定的数组维可用的最大下标。
例:Dim Upper
Dim MyArray(1 To 10, 5 To 15, 10 To 20) '声明数组变量。
Dim AnyArray(10)
Upper = UBound(MyArray, 1) '返回 10。
Upper = UBound(MyArray, 3) '返回 20。
Upper = UBound(AnyArray) '返回 10。

ltirm,rtirm,tirm:分别是删除字符串左边的,右边的,和左右两边的空白字符函数
例:a$=ltirm(" jkl ") '返回的是 "jkl "
b$=rtirm(" jkl ") '返回的是 " jkl"
c$=tirm(" jkl ") '返回的是 "jkl"

val:把字符串中的数字转换成数值型数据。
例:在text1中输入1,text2中输入2,但是print text1.text+text2.text 的结果是12,这是因为在text中输入的结果是字符型的,但如果改为print val(text1.text)+val(text2.text),则结果是3

int(number),fix(number):返回参数的整数部分,不进行四舍五入,但注意Cint函数要四舍五入。Int 和 Fix 的不同之处在于,如果 number 为负数,则 Int 返回小于或等于 number 的第一个负整数,而 Fix 则会返回大于或等于 number 的第一个负整数。例如,Int 将 -8.4 转换成 -9,而 Fix 将 -8.4 转换成 -8。
例:int(-8.4)=-9
fix(-8.4)=-8

rnd:返回一个包含随机数值的 Single
在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。

为了生成某个范围内的随机整数,可使用以下公式:

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。

(2)计算:
要记住顺序,其实跟我们平时的计算差别没多大区别,要注意的是函数最先计算
浮点除法(/)先于整数除法(\),
mod运算在乘除和加减之间。
整数除法要先进行四舍五入,再进行整除,除后的结果不进行四舍五入,直接截去。
较小的数\较大的数=0
较小的数mod较大的数=较小的数
字符串的比较:是按其ascii码值进行比较的,首先比较第一个字符,ascii码值大的字符所在字符串大,,若首字符相同,则比较第二个字符,依次类推。
这里给些相应的ascii码值:

大键盘的0~9的ascii码值为48~57
小键盘的0~9的ascii码值为96~105
a~z的ascii码值为97~122
A~Z的ascii码值为65~95
Esc的ascii码值为27
空格的ascii码值为32

(3)常考的控件属性
caption,name,width,height,enable这些不用说了吧。

left,top:当控件为窗体时,其值是相对于屏幕而言的;当控件为窗体内的控件时,其值是相对于窗体而言的。

(a)标签:alignment,autosize,borderstyle,backstyle

(b)文本框:passwordchar,scrollbars,text

其事件:change,gotfocus,lostfocus,
其方法:setfocus

(c)图形控件
stretch:此属性适用于图象框(image),但高教版的书上的解释跟msdn的解释是不同的,但我觉得应该以msdn为准,毕竟这是ms的嘛!
书上的是:当其值为false时,将自动放大或缩小图象框中的图形以与图象框的大小相适应。
msdn:True 表示图形要调整大小以与控件相适合。
False (缺省值)表示控件要调整大小以与图形相适。

图片框(pictrue)与图象框(image)的主要区别:图片框能够作为“容器”控件,就是说图片框可以包含其他控件,而图象框则不行;图片框可以接受文本,二图象框则不可以。

装入图形文件语句:[对象.]picture=loadpicture("文件路径"),当文件路径为空时,即可删除图片框中的图形。

(d)按钮控件
cancel:当此属性为true时,按esc键与单击该命令按钮的效果相同。
default:当此属性为true时,按回车键与单击该命令按钮的效果相同。

(e)选择控件
value:单选按钮可设置为true和false,但多选按钮则是0——表示没选择该复选框,1——表示选中该按钮,2——表示该复选框被禁止。

(f)选择控件
属性:
list:用来列出表项的内容,也可以用来改变数组中已有的值
listcount:列除列表框中表项的数量,列表框中表项的排列从0开始,最后一项的序号为listcount-1
listindex:该属性的设置值是已选中的表项的位置,表项位置由索引值指定,第一项的索引值为0。
selected:可以检查指定的表项是否被选择 列表框.selected (索引值)
可以选择指定的表项或已取消的表项 列表框.selected(索引值) =true|false
text:为最后一次选中的表项的文本
事件:
additem:用来在列表框中插入一行文本
列表框.additem 项目字符串[,索 引值]
removeitem:用来删除列表框中指定的项目
列表框.removeitem 索引值

组合框style属性:0——下拉式组合框,可以输入,可识别dropdown事件
1——简单组合框,可以输入,可识别dblclick事件
2——下拉式列表框,不允许输入,可识别dropdown事件

(g)滚动条
属性:
max,min:value 值在两者之间变化
largechange:单击滚动条中非滚动框部位时,value值增加或减少的增量值
smallchange:单击滚动条两端的箭头时,value属性增加或减少的增量值
value:表示滚动框条上的当前位置

事件:
scroll:当在滚动条内拖动滚动框时会触发scroll事件,但单击滚动箭头或滚动条时不发生此事件,
change:改变滚动框的位置后触发的,得到的是滚动条最后的值

(h)计时器
enable
intervar属性:用来设置计时器事件之间的间隔,值为1000时为1秒
timer事件:每经过一段由属性interval指定的时间间隔,就产生一个timer事件

(i)框架:没什么特别的考点,但还是要知道,我就考到了上机的题

(j)setfocus方法:设置焦点,不能直接在form-load事件中用setfocus,必须用show方法显示窗体先。格式:控件.setfocus
tab顺序:tabstop和tabindex

(4)现在说下控制结构的,这里的重点在于for循环结构
(a)单行结构:if ……then……[else……]end if或
块结构:if……then
……
[elseif……then
……]
else……
end if
这个没什么好说的,就是“如果……就…… ”
还有就是IIf函数,他是if ……then……else……end if的简写
格式:s=IIf(条件,true部分,false部分)意思是如果条件为真则返回true部分,为假则返回false部分。

(b)多分支控制结构
例:k=text1.text
select case k
case k……(1)'k的条件
执行命令(1)
case k……(2)
执行命令(2)
……
end select
这里要说的是它制执行第一个符合条件的命令,对于后面也符合条件的命令不执行,还右就是k的条件的写法,这个看下书就好了。

(c)当循环:当条件为真时执行语句块
格式:while 条件
[语句块]
wend

(d)do 循环控制结构:有两种格式
(I)Do
[语句块]
loop[while|until 循环条件]
意思分别是执行完语句块后当循环条件为真时继续循环,直到条件为假时结束循环;执行完语句块后直到当循环条件为真时结束循环

(II)Do [while|until 循环条件]
[语句块]
loop
意思分别是当循环条件为真时执行语句块直到条件为假时结束循环;直到循环条件为真时结束循环。
这个要注意的是他执行循环的次数和执行语句块后的语句块里定义的参数的值,要考率最后还有没多执行多一次循环。

例1:
i=1
do
i=i+2
loop until i>17
这里执行了9次,当i=17时还要执行多一次使i=19,这时i才大于17结束循环

例2:
i=1
do
i=1+2
loop whilei<17
这里执行了8次,当i=15时执行循环使i=17,此时i不小于17所以不再执行循环

(e)for循环控制结构
格式:for 循环变量=初值 to 终值 [step步长]
[循环体]
next 循环变量
意思是当循环变量在[初值,终值]内时执行循环
循环次数=int(终值-初值)/步长+1
计算的时候要记得循环变量每执行完一次循环要加步长

当for循环用于多重循环时和和数组结合时比较复杂,现在举些例子吧
例1:for i=1 to 2
for j=1 to i
for k=j to 4
x=x+1
'print x '记为x1
next k
'print x '记为x2
next j
'print x '记为x3
next i
'print x '记为x4
这里我想说的是print x的位置与输出值的关系
当去掉'print x '记为x1这一行的第一个'时,执行结果是1234567891011(其实他是按竖着排列的),
当取掉'print x '记为x2这一行的第一个'时,执行结果是4 8 11(这也是竖着的)
当取掉'print x '记为x3这一行的第一个'时,执行结果是4 11(这也是竖着的)
当取掉'print x '记为x4这一行的第一个'时,执行结果是 11

为什么结果是这样呢?我们来分析下:
(I):当i=1,j=1,k=1 to 4,所以x=1,2,3,4,这里执行了四次循环
(II):
当i=2,j=1,k=

1 to 4,所以x=5,6,7,8(因为上一次循环已使x=4了,所以在这基础上再继续加1),这里也执行了四次循环
当i=2,j=2,k=2 to 4,所以x=9,10,11(因为k=j to 4=2 to 4),这里执行了三次循环

好了,现在回过头取去看看语句
可以看出x1的值是每次循环得到的值,所以得出的结论是在最内一层的for语句里,所得到的值是每次循环的值

x2的值分别是j=1,j=1和2时循环的值的最后一个

x3的值分别是i=1,i=2时循环的值的最后一个

x4的值是全部循环结束后的值11
自己可以在草稿纸上画画,你会更容易理解的!

例2:Private Sub Command1_Click()
For i=1 To 4
x=4
For j =1 To 3
x=3
For k=1 To 2
x=x+6
Next k
Next j
Next i
Print x
End Sub
解释:真的有作用的是
x=3
For k=1 To 2
x=x+6
Next k
因为print x在循环外,所以是最后一次循环的值,当i=4时,x=4,但j=3时,x被重新附值为3,所以x=4无效,执行最后两次循环(k=1to2),x=3+6,x=9+6所以最后值为15

例3:这一道是循环跟数组结合的题
Dim a(3, 3) As Integer
Private Sub Command1_Click() '调用数组(不知道这样说正不正确)
aaa
For m = 0 To 2
For n = 0 To 2
Print a(n, m);
Next n
Print '使当m=0,1,2时得到的值换行
Next m
End Sub
Private Sub aaa()'定义数组
For m = 1 To 3
For n = 1 To 3
a(m - 1, n - 1) = m + n + 1
Next n
Next m
End Sub
这里要说的是用for循环给数组赋值时,第一层对应于数组的行,第二层对应于数组的列,再根据a(m - 1, n - 1) = m + n + 1求出数组aaa()里每一个的值,可以按下面的方法写出来,这样就简单明了得多了。
n=1 2 3
m= 1 3 4 5
2 4 5 6
3 5 6 7

例4:这是课本上183页上的一道题
Private Sub Command1_Click()
x=5
for i=1 to 20 step 2
x=x+i\5
next i
print x
End Sub
这里要说的是大家不要忘了next i这里,每次循环完了后i都要加步长,i=1,3,5,7,9,11,13,15,17,19,而1\5=3\5=0,5\5=7\5=9\5=1……

(f)关于传值跟传地址的问题
就是要记住:byval:形参改变时,实参不改变
byref:形参改变时,实参随之改变
这个也学得不是很好,大家学习时积累点经验吧!

二。上机部分
上机就是要做些模拟题,好象考的题里有很多都是以前考过的,在很多模拟题里有见过,而且考得如何还要靠运气,抽到容易的题过就应该没问题了,难的就惨了,所以要做多点模拟题。还有上机考试在要你读写文件时有一个小技巧的!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-14
最好自己单步执行试试!
i不可能为87,执行29次后i=1+3*29=88,所以会再执行一次,所以循环共执行(88-1)/3+1=30次.
退出时i=88+3=91.本回答被提问者采纳
第2个回答  2011-03-15
循环中到87结束
退出循环后是91
第3个回答  2011-03-14
实际上是91
相似回答