试题

试题 试卷

logo

题型:综合题 题类:常考题 难易度:普通

浙江省高中信息技术 算法及VB语言表达基础同步练习

使用“字符洗牌”程序模拟扑克洗牌的操作,为了打乱牌序,把手上的扑克牌中间抽一部分放到最上面,完成一次洗牌(如字符串“1234ABCD”,若把中间的第3 个到第5个字符抽出并保持原来的顺序放到最前面,则一次“洗牌”操作后字符串变成“34A12BCD”),也可以把扑克牌分成上下两部分,把下面的部分放置到上面(如字符串“1234ABCD”,把第3 个字符到最后一个字符移到前面,变成“34ABCD12”),多次重复做这个动作,就能达到洗牌的目的,效果如图所示。

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

Private Sub Command1_Click()

 Dim r As Integer, k1 As Integer, k2 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

 = s       ‘输出结果

End Sub

(3)、若加框处的语句改为TxtOut.Text = Str(s),则运行程序时会发生的错误消息为

举一反三
将一个十进制正整数x转换成十六进制数的方法和转换成二进制类似,反复除16取余法,它的算法如下:

第一步:x被除16取余数r1,r1是所求的十六进制数的一个数(第一次就是个位数);

第二步:r1转换成十六进制数的一个基数并转换成字符,追加到十六进制数s的左边;

第三步:求出x被除16的商x1;

第四步:对x1重复第一、二、三步,直至商为0;

第五步:最后的s即为所求的十六进制数;

下列Visual Basic程序的功能是将一个十进制正整数x转换成十六进制数。界面如图所示,在文本框Text1中输入一个十进制数,单击“十进制转十六进制”按钮(Command1)后,在文本框Text2中输出转换的结果。

相应的Visual Basic程序如下:

Private Sub Command1_Click()

 Dim s As String, r As Integer

 dec=val(Text1.Text)      ‘dec得到一个十进制整数,例如:255

 base=16       ‘base表示16

  s=“”      ‘s变量存放要转换到的十六进制整数

  Do While dec <> 0

     r=(1)     

     If r >=10 Then       ‘如果base>10,r可能>10

      s=Chr(65+(r-10))+s     ‘Chr(65)=“A”,16进制数A对应10;

     Else

      s=Str(r)+s      ‘余数r<10时,十进制数和十六进制基数相同

     End If      ‘Chr(65+( r-10))或str(r)在s左边,实现了反次序输出

     dec=(2)     

  Loop

 Text2.Text=s

End Sub

在(1)处应填入{#blank#}1{#/blank#} , 在(2)处应填入{#blank#}2{#/blank#}

A.base Mod dec   B.dec/base

C.dec Mod base   D.dec\base

返回首页

试题篮