二道vb编程题,代码什么意思,看不懂?详细解释一下,谢谢!!
发布网友
发布时间:2022-05-10 15:23
我来回答
共5个回答
热心网友
时间:2023-10-13 11:49
Private Sub Command1_Click()
Dim a() '定义a为数组
a = Array(7, 8, 9, 10) '给数组添加四个值
For k = 0 To 2 Step 0.5 '循环中k的值按顺序为0,0.5,1,1.5,2
s = s + a(k) '累加a(k),但元素数不是小数,所以a(k)的值依次为a(0),a(0),a(1),a(2),a(2),即7+7+8+9+9=40 注意,只有大于1的时候,小数才使用四舍五入而变为整数,系统默认将0.5取整变为0
Next k
Print s '打印结果
End Sub
Dim j '定义变量j
For j = 1 To 13 Step 2 '本来j的值是1,3,5,...,13,但是……
j = j * 3 - 1 '赋j值为自身的三倍减一
Print j '打印结果
Next j '注意!此时j值已改变,见下面分析。
循环头 运算 打印 循环变量累加 下一个循环的j值
j=1 >>> j=j * 3 - 1 >>> j=2 >>>(Next) j=j + 2 >>> j=4
j=4 >>> j=j * 3 - 1 >>> j=11 >>>(Next) j=j + 2 >>> j=13
j=13 >>> j= j * 3 - 1 >>> j=38 >>>(Next) j=j + 2 >>> j= 40 此时j已大于13,退出循环
明白了吧,因为循环变量在循环里面值被改变,所以未能按照1,3,5,... ,13的顺序变化,而是跳跃了。
热心网友
时间:2023-10-13 11:50
Private Sub Command1_Click()
Dim a() //定义数组a
a = Array(7, 8, 9, 10) //给数组元素0到3赋值7到10
For k = 0 To 2 Step 0.5 //for循环,k从0到2,每次累加0.5,就是一共执行for里的语句5次
s = s + a(k) //这里,s是求和累加器,比如第一次k=0,s就取数组元素0的值7,第二次k=0.5(本应该是四舍五入得1,可因为这是整型数,vb到x.6才会进为1,另外k只有取1.5的时候会自动向前进为2,别的都不会,我也不知是什么原因...是不是叫bug呢呵呵,无语),s取数组元素1的值8。所以s的整个累加过程为7+7+8+9+9=40,对应了a(0)+a(0)+a(1)+a(2)+a(2)
Next k //下一个k值
Print s //最终打印s的值
End Sub
Dim j
For j = 1 To 13 Step 2 //for循环,从1开始到13结束,每轮j累加2
j = j * 3 - 1 //第一轮,j=1,计算后j=1*3-1=2。第二轮,j=2+2(由于开头的step2)=4,j=4*3-1=11。第三轮,j=11+2=13(也由于开头的step2,累加2的步长),j=13*3-1=38。(由于之前到了j的终值13,所以不会继续循环)
Print j //打印j的值
Next j
够详细了吧?
热心网友
时间:2023-10-13 11:50
就是For循环的应用,step就是步长,就是从1到3,3到5,5到7,以此类推
for 循环
for [变量]=[起始量] to [终止量]{step [步长]}
[中间代码]
.............
next [变量]
其中{}中是可以省略的,默认为1
热心网友
时间:2023-10-13 11:51
从0开始s=a(0)+a(0.5)+a(1)+a(1.5)+a(2)
因为a = Array(7, 8, 9, 10)
所以s=7+7+8+9+9=40
第二个注意了,他的循环变量是j,但在循环体中j又是在变的
第一次循环时j=1,那么输出j=1*3-1=2
第二次循环时j=4(之前2再加步长2),那么输出j=4*3-1=11
第三次循环时j=13(之前11再加步长2),那么输出j=13*3-1=38
推荐你在VB上下断点跟踪下就出来了
热心网友
时间:2023-10-13 11:52
从0开始s=a(0)+a(0.5)+a(1)+a(1.5)+a(2)
因为a = Array(7, 8, 9, 10)
所以s=7+7+8+9+9=40
第二个注意了,他的循环变量是j,但在循环体中j又是在变的
第一次循环时j=1,那么输出j=1*3-1=2
第二次循环时j=4(之前2再加步长2),那么输出j=4*3-1=11
第三次循环时j=13(之前11再加步长2),那么输出j=13*3-1=38