试题详情
操作题 适中0.65 引用1 组卷85
下列VB程序实现如下功能:程序运行时,在文本框Text1和Text2中分别输入x和n的值,单击命令按钮Command1后,调用函数f计算s=x+++…+的值,并在文本框Text3中显示计算结果。请在划线上填入合适的代码。
Private Sub Command1_Click( )
Dim x As Single,n As Integer,s As ____
x=Val(Text1.Text)
n=Val(Text2.Text)
s=f(x,n)
Text3.Text=str(s)
End Sub
Private Function f(x As Single,n As Integer) As Single
Dim sum As Single,i As Integer,t As Single
sum = 0
t=1
For i=1 To n
t=t*x/i
sum=sum+t
Next i
________
End Function
填写划线①处代码_____________________________________。
填写划线②处代码______________________________________。
16-17高三·全国·单元测试
知识点:VB程序的调试 答案解析 【答案】很抱歉,登录后才可免费查看答案和解析!
类题推荐
由于交易程序错误,十进制系统的数字被重新排列。例如:将0改为2,1改为3,2改为0,如果正确的数据为“021”,则现在系统显示“203”。该交易系统的用户特别关心他们在系统中的排名,所以公司决定紧急编写一个程序,该程序能将系统显示的价值按真实价值升序排序。
程序要求如下:给定需要排序的数字(十进制混乱版本)和映射,返回按正确的十进制值升序排序的混乱数据,如果多个映射值相等,则返回的值按其显示的原始顺序。(采用插入排序算法实现:其基本思想是将整个数组分为左边有序和右边无序两个部分,每次取出无序部分的第一个元素,把它插入有序部分的合适位置,直至所有的数据有序为止。)
例如,固定长度为10的映射{“3”,“5”,“4”,“6”,“2”,“7”,“9”,“8”,“0”,“1” }
和混乱的错误数据{“990”,“332”,“32” }
将“990”映射为“668”:
第一个数字为“9”。在映射数组中,9在位置6处,因此映射值得第一位是“6”。
第二个数字为“9”。在映射数组中,9在位置6处,因此映射值得第一位是“6”。
第三个数字为“0”。在映射数组中,0在位置8处,因此映射值得第一位是“8”。
按同样的方法,“332”映射为“004”,“32”映射为“04”。
“004”和“04”转换成整数都是4,按整数值排序会产生{4,4,668},而保留“332”和“32”的顺序会得到混乱数据为{“332”,“32”,“990”}。
程序VB代码如下:
Const m = 1000
Const n = 10
Dim mapping(1 To n) As String       '存储映射数字
Dim nums1(1 To m) As String       '存储现在的错误数据
Dim nums2(1 To m) As String       '存储原始的正确数据
Private Sub Form_Load()
'读取系统中现在的错误数据存储在数组nums1中,并将数据添加到列表框list1,代码略
'读取映射数字存储在mapping数组中,代码略
End Sub
Private Sub Sort_Click()
Dim errornum As String
Dim rightnum As String
Dim i, j As Integer
Dim temp As String
Dim s As String
For i = 1 To m
       nums2(i) = ""
       For j = 1 To Len(nums1(i))
             errornum = Mid(nums1(i), j, 1)
                                      
             nums2(i) = nums2(i) + rightnum
       Next j
Next i
'对原始正确数据进行升序插入排序
For i = 2 To m                    
       temp = nums2(i): j = i - 1
       Do While Val(temp) < Val(nums2(j))
             nums2(j + 1) = nums2(j)
             j = j - 1
             If j = 0 Then Exit Do
       Loop
                   
Next i
For i = 1 To m
       nums1(i) = ""
       For j = 1 To Len(nums2(i))
             nums1(i) = nums1(i) +                   
       Next j
Next i
s = ""
For i = 1 To m
       s = s + nums1(i)+ " "
Next i
List2.AddItem s
End Sub
'根据错误数字返回正确数字
Function match(x As String) As String
Dim i As Integer

For i = 1 To n


             If mapping(i) = x Then Exit For

Next i

match = CStr(i - 1)


