试题

试题 试卷

logo

题型:综合题 题类:模拟题 难易度:困难

2017年浙江省高考信息技术模拟试卷(一)

公司年会,领导要小李编写一个小程序,用于抽奖,小李将参加年会的人员姓名、手机号保存在一个access数据库中库名:年会嘉宾.accdb 数据表名为:联系人
程序设计的主要思路是:窗体装入时读出所有嘉宾的姓名和手机号,保存在两个数据中,从text1中取得要抽奖的人数,用随机函数产生1~num间的数作为中奖号,从数据中读出对应的姓名和手机号,手机号中间4位用“新年快乐”代替。已抽中过的姓名和手机号从数据中删除,以防止重复中奖。

Dim sname(1 To 1000) As String   ‘用于保存嘉宾姓名
Dim phone(1 To 1000) As String   ‘用于保存嘉宾手机号
Dim num As Integer  ‘未抽奖人数
Private Sub Command1_Click()
Dim n As Integer   ‘拟抽奖人数
Randomize
n = Val(Text1.Text)
List1.Clear
If     ①     Then
 For i = 1 To n
    k = Int(Rnd * num) + 1
    List1.AddItem Str(i) + "  " + sname(k) + "   " +   ②     
    For j = k To num
        sname(j) = sname(j + 1)
        phone(j) = phone(j + 1)
    Next j
    num =      ③       
 Next i
Else
    List1.AddItem "剩余的数据不足!"
End If
End Sub
Rem 下列程序段用于从数据库中读取嘉宾的姓名和手机号,分别保存在全局变量sname()和phone()两个数组中,设嘉宾个数不超过1000个。
Private Sub Form_Load()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString = "provider=microsoft.ace.oledB.12.0;data source=" & App.Path & "\年会嘉宾.accdb "
conn.Open
Set rs.ActiveConnection = conn
rs.Open "select * from 联系人"
num = 0
Do While Not rs.EOF And num < 1000
    num = num + 1
    phone(num) = rs.Fields("联系电话")
    sname(num) = rs.Fields("姓名")
    rs.MoveNext
 Loop
 rs.Close
 conn.Close
 Set rs = Nothing
 Set conn = Nothing
End Sub
举一反三
将一个十进制正整数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

返回首页

试题篮