1. 异或(xor)是一个数学逻辑运算符,如:x xor y,其运算具体方法描述如下:

⑴分别将十进制数x,y转换为二进制,并将转换的每位二进制数存储到数组a,b中;如果两个二进制位数不相等,则位数较少的前面用“0”补足,使之a,b数组元素个数一致;

⑵取出数组a,b中下标相同的数组元素进行运算,若值相同,则结果为0,否则为1;

根据上述运算方法,示例如表所示。

变量

十进制

二进制

x

19

1

0

0

1

1

数组a

a(1)

a(2)

a(3)

a(4)

a(5)

y

9

0

1

0

0

1

数组b

b(1)

b(2)

b(3)

b(4)

b(5)

x xor y

1

1

0

1

0

小明编写了一个VB程序,功能如下:在文本框Text1、Text2中分别输入x、y的值,单击“异或”按钮Command1,程序对数据进行异或运算,并将结果显示在列表框List1中。

(1) 在设计程序界面时,要使按钮Command1显示“异或”二字,则应该修改Command1的属性。
(2) 实现上述功能的VB程序如下,在划线处填入合适的代码,加框处代码有错,请改正。

Function f(z As Integer) As String

'此程序段实现将十进制数z转换为二进制数f

Dim y As Integer

Do While z > 0

        y = z Mod 2

        z =      ①     

        f = str(y) & f

 Loop

End Function

Private Sub Command1_Click()

Dim x,y,k,m As Integer

Dim s1 As String, s2 As String, s3 As String

Dim a(15) As String, b(15) As String

x = Val(Text1.Text): y = Val(Text2.Text)

If x < y Then

   m = x: x = y: y = m

End If

s1 = f(x): s2 = f(y)         's1表示x的二进制数,s2表示y的二进制数

k = Len(s1)

For i = 1 To k               '将转换后的二进制数按位分别存储到数组a和b

     a(i) = Mid(s1, i, 1)

     If i <= Len(s2) Then

        b(i) = Mid(s2, i, 1)

     Else

               '② 

     End If

Next i

S3=""

For i = 1 To k

   If     Then  '③

s3 = "0" + s3  

Else

s3 = "1" + s3

   End If

Next i

List1.AddItem "异或结果是:" + s3

End Sub

 ② ③

(3) 十进制数10和十进制数20的异或结果是
【考点】
解析算法及程序实现;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 困难
能力提升
真题演练
换一批
3. “字符洗牌”程序模拟扑克洗牌的操作,为了打乱牌序,把手上的扑克牌中间抽一部分放到最上面,完成一次洗牌(如字符串“1234ABCD”,若把中间的第3个到第5字母抽出并保持原来的顺序放到最前面,则一次洗牌操作后字符串变成“34A12BCD”),也可以把扑克牌分成上下两部分,把下面的部分放置到上面(如字符串“1234ABCD”,把第3个字符到最后一个字符移到前面,变成“34ABCD12”),多次重复做这个动作,就能达到洗牌的目的,效果如图所示。

(1) 若要把窗体的标题名称由“Form1” 改为“字符洗牌”,应改变窗体的属性。
(2) 完成上述功能的程序代码如下,请在划线处填入合适的代码

Private Sub Command1_Click()

    Dim r As Integer, k1 As Integer, k2 As Integer, r As Integer

    Dim s As String, n As Integer

                       '从文本框TxtIn中获取字符串

    Randomize

    r = Int(Rnd() * 10) + 1   '随机生成洗牌次数

    n = Len(s)

    Do While r >= 1        '洗牌操作

        k1 = Int(Rnd() * (n - 2)) + 2

        k2 = Int(Rnd() * (n - k1 + 1)) + k1

        s =   + Mid(s, 1, k1 - 1) + Mid(s, k2 + 1, n - k2)  

        r = r - 1

    Loop

        '输出结果

End Sub

(3) 若加框处的语句改为TxtOut.Text = Str(s),则运行程序时会发生的错误消息为_________ A. B. C. D.
综合题 困难