End Function
请回答下列问题:
(1)根据代码可知,下列具有Caption属性的对象是____________(单选,填字母:A. List1/ B.Sort/ C.Text1)
(2)将程序①②③处的代码补充完整。
①处代码为____________,②处代码为____________,③处代码为____________
(3)若mapping数组为{“4”,“2”,“3”,“7”,“6”,“8”,“1”,“0”,“9”,“5” },混乱数据为{“425”,“63”,“25”,“778”},则最终列表框List2中显示的是______________
小张用VB模拟实现了一个打地鼠游戏的计分程序。游戏规则如下:总共有10个地鼠洞,每秒地鼠选择一个洞探出脑袋,如果当前的锤子在该洞口,则打中地鼠,否则没有打中。游戏时间总共t秒(t<=10,Text1中输入),锤子的起始位置在b(1)(Text2中输入)。现已知每个时刻地鼠探脑袋的位置,根据锤子移动的路线,计算得出最多的得分,并输出到 Labe1l。
锤子移动规则:锤子每秒必须往左或往右移动一步(不可在当前位置停留),如果锤子已经在最左边了,只能往右移动;反之,只能往左移动。
计分方式:如果打中一个地鼠,计1分;如果连续打中地鼠,分数翻倍,即连续打中两个,分数为1+2;连续打中三个,分数为1+2+4;连续打中四个,分数为1+2+4+8……
算法思路:

①随机产生在第i秒时,地鼠探出脑袋的洞口为j。

若每个时刻地鼠探脑袋的洞口如图a所示,以10个洞口为横坐标n,游戏时间t(假设t=10)为纵坐标,建立一个矩阵a。当前时间出现地鼠的洞口标记为1,其余默认为0。
②模拟第i秒敲击洞口的位置。
1)若输入游戏过程如图b所示,从5号洞口出发b(1)=5,当时间为i=1时,可到达的洞口有2种:j=2时b(2)=6,j=1时b(1)=4,即得矩阵a的坐标位置i和b(j);
2)同理当i=2时,可到达的洞口有4种:j=4时b(4)=7,=3时b(3)=5,=2时b(2)=5,j=1时b(1)=3.i=1敲击洞口位置为6或4;i=2敲击洞口位置6→7,6-5或4→5,4→3;
3)将t秒内可经过的2t种不同路径敲击的矩阵位置的值存放到数组p中,如图b所示得到其中某一条路径p(j)=0101100010,根据p(j)计算得分,找出最值max并输出。
(1)如果游戏时间为10秒,每秒地鼠出现的洞口序号依次为[9,9,9,10,10,10,10,9,9,9],当锤子的起始位置在第6个洞口时,最多能得___________分。
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
       Const n = 10
       Dim a(1 To n * n) As Integer, b(1 To 2 ^ n) As Integer
       Dim p(1 To 2 ^ n) As String, s1 As String
       Dim i As Integer, j As Integer, k As Integer, max As Integer
       Dim t As Integer, s As Integer, f As Integer
       Randomize
       t = Val(Text1.Text)
       For i = 1 To t                                         '第i秒时,地鼠探出脑袋的洞口为j
             j = Int(Rnd * n + 1)
             ____________
             List1.AddItem Str(i) & Str(j)
       Next i
       s1 = ""
       For i = 1 To t * n
             s1 = s1 + Str(a(i))
             If i Mod n = 0 Then List2.AddItem s1: s1 = ""
       Next i
       b(1) = Val(Text2.Text)
       For i = 1 To n                                        '计算锤子在a矩阵移动的路径,并存放在p数组
             k = 1                                                'k为正则向右移动锤子,k为负则向左移动锤子
             For j = 2 ^ i To 1 Step -1
                    b(j) = b((j + 1) \ 2) + k
                    If b(j) < 1 Or b(j) > n Then b(j) = b(j) - 2 * k
                    p(j) = p((j + 1) \ 2) + CStr(_______)   'CStr功能类似Str
                    k = -k
             Next j
       Next i
       max = 0
       For i = 1 To 2 ^ n
             f = 0: s = 0: j = 1
             Do While j <= Len(p(i))
                    If Val(Mid(p(i), j, 1)) > 0 Then
                           ____________
                    Else
                           s = s + f: f = 0
                    End If
                    j = j + 1
             Loop
             If f > 0 Then s = s + f
             If max < s Then max = s
       Next i
       Label1.Caption = "最多能得" + Str(max) + "分"
End Sub
2022届毕业生开始,浙江省的赋分规则将由原赋分办法的21个等级变为20个赋分区间,赋分分差由3分细化为1分。在新等级赋分中,第1区间为100-97,第2区间为96-94……以此类推。

原等级赋分

100

97

94

91

88

85

82

79

76

73

70

