题型:综合题 题类:常考题 难易度:困难
浙江省宁波市十校2019届高三上学期9月联考试卷
下标 |
1 |
2 |
3 |
4 |
5 |
值 |
5 |
3 |
3 |
2 |
4 |
第一步:统计数组 a 中每个值 a(i)出现的次数,存入 b(a(i)),统计完成后数组 b 的情况如下:
下标 |
1 |
2 |
3 |
4 |
5 |
值 |
0 |
1 |
2 |
1 |
1 |
第二步:从前向后,依次使数组 b 中的每个值等于其与前一项之和,这样数组 b(a(i))就代表了数组 a 中小于或等于 a(i)的元素个数,完成第二步后数组 b 如下:
下标 |
1 |
2 |
3 |
4 |
5 |
值 |
0 |
1 |
3 |
4 |
5 |
第三步:从后往前,依次将数组a中元素填入数组c中,将数组元素a(i)放在数组c的第b(a(i))项,如元素a(1)=5,应该放在数组c的b(5)位(即c(5))。每放一个元素就将b(a(i))递减;完成第三步后,数组c如下所示,已经完成升序排序,且相对位置不变,即原来a(2)的值3仍然在a(3)的值3前面。
下标 |
1 |
2 |
3 |
4 |
5 |
值 |
2 |
3 |
3 |
4 |
5 |
程序运行界面如右图所示:
实现上述功能的VB程序如下,回答以下问题:
Dim a(1 To 50) As Integer '存放学生的成绩
Dim sname(1 To 50) As String '存放学生姓名
Dim n As Integer
Private Sub Command1_Click
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
App.Path + "\stu.accdb"
conn.Open
strSQL = "SELECT * From stucj"
Set rs.ActiveConnection = conn
rs.Open strSQL
n = 0
List1.AddItem "姓 名" & " " & "成绩"
Do While Not rs.EOF
n = n + 1
a(n) = rs.Fields("cj")
sname(n) = rs.Fields("xm")
List1.AddItem sname(n) & " " & Str(a(n))
Loop
rs.Close
conn.Close
End Sub
Private Sub Command2_Click
Dim i As Integer, k As Integer
Dim b(0 To 100) As Integer
Dim c(1 To 50) As Integer, c1(1 To 50) As String 'c 和 c1 作为临时数组
For i = 1 To n
b(a(i)) = b(a(i)) + 1
Next
For i = 1 To 100
b(i) =
Next
For i = n To 1 Step -1
c(b(a(i))) = a(i)
c1(b(a(i))) = sname(i)
Next
For i = 1 To n '把临时数组 c 和 c1 中的数据放入 a 和 sname 数组
a(i) = c(i)
sname(i) = c1(i)
Next
List2.AddItem "姓 名" & " " & "成绩"
For i = 1 To n
List2.AddItem sname(i) & " " & Str(a(i))
Next
End Sub
①把身份证前 17 位的每个数字和加权系数相乘并累加求和。身份证号码前17位数的加权系数见下表:
身份证号位数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
加权系数 | 7 | 9 | 10 | 5 | 8 | 4 | 2 | 1 | 6 | 3 | 7 | 9 | 10 | 5 | 8 | 4 | 2 |
②根据步骤①求得的和值,与11做取余运算得到序号,再根据序号提取校验码字符。如:所得和值除以11的余数为“0”,则对应的校验码为“1”。如下表:
序号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
校验码 | 1 | 0 | X | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
若步骤②中提取的校验码和身份证号最后一位相同,则校验通过,否则校验失败。
某人根据上述原理设计了一个身份证校验VB程序,功能如下:程序启动时从数据库student.accdb中读入全校学生身份证数据(全校共15个班级),并在列表框List1中显示,单击“校验”按钮Command1,在列表框List2中输出各班身份证号出错学生的信息和出错人数,若某班无出错学生,则不显示。程序界面如图所示。实现上述功能的VB程序如下,请回答下列问题:
分数 |
0~59 |
60~69 |
70~79 |
80~89 |
90~99 |
等级 |
E级 |
D级 |
C级 |
B级 |
A级 |
现要求根据上表统计出各等级学生人数占总人数的比例。小李编写了一个VB程序帮助老师实现该功能:程序运行时,将每位学生的得分(两位整数)存储到数组a中,并在列表框List1
中显示。单击“统计”按钮后,在列表框List2中显示从A级至E级,各等级的人数占总人数的百分比例(四舍五入保留整数)。程序运行界面如图所示:
请阅读代码,并回答以下问题:
Dim n As Integer
Dim a(1 To 50) As Integer
Private Sub Form_Load( )
Dim adocn As New ADODB. Connection
Dim adors As New ADODB. Recordset
Dim str1 As String
adocn.ConnectionString = "Provider = Microsof.ACE.OLEDB.12.0;Data source=" +App. Path +”\school. accdb”
adocn. Open
str1 =“select * from students”
ardors.Open str1, adocn
'将每个学生的得分读入数组a中,并在列表框list1中显示,统计学生总人数n
'代码略
End Sub
Private Sub Comd1_C1ick( )
Dim cou As Integer,k as Integer
Dim b(0 To 4) As Integer
Const dj = “A级B级C级D级E级”
For i=1 Ton
k=a(i)\10-5
If k<0 Then ①
b(k)= b(k) + 1
Next i
For i=0 To 4
cou = '⑶改错
List2. AddItem ② + Str(cou) +“%”
Next i
End Sub
试题篮