1. 寻找受潮药瓶:现有5瓶药,每瓶中有20粒药丸,每粒药丸重10克,其中有几瓶药受潮了,受潮的每粒药丸重11克,如何用天平只称一次找出受潮的那几瓶药?解决此问题的方法:将5瓶药编号为1~5号,从中分别取出1、2、4、8、16粒药丸进行称重。在不受潮时应是(1+2+4+8+16)×10=310(克)。假如称出的重量是315克,那么超出的重量是5克,说明有5粒超重,(5)<sub>10</sub>=(00101)<sub>2</sub>,因此受潮的是第1瓶和第3瓶。编写程序模拟此过程,程序运行时,单击“模拟”按钮Command1,在文本框Text1中输出超重克数,在列表框List1中输出药瓶编号,运行界面如图所示。实现上述功能的VB程序如下。

Private Sub Commandl_Click( )

Dim s As Integer, cz As Integer            'cz存储超重克数

Dim k As Integer

'依次从1~5号瓶中取出1、2、4、8、16粒药,并计算总重量,存储在变量s中,代码略

cz=s-310

Text1.Text=    ①    

k=0

Do While cz<>0

k=k+1

If    ②     Then List 1.Addltem"第"+Str(k)+"瓶"

cz=cz\2

Loop

End Sub

(1) 代码 List1.AddItem 中的 AddItem 是(单选,填字母:A .属性名/B .方法名/C .事件名)
(2) 请在划线处填入合适代码。

(3) 假如超重为 10 克,则受潮的药瓶编号是(填数字,若有多瓶,用“,”隔开)。
【考点】
类、对象、属性、方法、事件和事件处理的概念及应用; 解析算法及程序实现;
【答案】

您现在未登录,无法查看试题答案与解析。 登录
综合题 普通
能力提升
换一批
1. “字符洗牌”程序模拟扑克洗牌的操作,为了打乱牌序,把手上的扑克牌中间抽一部分放到最上面,完成一次洗牌(如字符串“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

TxtOut.Text = s   ' 在文本框TxtOut中输出结果

End Sub

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