vb经典程序例题及分析,五道VB程序结果分析,求分析过程以及答案,谢谢!
vb经典程序例题及分析,五道VB程序结果分析,求分析过程以及答案,谢谢!详细介绍
本文目录一览: 五道VB程序结果分析,求分析过程以及答案,谢谢!
分太少。题太多。
不
简要说说。
8.先通过弹出的对话窗,把值赋给x,然后根据IIf()语句给y赋值。这段程序中,IIf(x>=0,1-2*x,1+x)语句是先判断x>=0是否为真,如果为真,则将1-2*x的值赋给y,否则赋1+x的值。最后打印出y的值,所以x的值为3的话,打印结果为-5。
9.这段程序呢是个do until的循环体,先执行循环语句i=i+3:x=x+5,再判断是否达到退出循环条件i>7。开始被赋值12,执行完循环语句后i为15,x为12,满足退出循环条件。退出循环后,i和x的值就被输出到文本框中,即为15、12。
10.先通过Int(Rnd()+4)给x赋值。首先Rnd()这个函数是产生0到1之间的某个小数(包括0),Int()这个函数是取一个数的整数部分,所以Int(Rnd()+4)结合使用产生的值是4,并赋给了x。然后select case x语句根据x的取值来决定输出是什么,由于x为4,所以输出case 4下面跟着的一条语句Print “good”,打印结果为good。
11.这也是个循环体,do while型,但它是先进行条件判断,满足条件再执行循环语句。x最开始赋值为0,满足x<60,进入循环,执行一遍x=(x+3)*(x+4)和n=n+1(这里n没有赋初值,我就默认为0啦)后,x为12,n为1。然后接着进行条件判断,仍然满足x<60,所以再执行一遍循环语句,之后x为240,n为2。然后再判断条件,x<60不满足,所以就退出循环。再把n、x的值输出到文本框1、2(str()函数是把一个数值量变为一个字符量),再把x+n的值输出到文本框3。所以三个框的值依次为2、240、242。
12.x先赋值为869,然后执行a=x Mod 10,Mod 为取余数运算,x Mod 10即为x除以10后的余数),a=9。然后b=(x Mod 100)\10,这里\为取商运算,x Mod 100结果为69,69除以10后商为6,所以b为6。最后c=x\100,即为8,之后文本框2输出a*100+b*10+c,结果为968。所以这段程序就是把输入的一个三位数倒着输出去。
注意下次别一次问5个题。。。会累死答题的。
五道VB程序分析题,答案有,求大神给分析一下程序过程,急!
8、输入一个数X,如果X>=0,则Y=1-2*X,否则的话Y=1+X
9、循环,直到i大于7,每次循环i增加3,X增加5
10、RND函数是返回一个0—1之间的
随机数
,所以取整后X为4(只取
整数部分
),输出结果必为GOOD
11、循环,每一次循环X=(X+3)*(X+4),N为循环次数,循环直到X>=60为止,输出N,X及和
12、X为字符框内数字,A为X除10求余,B为X除10求余后再除以10,C为X除100,因为均为整数型,所以最后结果都必须取整(四舍五入)
高分寻求高手帮忙解决一下VB的题,答案及解释一下各语句的意思,谢谢!
1. 10
2. 1 3.4 5.8
3. 9 9
4. 20 40
你不会一句都看不懂吧?
Private Sub command1_click()
n = Text1.Text 'n=10
Select Case n '对N进行判断
Case 1 To 20 '如果N在1到20的范围里
x = 10
Case 2, 4, 6 '如果N=2或4 或6
x = 20
Case Is < 10 '如果小于10
x = 30
Case 10 '如果等于10
x = 40
End Select
Text2.Text = x '显示X值到TEXT2中
End Sub
输入10后返回10
*****************************************
Private Sub Command1_Click()
Dim num As Integer '定义其为整数型
num = 1 '它等于1
Do Until num > 6 '在它小于6时一直循环
Print num '显示这个值
num = num + 2.4 '这个值再加上2.4
Loop
End Sub
运行结果是
1
3
5
'因为它是整数,所以小数部份不显示了.
************************************************
Private Sub command1_click()
Dim a As Integer, s As Integer '定义两个整型变量
a = 8
s = 1
Do
s = s + a
a = a + 1
Loop While a <= 0 '当A小于等于0时退出DO循环
Print s; a
End Sub
'第一次S=1+8=9,A=8+1=9 就退出循环,所以显示
9 9
*****************************************
Public Function f(x As Integer) '函数接收参数X
Dim y As Integer
x = 20 '重新赋值X,舍弃了传递过来的X=10,因为是Static变量,它在这个窗体内通用,同时也改变了下面过程中的X值
y = 2
f = x * y '反回值20*2=40
End Function
'在窗体上画一个名称为command 1 的命令按钮,然后编写如下事件过程。
Private Sub command1_click()
Static x As Integer '定义变量X
x = 10 'X=10
y = 5
y = f(x) 'y=F(本过程的X),把参数X传递到上面的函数中去
Print x; y '显示
End Sub
结果是
20 40
vb程序题
程序不是很难,不过这题很容易搞错!
分析:
1、由于s先被赋值16个的字符串,那么ten(s)=16,所以for循环16次。但是题目只问第一行和第三行,那么只要分析第一次和第三次就可以了。
2、mid函数是截取函数,例如:mid(”1234“,1,2)就是从第1个字符开始,共截取2个字符,得到的结果是:“12”。注意n()是一个数组,程序定义n(9)表示数组有9个成员:分别是从n(0)到n(8)。
3、循环分析:
第一次循环:i=1,那么s1=mid(s,1,1)=”1“,由于1大于0,小于9,通过IF语句,所以j=1,n(1)=1。
第二次循环:i=2,那么s1=mid(s,2,1)=”2“,由于2大于0,小于9,通过IF语句,所以j=2,n(2)=1。
第二次循环:i=3,那么s1=mid(s,3,1)=”3“,由于3大于0,小于9,通过IF语句,所以j=3,n(3)=1。
解释:虽然n(j)在自加1,但是数组中的成员互不干扰,且数组成员的初始值默认为0。
4、输出结果:
注意j循环要输出的结果是:j的值及数组成员从n(0)到n(8)的值(n(9)无效),而且j的值在循环中被重新赋值,这样j的值就与上面的i循环无关了,j的值按照循环依次是0-9.
j循环第一次输出的是:j:n(0)即0:0,解释:n(0)默认初始值的是0.
j循环第二次输出的是:j:n(1)即1:1
j循环第三次输出的是:j:n(1)即2:1
vb习题解答
1.
输出:
4
5
6
7
过程:
Dim a As Integer [a = 0 ]
a = 2 [a = 2 ]
For i = i To 3 [For i =0 To 3]
>> [i = 0 ]
>> Print F(a) {{
>> >> [F( 2 )]
>> >> b = 0 [b = 0 ]
>> >> Static c [c =""]
>> >> b = b + 1 [b = 0 + 1 = 1 ]
>> >> c = c + 1 [c = 0 + 1 = 1 ]
>> >> 返回 F = a + b + c [F = 2 + 1 + 1 = 4 ]
>> >> F函数结束
>> ** }} [Print " 4 "]
>> For 一次循环结束=================
>> [i = 1 ]
>> Print F(a) {{
>> >> [F( 2 )]
>> >> b = 0 [b = 0 ]
>> >> Static c [c = 1 ]
>> >> b = b + 1 [b = 0 + 1 = 1 ]
>> >> c = c + 1 [c = 1 + 1 = 2 ]
>> >> 返回 F = a + b + c [F = 2 + 1 + 2 = 5 ]
>> >> F函数结束
>> ** }} [Print " 5 "]
>> For 一次循环结束=================
>> [i = 2 ]
>> Print F(a) {{
>> >> [F( 2 )]
>> >> b = 0 [b = 0 ]
>> >> Static c [c = 2 ]
>> >> b = b + 1 [b = 0 + 1 = 1 ]
>> >> c = c + 1 [c = 2 + 1 = 3 ]
>> >> 返回 F = a + b + c [F = 2 + 1 + 3 = 6 ]
>> >> F函数结束
>> ** }} [Print " 6 "]
>> For 一次循环结束=================
>> [i = 3 ]
>> Print F(a) {{
>> >> [F( 2 )]
>> >> b = 0 [b = 0 ]
>> >> Static c [c = 3 ]
>> >> b = b + 1 [b = 0 + 1 = 1 ]
>> >> c = c + 1 [c = 3 + 1 = 4 ]
>> >> 返回 F = a + b + c [F = 2 + 1 + 4 = 7 ]
>> >> F函数结束
>> ** }} [Print " 7 "]
>> For 一次循环结束=================
2.
输出:
24
过程:
Dim n As Long [n = 0 ]
Dim r As Long [r = 0 ]
n = InputBox(..) [n = 234]
n = CLng(n) [n = CLng(234) = 234]
r = fun(n) [r = fun( 234 )] {{
>> [fun(ByVal num= 234 )]
>> Dim k As Long [n = 0 ]
>> k = 1 [k = 1 ]
>> num = Abs(num) [num = Abs( 234 ) = 234 ]
>> Do While num [num= 234 =True]
>> >> k=k*(num Mod 10) [k= 1 *( 234 Mod 10)= 4
>> >> num=num \10 [num= 234 \10= 23
>> >> Do While 循环一次结束,num= 23 =True==============
>> >> k=k*(num Mod 10) [k= 4 *( 23 Mod 10)= 12
>> >> num=num \10 [num= 23 \10= 2
>> >> Do While 循环一次结束,num= 2 =True==============
>> >> k=k*(num Mod 10) [k= 12 *( 2 Mod 10)= 24
>> >> num=num \10 [num= 2 \10= 0
>> >> Do While 循环一次结束,num= 0 =False==============
>> >> Do While 循环结束
>> 返回 fun=k [fun= 24 ]
>> fun 函数结束
}}
** Print r [Print " 24 "]
vb程序阅读题,求详解
输出24
先来理解函数 f(m)
f(m)首先定义赋值b=1,那么每一次调用函数f,b都会被初始化为1
static c,定义静态变量c,每一次调用f,c的值都会被保留为上一次的赋值。
然后b被重新赋值为b+1,也就是2了,根据上面的解释,无论调用几次函数f,b+1永远都是2
然后c被重新赋值为c+1,根据上面解释,第一次调用f,c=0+1,第二次调用,c=1+1,第三次c=2+1……
函数f的结果,就是m*2*c。
函数f解释完成。
下面看主程序
主程序指明了i = 1 到 3,循环3次,每次都调用函数f(2)
f(2)第一次=m*2*c=2*2*1=4
f(2)第二次=m*2*c=2*2*2=8
f(2)第三次=m*2*c=2*2*3=12
那么
第一次sum=0+4=4
第二次sum= 4+ 8 = 12
第三次sum=12+12=24
所以结果就是24
VB编程这题有人会吗帮忙下谢谢!!好的就直接采纳了
VB代码:
Private Sub Form_Click()Dim s(35) As String, i&For i = 0 To 35If i Mod 6 = 0 Then Me.Print Chr(13) & Space(20 + 2 * (i \ 6));s(i) = Chr(i Mod 26 + 65)Me.Print s(i); Space(2);NextEnd Sub
分析题目: 需要用到的程序结构是循环: 打印字母,每行6个,一共6行, 那么就是打印36次, 所以循环应该是0到35次 或者1到36次;
需要用的主要运算是 Mod取模; \整除运算
Private Sub Form_Load()Form1.Show '窗口显示出来Print '换行.离上边框远点PrintDim i As Integer '定义一个整数iFor i = 0 To 35 '因为是6行,每行6个字母,所以就是循环36次 [0,35]If i Mod 6 = 0 Then Print Space(i \ 6 + 10); '每一行最前面的空格数量 (每一行的前面都再加10个空格,都离左边框远点)Print Chr(i Mod 26 + 65) + Space(1); '打印字母 并且输出一个空格If i Mod 6 = 5 Then Print '每打6个字母就换行一次NextEnd Sub
vb程序试题
1.10个*
2.0
3.3
第一题: 10 个
i 从 1~5
第一次 i=1, for j=2 to 1 不执行
第二次 i=2, for j=2 to 2 执行 1 次,输出 *
第三次 i=3, for j=2 to 3 执行 2 次,输出2个 *
...
第三次 i=5, for j=2 to 5 执行 4 次,输出4个 *
共输出 10 个
第二题:
'i=1~5
' i=1
' j=5~-5
' m=1+5, m=1+3, m=1+1, m=1+-1, m=1+-3, m=1+-5
' j 循环做 6 次 i 循环做 5 次 共 30 次
'当 i=5 时, 最后一次 j=-5
' m=5+-5
' 所以 m=0 , m=i+j 做了 30 次
最终m值是 0 , 执行了 30 次
第三题:
开始
a = 1: b = 1
a = 1 - 1 = 0: b = 2
a = 2 - 0 = 2: b = 3
a = 3 - 2 = 1: b = 4
a = 4 - 1 = 3: b = 5
b=5 退出此时 a=3
a 值是 3
VB编程题 求解答
第5题:将此段复制在代码窗口,再点击窗体即可。
Private
Sub
Form_click()
Dim
x%,
y%
For
x
=
10
To
99
For
y
=
x
+
1
To
99
If
scl(x,
y)
=
True
Then
Print
x;
"/";
y;
"符合要求!"
End
If
Next
y
Next
x
End
Sub
Function
scl(x
As
Integer,
y
As
Integer)
As
Boolean
Dim
a%,
b%,
c%,
d%,
e#,
f#
a
=
Right(Trim(Str(x)),
1)
b
=
Left(Trim(Str(y)),
1)
c
=
(x
-
a)
/
10
d
=
y
-
10
*
b
e
=
d
*
x
f
=
c
*
y
If
a
<>
b
Then
scl
=
False
ElseIf
e
<>
f
Then
scl
=
False
Else
scl
=
True
End
If
End
Function
Private Sub C1_Click()
For i = 0 To 2
If Op1(i).Value = True Then
Print "我的出生地是" + Op1(i).Caption
End If
Next
End Sub
vb程序设计题,请高手解答
注释步骤嘛,因为太累了,所以简写,估计能看个差不多
在窗体上放一个名为 text1 的TextBox控件,属性改为多行和带滚动条,再放一个按钮,按钮的响应程序如下:
Private Sub Command1_Click()
Const n = 30
Const m = 20
Dim a(n) As Integer, b(m) As Integer, c(m + n) As Integer
Dim i As Integer, j As Integer, k As Integer
For i = 1 To n
a(i) = 3 * i
Next i
For j = 1 To m
b(j) = 4 * j
Next j
i = n
j = m
p = 0 ' a数组取净标志
q = 0 ' b
For k = 1 To m + n
If a(i) >= b(j) And p = 0 Then ' a大取a
c(k) = a(i)
If i > 0 Then
i = i - 1
Else
p = 1
End If
ElseIf b(j) > a(i) And q = 0 Then ' b大取b
c(k) = b(j)
If j > 0 Then
j = j - 1
Else
q = 1
End If
End If
If p = 1 Then ' a用完取b
c(k) = b(j)
j = j - 1
End If
If q = 1 Then ' b用完取a
c(k) = a(i)
i = i - 1
End If
Next k
' 输出至 text1
Dim ts As String
For i = 1 To m + n
ts = ts + "i=" + Str(i) + ", c(i) = " + Str(c(i)) + Chr(13) + Chr(10)
Next i
Text1.Text = ts
End Sub
运行结果如下:
i= 1, c(i) = 90
i= 2, c(i) = 87
i= 3, c(i) = 84
i= 4, c(i) = 81
i= 5, c(i) = 80
i= 6, c(i) = 78
i= 7, c(i) = 76
i= 8, c(i) = 75
i= 9, c(i) = 72
i= 10, c(i) = 72
i= 11, c(i) = 69
i= 12, c(i) = 68
i= 13, c(i) = 66
i= 14, c(i) = 64
i= 15, c(i) = 63
i= 16, c(i) = 60
i= 17, c(i) = 60
i= 18, c(i) = 57
i= 19, c(i) = 56
i= 20, c(i) = 54
i= 21, c(i) = 52
i= 22, c(i) = 51
i= 23, c(i) = 48
i= 24, c(i) = 48
i= 25, c(i) = 45
i= 26, c(i) = 44
i= 27, c(i) = 42
i= 28, c(i) = 40
i= 29, c(i) = 39
i= 30, c(i) = 36
i= 31, c(i) = 36
i= 32, c(i) = 33
i= 33, c(i) = 32
i= 34, c(i) = 30
i= 35, c(i) = 28
i= 36, c(i) = 27
i= 37, c(i) = 24
i= 38, c(i) = 24
i= 39, c(i) = 21
i= 40, c(i) = 20
i= 41, c(i) = 18
i= 42, c(i) = 16
i= 43, c(i) = 15
i= 44, c(i) = 12
i= 45, c(i) = 12
i= 46, c(i) = 9
i= 47, c(i) = 8
i= 48, c(i) = 6
i= 49, c(i) = 4
i= 50, c(i) = 3
Private Sub Command1_Click()
Dim A() As Integer, N As Integer
Dim B() As Integer, M As Integer
Dim C() As Integer, NC As Integer
Dim I As Integer, J As Integer, TM As Integer
'……前面的关于A B数组什么来头我不写了 你知道的
'定义数组C大小
NC = M + N
rdim C(NC)
'把数组A装入C
For I = 1 To N
C(I) = A(I)
Next I
'把数组B装入C
For I = 1 To M
C(N + I) = B(I)
Next I
'对C进行从大到小排序
For I = 1 To NC - 1
For J = I + 1 To NC
If C(I) < C(J) Then
TM = C(I)
C(I) = C(J)
C(J) = TM
End If
Next J
Next I
End Sub
Option Explicit
Dim a(4), b(7), c(12)
Private Sub Command1_Click()
Dim i%, j%, k%, m%, n%
i = LBound(a): j = LBound(b): k = LBound(c)
m = UBound(a): n = UBound(b)
While i <= m And j <= n
If a(i) > b(j) Then
c(k) = a(i): i = i + 1: k = k + 1
Else
c(k) = b(j): j = j + 1: k = k + 1
End If
Wend
While k <= m + n - i - j + 1
If i > m Then
c(k) = b(j): j = j + 1: k = k + 1
Else
c(k) = a(i): i = i + 1: k = k + 1
End If
Wend
End Sub
理解错误了。。
Vb编程实现两个有序数组的合并,即二路归并
数组A和数组B分别记录有一些数据,这两个数组上的数据都已经由小到大按顺序排列好。请用vb编写一个程序把这此数据合并到同一个数组之中,并使得合并后的数据全部按由小到大排列。
这就是所谓的“二路归并”。在编写这个程序时先进行说明一下,首先,大量数据的输入用inputbox()函数的方法显得很烦琐,特别在调试阶段,每次运行时都要输入一大堆数据。因此采用了ARRAY函数的输入方法。
为了使大量的数据在输出时看得清楚,我们在运行窗体上设置了一个文本框,并把文本框的属性MultiLine设为True,Scorllbars设为2(带竖直滚动条)。
Vb程序代码如下:
Private Sub Form_Click()
Dim a '定义了一个可变类型的数组
a = Array(1, 3, 5, 7, 9, 11)
Dim b
b = Array(2, 4, 6, 8, 10, 12, 14, 16, 18)
Dim c(1000)
pa = 0: pb = 0: pc = 0
ea = UBound(a) '可变数组A的下标的上界和下界可以用函数UBOUND()和LBOUND()得到(若没说明下标的下界一般是0)
eb = UBound(b)
Do Until pa > ea And pb > eb
If pa > ea Then ta = b(eb) + 1 Else ta = a(pa)
If pb > eb Then tb = a(ea) + 1 Else tb = b(pb)
If ta < tb Then
c(pc) = ta
pc = pc + 1
If pa <= ea Then pa = pa + 1
Else
c(pc) = tb
pc = pc + 1
If pb <= eb Then pb = pb + 1
End If
Loop
Print ea, eb, pc
Text1.Text = "数组A的元素:" & vbCrLf
For i = 0 To ea
Text1.Text = Text1.Text & a(i) & " "
Next i
Text1.Text = Text1.Text & vbCrLf & vbCrLf & "数组A的元素:" & vbCrLf
For i = 0 To eb
Text1.Text = Text1.Text & b(i) & " "
Next i
Text1.Text = Text1.Text & vbCrLf & vbCrLf & "合并后B的元素:" & vbCrLf
For i = 0 To pc
Text1.Text = Text1.Text & c(i) & " "
Next i
End Sub
当然,你可以把这些数据全部复制到一个数组之中再使用一个排序算法来处理一次,但这样的话,原来两个数组已经分别排好的顺序就没有利用上,能否利用原来已经排好顺序的特点使得算法高效一些?