2019年高考一轮复习信息技术浙江专用 第十单元第10节 矩阵问题课件(2张幻灯片)+练习

文档属性

名称 2019年高考一轮复习信息技术浙江专用 第十单元第10节 矩阵问题课件(2张幻灯片)+练习
格式 zip
文件大小 870.1KB
资源类型 教案
版本资源 通用版
科目 信息技术(信息科技)
更新时间 2019-05-22 11:45:21

文档简介

第10节 矩阵问题
模拟演练
1.编写程序将某个字符串沿“N”字形排列显示。输入一个字符串,将该字符串沿“N”字形排列显示。例如输入字符串“ABCDEFGH
IJKLMNOPQRSTUVWXYZ”,转换成5行的“N”字形排列如图所示:
/
小张根据排列规律设计了“N”字形排列显示的VB程序,功能如下:在文本框Text1中输入原字符串,在文本框Text2中输入“N”字形的行数row(row大于等于3).单击“转换”按钮Command1后,将字符串沿“N”字形排列显示在列表框List1中。程序运行如图所示。
(1)如果原字符串为“0123456789”,转换为3行“N”字形排列,则第一行最后一个字符为   。?
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim span As Integer ’第一行相邻字母在原字符串中的间距
Dim space As Integer ’第一行相邻字母间的空格个数
Dim row As Integer, i As Integer, s As String, line As String
s = Text1.Text
 ① ?
List1.Clear
span = row * 2-2
space = row - 2
For i = 1 To row
 line =“”: j = i
 Do While j <= Len(s)
line = line + Mid(s, j, 1)  ’输出第i行第一个字符
 If i <> 1 And i<> row Then  ’判断结果不为首行和末行时
  line=line+ Pad(space - i + 1)’输出字符之前的空格
  line=line+  ② ’输出字符?
  line=line+ Pad(i - 2)’输出字符之后的空格
 Else
  line=line+ Pad(space)’输出首行和末行的空格个数
 End If
 j = j + span  ’间隔之后的字符位置
Loop
 ③ ?
 Next i
 End Sub
’函数Pad(n)的值为n个空格构成的字符串,比如Pad(3)代表3个空格构成的字符串
Function Pad(n As Integer) As String’产生n个空格构成
的字符串
’代码略
End Function
答案 (1)8 (2)①row=Val(Text2.Text) ②Mid(s,j+(row-i)*2,1)或Mid(s,j+span-2*i+2,1)或Mid(s,j+(space-i+2)*2,1) ③List1.AddItem line
解析 (1)根据题意可知,0~9共3行的“N”字形排列如下图所示,第一行最后一个字符为8。
0 4 8
1 3 5 7 9
(2)如图所示窗体有2个输入语句,①空应填row=Val(Text2.Text)。仔细观察图例或阅读注释语句可知,首行和末行与其他行的字符个数有区别:如果按字母顺序A~H为一组,I~P为一组,Q~X为一组,可以看到每组首行和末行只有1个字符,其余行每行2个字符,但由于输出时列表框中以行为单位进行输出,所以要按位置取相应的字符,第②空填的就是每组第二个字符在原始字符串的位置。该字符位置与当前行号i有关,也与总的行数row有关,随着行号i增加,取到的字符反而靠前,可以猜测有(row-i)的关系,由于每行有2个字符,且j表示本行(非首末行)本组的第一个字符位置,所以②空填Mid(s,j+(row-i)*2,1),然后用一个具体的值去验证。当然,由于span、space都是由row产生的,相应的也可以用其他2个表达式。第③空用于在列表框list1中输出求得的字符串line,故填List1.AddItem line。
2.使用数组a实现在列表框中显示数字的螺旋矩阵,图a中显示的是螺旋矩阵中数组元素的排列顺序,图b 中显示的是矩阵中数组元素对应的赋值情况(以5×5 为例)。
小明依据上述描述设计了如下VB程序,在Text1中输入矩阵的行数n (n≤10),单击“生成”按钮Command1,在List1中显示n×n的螺旋矩阵。请回答下列问题:
(1)当输入的行数为4时,单击“生成”按钮,则数组元素a(5)的值为   。?
/
/
(2)请在划线处填入合适的代码。
Function pout(x As Integer) As String ’函数功能用于数字的对齐输出
Dim i As Integer, j As Integer, y As String
y= Str(x) : j = Len(y)
For i = 1 To 5 - j
 y = y +“”
Next i
 ① ?
End Function
Private Sub Command1_Click()
Dim a(1 To 100) As Integer
Dim i As Integer, j As Integer, m As Integer, n As Integer
Dim ts As String, t As Integer, v As Integer
n = Val (Text1.Text) :v = 1 : t = 1 ’t用于每次填数方向上的位置修正
For m = n To 1 Step -2
 For i = 1 To m ’向右方向填数
 a(t + i - 1)=v
  ② ?
 Next i
 t = t + n - 1
 For i = 1 To m-1  ’向下方向填数
a(m + t) = v
v=v+1
 ③ ?
 Next i
 t = t - n
 For i = m - 1 To 1 Step -1  ’向左方向填数
a(t + i) = v
v=v+1
 Next i
 For i = m - 2 To 1 Step -1 ’向上方向填数
a(t - n + 1) = v
v=v+1
t = t-n
 Next i
 t=t+2
 Next m
 For i = 1 To n ’以图a方式在List1中输出数组数据
ts =“”
For j = ④ To i * n?
 ts = ts + pout(a(j))
Next j
List1.AddItem ts
 Next i
 End Sub
答案 (1)12 (2)① pout = y ②v=v+1 ③t=t+n ④(i - 1) *n+1
解析 (1)由题意可得 4×4 螺旋矩阵如图:
1  2  3  4
12  13 14 5
11 16 15 6
故对应的数组元素a(5)的值为12。
(2)①空填函数名的赋值语句。②空根据算法描述,观察4个循环语句,发现缺少一个计数语句v=v+1。③空较难,在手工填数时按螺旋方式,但程序实现中,在列表框中是按行输出的,所以需要对数组下标进行控制,观察4个对数组元素的赋值语句,发现主要靠变量t、i、n控制数组下标,i是循环次数,n是矩阵行数,t才是每次填数方向上的位置修正变量。观察图a,在自上往下的填数过程中,数组下标的变化刚好相差n,结合向上填数的For循环语句中修正t的赋值语句是t=t-n,故此处应填t=t+n。④空所在的双重For循环用于输出,外重循环控制行数,内重循环控制每行,循环变量的初值就是第i行的起点位置:(i-1)*n+1
课件2张PPT。
第10节 矩阵问题  矩阵最方便的表示方式就是二维数组。如果用一维数组来表示矩 阵(二维数组),则需要对一维数组的下标进行换算。教材研读
同课章节目录