Dim a(1 To 5) As Integer
a(1) = 1
For i = 2 To 5
a(i) = Int(Rnd * 5) + 1
If a(i) Mod 2 = 0 Then
a(i) = a(i) + i
Else
a(i) = a(i) + a(i - 1)
End If
Next i
a(1)~a(5)的值不可能的是:( )
s=”ABCDEFGH”
i=1
Do While i<=Len(s)
If i Mod 2=0 then
s=Mid(s, i+1, len(s)-i) & Mid(s, 1, i-1)
End if
i=i+1
Loop
Text1.text=s
分析问题得出出生月份与仓鼠对数关系图
由表可知仓鼠的繁殖规律:从第3个月开始,以后每个月的仓鼠对数都是前2个月仓鼠对数之和。解决上述问题的Visual Basic 程序如下:
Dim i As Integer
Dim a(1 To 20) As Integer
a(1)=1 : a(2)=1
for ①
a(i)= ②
Next i
Text1. Text=Str(a(n))
程序中画线部分①②应 填入 的语句或表达式为( )
Function c(m As Integer, n As Integer) As Long
If n= m Then
c=1
Else
If n=1Then c= m Else c=c(m-1, n-1)*m\n
End If
End Function
Private Sub Command1_Click()
Dim k As Integer, i As Integer, sum As Long
k = Val (Text1. Text): sum= 0
For i= 2 To k
sum=sum+c(k,i)
Next i
Text2. Text = Str (sum)
End Sub
在文本框Text1中输入3,执行该程序段,则文本框Text2中显示的内容是( )
例如,读取的数据为 2、3、15、25、10、14、1、5、30、60、15、25,过程是:
⑴设置区间信息为[2,3],[15,25],[10,14],[1,5],[30,60],[15,25];
⑵按区间左端点升序排序,得到J区间信息为
[1,5],[2,3],[10,14],[15,25],[15,25],[30,60],[15,25];
⑶合并区间,得到[1,5],[10,25],[30,60]。说明:区间[1,5]和[2,3]合并为[1,5],区间[10,14]和[15,25]合并为[10,25],区间[10,25]和[15,25]合并为[10,25],因此合并后的结果为:
[1,5],[10,25],[30,60]三个区间。
程序功能如下:单击“读数据库”按钮Command1,程序从数据库读取数据,输出在文本框Text1中;单击“开始处理”按钮Command2,程序进行区间排序,并进行区间合并操作,操作后的结果输出在文本框Text2中。程序运行结果如图所示。
实现上述功能的VB程序如下,请回答下列问题:
Dim a(l To 100) As Integer ′数组a存储合并前的区间
Dim b(l To 100) As Integer ′数组b存储合并后的区间
Dim n As Integer ′n表示区间个数
Private Sub Command1_Click()
Dim s1 As String, i As Integer
′读取数据,并存储到数组a中,并输出在文本框Text1中,代码略
End Sub
Private Sub Command2_CIick()
Dim s2 As String, i As Integer, j As Integer, k As Integer
Dim n As Integer, t As Integer, x As Integer
For i=1 To n-1
For j=1 To 2 * n-2 * i Step 2
If ① Then
t=a(j): a(j)=a(j+2): a(j+2)=t
t=a(j+1): a(j+1)=a(j+3): a(j+3)=t
End If
Next j
Next i
k=2
b(1)=a(1): b(2)=a(2)
i=2: j=3
Do While j <=2 * n
If b(i) >=a(j) Then
If b(i) <=a(j+1) Then ②
Else If b(i)+1=a(j) Then
b(k)=a(j+l)
Else
k=k+1:③
k=k+1: b(k)=a(j+1)
i=i+2
End If
j=j+2
Loop
For x=1 To k-2 Step 2
s2=s2 & “[”& b(x) & “,” & b(x+1) & “]” & “,”
Next x
s2=s2 & “[” & b(x) & “,” & b(x+1) & “]”
Text2.text=s2
End Sub
编码中位 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
对位信息 |
p1 |
p2 |
b1 |
p3 |
b2 |
b3 |
b4 |
校验的方式如下,求校验值g1、g2、g3:
g1 = p1 Xor b1 Xor b2 Xor b4
g2 = p2 Xor b1 Xor b3 Xor b4
g3 = p3 Xor b2 Xor b3 Xor b4
其中Xor 为异或运算,规则是:0 Xor 0 =0,0 Xor 1 =1,1 Xor 0 =1,1 Xor 1 =0,p1 Xor b1 是将p1、b1 转换为二进制后按位进行异或运算,如7 Xor 12 的结果为11。
a.若计算得到的校验值g1、g2、g3 均为0,说明校验正确,数据无错误。例如:若7 位编码为1101001,计算校验值g1、g2、g3 值均为0,验证正确。
b.若校验值g1、g2、g3 不全为0,说明数据有错,出错位置为g3g2g1(二进制数表示),纠错的方法是对错误的位进行取反,即“0”变“1”,“1”变“0”。例如:若7 位编码为1111001,计算校验值g1=1、g2=1、g3=0,不全为0,说明数据有错,错误位置在011(二进制数)位,即第3位,原位置上“1”应为“0”,正确编码为1101001。
小明为此编写了VB 程序,程序运行时,在文本框Text1 中输入编码值,单击“校验”按钮Command1 后,在文本框Text2 中输出运行结果,如图所示。
实现上述功能的 VB 程序如下,请回答下列问题:
Function check(s As String) As Integer
Dim i As Integer, g1 As Integer, g2 As Integer, g3 As Integer
Dim c(1 To 7) As Integer
For i = 1 To 7
c(i) = Val(Mid(s, i, 1))
Next i
g1 = c(1) Xor c(3) Xor c(5) Xor c(7)
g2 = c(2) Xor c(3) Xor c(6) Xor c(7)
g3 = c(4) Xor c(5) Xor c(6) Xor c(7)
If g1 + g2 + g3 = 0 Then check=0 Else check= ①
End Function
Private Sub Command1_Click()
Dim i As Integer, m As Integer, Outs As String
m= ②
If m = 0 Then
Text2.Text = “验证正确,数据无错误”
Else
For i = 1 To 7
If i = m Then
Outs=Outs+ ③
Else
Outs = Outs + Mid(Text1.Text, i, 1)
End If
Next i
Text2.Text = “第” + Str(m) + “位上数据有错误,正确编码应为:” + Outs
End If
End Sub
① ② ③
加框处改正: