【精品解析】高中信息技术综合库-VB程序的调试

文档属性

名称 【精品解析】高中信息技术综合库-VB程序的调试
格式 zip
文件大小 316.2KB
资源类型 试卷
版本资源
科目 信息技术(信息科技)
更新时间 2020-08-20 09:00:50

文档简介

高中信息技术综合库-VB程序的调试
一、高中信息高中信息技术综合库VB程序的调试
1.小新同学今天刚刚学习了循环结构,老师讲的例题是求5!,课后小新想求10!,结果他在老师的程序基础上修改后,却出现了如下图的错误(代码见下图),以下说法正确的是(  )
Dim i As Integer ——1
Dim s As Integer ——2
s=1 ——3
For i=1 To 10
s=s*i ——4
Next i
Print s
A.1处改为Dim i As long B.2处改为Dim s As long
C.3处改为s=0 D.4处改为s=s+i
【答案】B
【知识点】程序的调试及运行;常量、变量及变量的赋值
【解析】【解答】定义变量的类型时要考虑变量的大小,求10的阶乘时,其结构超出了整型变量的取值范围所以2处应改为Dim s As long ,选项B正确。故答案选B。
【分析】本题考查的是VB基本数据类型。
2.将n个元素转换成(n\m)*m矩阵(n是m的倍数)。例如有42个元素,m=7,则可转换成6*7(6行7列)的矩阵转换示例如下:
转换前元素次序为:
12 2 5 3 6 9 4 10 8 5 6 9 6 3 5 8 11 2 8 9
转换为矩阵如下:
现要在矩阵中找一个规模为3*3的子方阵,使得该子方阵的各元素之和最大。
(1)若n=25,m=5,则该矩阵中共有3*3的子方阵个数为   。(填数字)
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub
Command1_Click()
Dim a(1 To
100) As Integer
Dim sum(0 To
101) As Long ‘sum(i)=a(1)+a(2)+a(3)+…+a(i)
Dim i As
Integer, j As Integer, n As Integer, m As Integer, k As Integer
Dim ans As
Long, begin As Integer, maxi As Integer
Dim maxsum As
Long, s As String
n=Val(Text1.Text)
m=Val(Text2.Text)
If n Mod m <>
0 Then List1.AddItem “输入数据不符合要求”:Exit Sub
For i=1 To n
a(i)=Int(Rnd*50+1)
s=s+Str(a(i))
If i Mod m=0
Then List1.AddItem s:s=“”
Next i
k=3
sum(1)=a(1)
For i=2 To n ‘求sum(i)
   
Next i
maxsum=0
ans=0
For i=1 To
n\m-k+1
For j=k To m
begin=(i-1)*m+j-k+1
maxsum=maxsum+sum(j+(i-1)*m)-sum(j-k+(i-1)*m)
   