比例(%

1

2

3

4

5

6

7

8

7

7

7

新等级赋分

100-97

96-94

93-91

90-88

87-85

84-82

81-79

78-76

75-73

72-70

原等级赋分

67

64

61

58

55

52

49

46

43

40

 

比例(%

7

7

7

6

5

4

3

2

1

1

 

新等级赋分

69-67

66-64

63-61

60-58

57-55

54-52

51-49

48-46

45-43

42-40

 

具体步骤为:
第一步,将卷面得分按人数比例划分为20个赋分区间,得出每个区间卷面得分的上限、下限。
第二步,对每个区间的卷面得分进行等比例转换,公式为:

其中,s2、s1为卷面得分区间的上限和下限,s为待转换卷面得分;t2、t1为赋分区间的上限和下限,t为卷面得分等比例转换后的赋分。

第三步,将转换结果四舍五入取整后即为等级赋分。

举例说明:赋分区间为87-85,如对应的卷面得分区间为84-81,某考生的卷面得分为83,通过等比例转换:,可以得出t=86.3,四舍五入取整后的等级赋分为86分。

现有某次考试的新等级赋分对应卷面得分区间的上限、下限对应表及该次考试同学卷面分和原等级赋分情况表,请编程实现计算该次考试新等级赋分情况。

新等级赋分

卷面得分区间的上限s2

卷面得分区间的下限s1

物理

化学

生物

政治

历史

地理

技术

物理

化学

生物

政治

历史

地理

技术

100-97

86

89

93

95

91

87

95

78

83

84

86

79

75

77

96-94

78

82

83

85

78

75

77

76

80

80

84

75

73

73

……

……

……

新等级赋分对应卷面得分区间上限、下限对应表

班级

姓名

卷面得分

原等级赋分

物理

化学

生物

政治

历史

地理

技术

物理

化学

生物

政治

历史

地理

技术

301

陈洲琦

0

0

0

56

51

0

37

0

0

0

61

70

0

61

302

周嘉

0

38

58

0

45

0

0

0

58

73

0

64

0

0

……

……

……

卷面分和原等级赋分情况表

请回答下列问题:
(1)若小李同学技术学科处于赋分区间为96-94,如对应的卷面得分区间为77-73,他的卷面得分为75,可以得出他新等级赋分为__________
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim a(1 To 380) As Integer             ‘卷面得分上下限
Dim b(1 To 700) As Integer             ‘卷面分和原等级赋分
Dim dj(1 To 20) As String             ‘新等级赋分
Dim m(1 To 100) As String             ‘班级姓名数据
Dim n As Integer                           ‘需要赋分人数
通过数据库获取各变量值(代码略):
数组a依次存储第一个新等级赋分的物化生政史地技卷面得分区间的上限、卷面得分区间的下限,再存储第二个新等级赋分的卷面得分区间……。数组b依次存储第一位同学的物化生政史地技卷面得分、原等级赋分,再存储第二位……。数组dj依次存储20个新等级赋分分数段。数组m依次存储第一位同学的班级、姓名,再存储第二位……。
Private Sub Command1_Click()
Dim s As Integer,djf As Integer,km As Integer
For i = 1 To n
       ______
       xm = m(i * 2)
       st = bj + xm
       For j = 1 To 7
             k = (i - 1) * 14 + j
             If b(k) <> 0 Then
                    s = b(k)
                    djf = b(k + 7)
                    km = j
                    ____________
             Else
                    ff = 0
             End If
             st = st + Str(ff)
       Next j
       List1.AddItem st
Next i
End Sub
Function Assign(s As Integer, ydjf As Integer, km As Integer) As Integer
Dim flag As Boolean
Dim t1 As Integer
Dim t2 As Integer
For i = 1 To 20
       flag = True
       t2 = 0
       t1 = 0
       For j = 1 To Len(dj(i))
             c = Mid(dj(i), j, 1)
             If c = "-" Then
                    flag = False
             ElseIf flag Then
                    t2 = t2 * 10 + Val(c)
             Else
                    t1 = t1 * 10 + Val(c)
             End If
       Next j
       If ydjf >= t1 And ydjf <= t2 Then
             s2 = a((i - 1) * 14 + km)
             s1 = a((i - 1) * 14 + 7 + km)
             Exit For
       End If
Next i
_________________
End Function

组卷网是一个信息分享及获取的平台,不能确保所有知识产权权属清晰,如您发现相关试题侵犯您的合法权益,请联系组卷网