Dim a(l To 5) As Integer, i As Integer, c As Integer
a(l) = 2 : a(2) = 1 : a(3) = 3 : a(4)=4 : a(5) = 5
c=0
For i = 3 To 5
If a(i - 2) + a(i - 1) = a(i) Then c = c + 1
Next i
Textl. Text = Str(c)
该程序段运行后,文本框Textl中显示的内容是( )
加密算法如下:
1)将明码中每个字符的八位二进制ASCII码(不足八位的左端补0,凑足八位)分成两段(左4位一段,右4位为另一段),如字符“C”的二进制ASCII值为01000011,分段后为0100,0011;
2)将高位段(左边4位)左移一位,并将原第一位数码移到第4位(如0100转化为1000),再转化为十六进制数(如1000化为8);
3)对另一段(右4位)执行2)所示算法,如0011→0110→6;
4)顺次连接两位十六进制数,得到该字符的暗码,如“C”的暗码为“86”;
5)将每个字符的暗码按照明码的顺序连接。
实现上述功能的VB程序如下,请回答下列问题:
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim m As Integer, k As Integer, c As String
Dim x As Integer, y As Integer
Dim d(1 To 8) As Integer ‘数组d存储字符ASCII码二进制从左到右的各位数码
Dim mw As String ‘mw存储暗码
mw =“”
For i = 1 To Len(Text1.Text)
c = Mid(Text1.Text,i,1)
For j = 1 To 8
d(j) = 0
Next j
m = Asc(c)
Do While m > 0
d(k) = m Mod 2
m = m \ 2
k =k-1
Loop
x = d(1) :y = d(5)
For j = 1 To 3
d(j) =d(j+1)
Next j
d(4) = x:d(8) = y
mw = mw + btoh(d)
Next i
Text2.Text = mw
End Sub
‘将数组元素中的二进制数转换成对应的十六进制数
Function btoh(d() As Integer) As String
Dim s As Integer, i As Integer, str1 As String, ch As String
str1 = “0123456789ABCDEF”: s = 0: ch =“”
For i = 1 To 8
s = s * 2 + d(i)
If i = 4 Then
ch = Mid(str1,s+1,1)
s = 0
End If
Next i
End Function
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Dim a(1 To 8)As Integer
Dim n As Integer
Private Sub Form_Load()
a(1)= 30:a(2)= 47:a(3)= 30:a(4)= 72
a(5)= 70:a(6)= 23:a(7)= 99:a(8)= 24
n = 8
For i = 1 To 8
List 1.Addltem a(i)
Next i
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
Dim pos As Integer
Dim s As String
s = Text1.Text
pos = Val(Text1.Text)
For i = 1 To n- 1
For j = n To i+1 Step-1
If a(j)< a(j -1) Then
‘⑴
a(j-1)= a(j)
a(j)= k
'如果pos位置的数据参与交换,则更新pos值,记录pos变化位置
If pos = j Then
pos = j-1
s = s + " →" + Str(pos)
‘⑵
pos = j
s = s + " →" + Str(pos)
End If
End If
Next j
Next i
Label1.Caption = "位置变化情况:" +s
For i = 1 To n
List2.AddItem Str(a(i))
Next i
End Sub
⑴ ⑵
1,3,5,7,9,11,13,15,17,19,21,23,25,……
此数列的第二项为3,将此数列的第3n个数删除,留下的数为:
1,3,7,9,13,15,19,21,25,……
新数列的第三项为7,将新数列的第7n个数删除,留下的数为:
1,3,7,9,13,15,21,25.……
若一直重复上述步骤,最后剩下的数就是幸运数。
下列程序的功能是找出1000以内的幸运数,但加框处代码有错,请改正。
Private Sub Commandl_Click()
Dim a(500)As Integer,b(500)As Integer
Dim i As Integer,m As Integer,k As Integer
Dim top As Integer,bott As Integer
'产生由1开始的奇数数列,依次存储在数组a中,代码略
top=2:bott=500
Do While top<bott
‘⑴
For i=1 To bott
If i Mod a(top)<>0 Then
b(k)= a(i)
k=k+1
End If
Next i
‘⑵
top = top+1
For i=1 To bott
a(i)=b(i)
Next i
Loop
For i=1 To bott
List1.AddItem Str(a(i))
Next i
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
① ② ③
加框处改正:
k=1
For j=2 To 100
If a(j)>a(k)Then k=j
Next j
x=a(k)
{
publics tatic void main(String args[])
{
Int a[]={1,2,3}, b[];
Int c=5, d;
b=a
d=c
System.out.printIn (a[0]+""+a[1]+""+a[2]"");
System.out.printIn (b[0]+""+b[1]+""+b[2]"");
System.out.printIn("c= " +c+"d="+d);
}
}

请分析任务,完成下列题目。
程序代码如下:
Private Sub Command1_Click()
Dim s As single
Dim Max , Min ,i As Integer
Dim a(5) As Integer
Max = 0
Min = ①
s = 0
For i = 1 To 5
a(i) = InputBox("请输入第" & i & "个分数")
s = s + a(i)
If ② Then Max = a(i)
If Min > a(i) Then Min = a(i)
Next i
s = ③
Text1.Text = Max
Text2.Text = Min
Text3.Text = s
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub
Private Sub Command3_Click()
End Sub
请分析任务,完成下列题目。
a = [1] * 6
b = [96,88,84,91,99,80]
for i in range(6):
for j in range(i+1,6):
if b[j] > b[i]:
a[i] += 1
else:
a[j] += 1
该程序段运行后,列表 a 的值为( )