写成Visual Basic表达式,正确的是( )
|
编码中位 |
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。
⑴若计算得到的校验值g1、g2、g3均为0,说明校验正确,数据无错误。例如:若7位编码为1101001,计算校验值g1、g2、g3值均为0,验证正确。
⑵若校验值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 + Chr( Asc(Mid(Text1.Text, i, 1)) Xor )
Else
Outs = Outs + Mid(Text1.Text, i, 1)
End If
Next i
Text2.Text = "第" + Str(m) + "位上数据有错误,正确编码应为:" + Outs
End If
End Sub
最佳方案:初始时所有人聚集在2号房间,花费的能量和:7*0+8*1+6*2+4*3+4*4=48。为了解决这个问题,小明编写了一个VB程序。在窗体加载时,从数据库中读取N的值和编号为1到N的房间的居住人数,人数存储在数组a中。点击窗体上的按钮Command1,程序枚举每一种方案(不同的初始房间),计算该方案的能量和,在文本框Text1中输出最优方案的初始房间编号,在文本框Text2中输出最小能量和。
实现上述功能的VB代码如下,请在划线处填入合适代码。
Dim a(1 To 100) As Integer ’依次存储编号为1到100的房间的居住人数
Private Sub Form_Load()
‘本过程从数据库中读取N的值和每个房间居住人数,存储在数组a中
‘代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, w As Integer, k as Integer
Dim t As Long, ans As Long
k=0 : ans = 32767 ‘ans初始化为最大的Integer数据
For i = 1 To n
t = 0
For j = 0 To n - 1
w=
If w = 0 Then w = n
t=
Next j
If t < ans Then
k= i
ans = t
End If
Next i
Text1.Text = Str (k) ‘起始房间编号
Text2.Text =
End Sub
L = 0: R = 7: i = 1
Do While i < R
If a(i) = 0 Then
L = L + 1
t = a(i): a(i) = a(L): a(L) = t i = i + 1
ElseIf a(i) = 2 Then
R = R - 1
t = a(i): a(i) = a(R): a(R) = t
Else
i = i + 1
End If
Loop
数组元素 a(1)到 a(6)的值依次为“2,0,2,1,1,0”。执行该程序段后,下列说法不正确的是( )
Randomize
a(0)=0:i=1
Do While i<= 7
a(i) =Int(Rnd*10) *3+ 1
If i Mod 2= 1 Then
a(i)=a(i)+a(i-1)
ElseIf a(i) Mod 2= 1 Then
i=i-1
EndIf
i=i+1
Loop
该程序段执行后,a(1)-a(7)各元素的值可能为( )
salary=float (input( ))
if salary<=5000:
tax=0
elif salary<=7000:
tax=(salary-5000)*0.1
elif salary<=10000:
tax=200+(salary-7000)*0.2
else:
tax=800+(salary-10000)*0.4
print(salary-tax)
Dim k As Integer, num As Integer, m As Integer
Dim s As String, ans As String
s =" abcdefghi jk lmnopqrs tuvwxyz "
k=26:ans=””
m = Val(Text1.Text)
Do While m> 0
x=Int(Rnd()*k)+1
ans=ans+Mid(s, x,1)
s =Mid(s,1,x-1)+Mid(s,k,1)+Mid(s,x+1,26-x)
k=k-1:m=m-1
Loop
Text2.Text = ans
文本框Text1中输入4,执行上述程序后,文本框Tex2中有显示的内容不可能为( )
name=[“张三”,“李四”,“王五”]
name. append(“赵六”)
del name[1]
Name.pop( )
print(name)