maxsum=maxsum+(j+(i+1)*m)-sum(j-k+(i+1)*m)
If maxsum>ans
Then ans=maxsum: maxi=begin
maxsum=0
Next j
Next i
s= “”
For i=1 To k
For j=1 To k
s=s+Str(a
(   ))
Next j
List2.AddItem
s
s=“”
Next i
List2.AddItem
“maxsum=”+Str(ans)
End Sub
【答案】(1)9
(2)sum(i)= sum(i-1)+a(i);maxsum= maxsum+ sum(j+i*m)- sum(j-k+i*m);a(maxi+j-1 +(i- 1)*m)
【知识点】算法的控制结构;常量、变量及变量的赋值
【解析】【解答】(1)若n=25,m=5,则该矩阵中有5行5列,从第1列到第3列,第2列到第4列,第3列到第5列,横向可以排3个,同时纵向也可以排3个,因此有9个子矩阵。
( 2 ) sum(i)求第i项及以前所有项的和即sum(i)= sum(i-1)+a(i)。 j+(i- 1)m显然是该行中子矩阵最后1列的位置,因此j+(i-1)*m-k子矩阵第1列的位置。sum(j+ (i-1)*m)-sum(j-k+(i- 1)*m)是该行中子矩阵所有列的和。②中要填的是下一行(中间一行)的所有列之和即maxsum=maxsum+sum(j+i*m)-sum(j-k+i*m)。Maxi记录的是最大子矩阵的开始位置,在③中,变量i表示行,表示列即s=s+ Str(a(maxi+j-1 +(i-1)*m)。
【分析】本题考查的是对VB语句的理解以及矩阵,循环结构。
3.有如下VB程序段:
a(1)=20: a(2)=3: a(3)=21: a(4)=37
a(5)=62: a(6)=20: a(7)=13: a(8)=33
k=Abs(a(2)-a(1))
For i=3 To 8
If Abs(a(i)- a(i-1))>k Then k= Abs(a(i)-a(i-1))
Next
执行该程序段后,变量k的值为(  )
A.7 B.17 C.25 D.42
【答案】D
【知识点】算法的控制结构
【解析】【解答】本题可采用变量跟踪法进行分析。该程序段的功能是求数组中相邻元素的最大差值:
因此执行程序段后,变量k的值为42。故答案选D。
【分析】本题考查的是对循环结构程序段的理解。
1 / 1高中信息技术综合库-VB程序的调试
一、高中信息高中信息技术综合库VB程序的调试
1.小新同学今天刚刚学习了循环结构,老师讲的例题是求5!,课后小新想求10!,结果他在老师的程序基础上修改后,却出现了如下图的错误(代码见下图),以下说法正确的是(  )
Dim i As Integer ——1
Dim s As Integer ——2
s=1 ——3
For i=1 To 10
s=s*i ——4
Next i
Print s
A.1处改为Dim i As long B.2处改为Dim s As long
C.3处改为s=0 D.4处改为s=s+i
2.将n个元素转换成(n\m)*m矩阵(n是m的倍数)。例如有42个元素,m=7,则可转换成6*7(6行7列)的矩阵转换示例如下:
转换前元素次序为:
12 2 5 3 6 9 4 10 8 5 6 9 6 3 5 8 11 2 8 9
转换为矩阵如下:
现要在矩阵中找一个规模为3*3的子方阵,使得该子方阵的各元素之和最大。
(1)若n=25,m=5,则该矩阵中共有3*3的子方阵个数为   。(填数字)
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub
Command1_Click()
Dim a(1 To
100) As Integer
Dim sum(0 To
101) As Long ‘sum(i)=a(1)+a(2)+a(3)+…+a(i)
Dim i As
Integer, j As Integer, n As Integer, m As Integer, k As Integer
Dim ans As
Long, begin As Integer, maxi As Integer
Dim maxsum As
Long, s As String
n=Val(Text1.Text)
m=Val(Text2.Text)
If n Mod m <>
0 Then List1.AddItem “输入数据不符合要求”:Exit Sub
For i=1 To n
a(i)=Int(Rnd*50+1)
s=s+Str(a(i))
If i Mod m=0
Then List1.AddItem s:s=“”
Next i
k=3
sum(1)=a(1)
For i=2 To n ‘求sum(i)
   
Next i
maxsum=0
ans=0
For i=1 To
n\m-k+1
For j=k To m
begin=(i-1)*m+j-k+1
maxsum=maxsum+sum(j+(i-1)*m)-sum(j-k+(i-1)*m)
   
maxsum=maxsum+(j+(i+1)*m)-sum(j-k+(i+1)*m)
If maxsum>ans
Then ans=maxsum: maxi=begin
maxsum=0
Next j
Next i
s= “”
For i=1 To k
For j=1 To k
s=s+Str(a
(   ))
Next j
List2.AddItem
s
s=“”
Next i
List2.AddItem
“maxsum=”+Str(ans)
End Sub
3.有如下VB程序段:
a(1)=20: a(2)=3: a(3)=21: a(4)=37
a(5)=62: a(6)=20: a(7)=13: a(8)=33
k=Abs(a(2)-a(1))
For i=3 To 8
If Abs(a(i)- a(i-1))>k Then k= Abs(a(i)-a(i-1))
Next
执行该程序段后,变量k的值为(  )
A.7 B.17 C.25 D.42
答案解析部分
1.【答案】B
【知识点】程序的调试及运行;常量、变量及变量的赋值
【解析】【解答】定义变量的类型时要考虑变量的大小,求10的阶乘时,其结构超出了整型变量的取值范围所以2处应改为Dim s As long ,选项B正确。故答案选B。
【分析】本题考查的是VB基本数据类型。
2.【答案】(1)9
(2)sum(i)= sum(i-1)+a(i);maxsum= maxsum+ sum(j+i*m)- sum(j-k+i*m);a(maxi+j-1 +(i- 1)*m)
【知识点】算法的控制结构;常量、变量及变量的赋值
【解析】【解答】(1)若n=25,m=5,则该矩阵中有5行5列,从第1列到第3列,第2列到第4列,第3列到第5列,横向可以排3个,同时纵向也可以排3个,因此有9个子矩阵。
( 2 ) sum(i)求第i项及以前所有项的和即sum(i)= sum(i-1)+a(i)。 j+(i- 1)m显然是该行中子矩阵最后1列的位置,因此j+(i-1)*m-k子矩阵第1列的位置。sum(j+ (i-1)*m)-sum(j-k+(i- 1)*m)是该行中子矩阵所有列的和。②中要填的是下一行(中间一行)的所有列之和即maxsum=maxsum+sum(j+i*m)-sum(j-k+i*m)。Maxi记录的是最大子矩阵的开始位置,在③中,变量i表示行,表示列即s=s+ Str(a(maxi+j-1 +(i-1)*m)。
【分析】本题考查的是对VB语句的理解以及矩阵,循环结构。
3.【答案】D
【知识点】算法的控制结构
【解析】【解答】本题可采用变量跟踪法进行分析。该程序段的功能是求数组中相邻元素的最大差值:
因此执行程序段后,变量k的值为42。故答案选D。
【分析】本题考查的是对循环结构程序段的理解。
1 / 1
同课章节目录