2.4循环结构同步练习沪科版信息技术选修1
展开2.4循环结构同步练习沪科版信息技术选修1
学校:___________姓名:___________班级:___________考号:___________
一、选择题
1.某对分查找算法的 VB 程序段如下:
i = 1: j = 10: c = 0
key = Val(Text1.Text)
Do While i <= j
m = (i + j) \ 2
c = c + 1
If key < a(m) Then
j = m – 1
Else
i = m + 1
Loop
Label1.Caption = Str(j)
数组a(1)到a(10)的值依次是“1,5,5,7,9,9,9,11,16,18”,下列说法错误的是( )
A.若 Text1 中输入 10,程序运行后Label1中输出的值是7
B.程序运行后,a(i)的值可能等于 key
C.程序的功能是输出数组中最后一个小于等于 key 的元素所在的位置
D.对于 Text1 中不同的输入值,程序运行后 c 的值一定大于 2
2.数组元素a(1)到a(n*2)为互不相等的正整数(n≥1),要在其中找到最大值和次大值,并分别存储到变量m1和m2中。实现该功能的VB程序段如下:
m1=0:m2=0
For i=1 To n * 2 Step 2
If a(i)>a(i+1)Then
t1=a(i):t2=a(i+1)
Else
t1=a(i+1):t2=a(i)
End If
If Then
m1=t1:m2=t2
ElseIf Then
m2=m1:m1=t1
ElseIf Then
m2=t1
End If
Next i
上述程序段中方框处可选代码为:①t1>m1 ②t1>m2 ③t2>m1则(1)(2)(3)处代码依次为( )
A.①②③ B.②③① C.③①② D.③②①
3.无序数组元素a(1)到a(n)中存在一个出现次数过半的值,如数组a的值依次为3,1,2,2,2,其中出现次数过半的元素为2。查找该值的VB程序段如下:
c= a(1): cnt= 0
For i= 1 To
If Then c= a(i)
If Then cnt=cnt+1 Else cnt= cnt-1
Next i
Text1.Text="出现次数过半的值是: "&c
上述程序段3个方框处的代码分别为( )
A.①n ②cnt=i ③c = a(cnt) B.①n\2+1 ②cnt=0 ③c =a(i)
C.①n ②cnt=0 ③c=a(i) D.①(n+1)\2 ②cnt=i ③c = a(cnt)
4.有如下VB程序段:
Dim a(0 To 10)As String
s= Text1.Text
a(0)="": a(1)= Mid(s, 1,1): t=1
For i= 2 To Len(s)
If t>= 1 And Mid(s, i, 1)= a(t) Then
t=t- 1
Else
t=t+1: a(t)= Mid(s, i, 1)
End If
Next i
运行程序段,在文本框Text1中输入以下字符串,运行后变量t的值与其它三项不同的是( )
A.AABAB B.AAABA C.BAABA D.BBABA
5.在文本框 Text1 中输入十进制数x,将其转换为十六进制数后在标签 Label1 上输出。VB 程序段如下:
Dim x As Integer Dim s As String
Dim st As String
Dim t As Integer
st=”0123456789ABCDEF”
x = Val(Text1.Text)
Do While x > 0
Loop
Label1.Caption=s
方框中的代码由以下三部分组成:
① x = x \ 16 ② s = Mid(st,t+1,1)+ s ③ t = x Mod 16
下列选项中代码顺序正确的是( )
A.③②① B.①③② C.②③① D.②①③
6.某对分查找算法的VB程序段如下:
Key= Val(Text1. Text)
i=1: j=10 : n=0
Do While i<=j
m=(i+j)\2
n=n+1
If b(m) > Key Then
i=m+1
Else
j=m-1
End If
Loop
Text2. Text= str(n)
数组元素b(1)到b(10)的值依次为“25,19,17,13,10,9,8,5,3,2”。在文本框Text1中输入待查找的整数,执行该程序段后,文本框Text2中显示3,则待查找数不可能是( )
A.19 B.9 C.4 D.2
7. ,其中n为正整数,计算s值的VB程序段如下:
s=1 : i=1 : t =1
Do While i < 2 * n -1
Loop
方框中的代码由以下三部分组成:
s = s + t i = i + 2 t = -t / (i * (i-1) )
下列选项中,代码顺序正确的是( )
A.③①② B.①②③ C.②①③ D.②③①
8.某加密算法为:从明文第一个字符开始,每间隔k个字符,将长度为k的字符串进行逆序换位加密,若剩余字符长度不满k则不进行位置变换。如:明文为“IVeryLikeVB6.0”,k的值为3,则加密结果为“IVeLyrike6BV.0”。编写如下VB程序段实现该加密算法,则程序段中3个方框处的代码分别为:( )
s = Textl.Text
k = Val( Text2.Text): i = 1: count = 0: flag = False
Do While i<= Len(s)
count = count + 1
If i+k-1 <= Len(s) And flag Then
Else
ns= ns + Mid(s,i,1)
i = i + 1
End If
If count = k Then
count = 0
If flag = True Then
End If
Loop
Lable1.Caption = ns
A.①ns = ns + Mid(s,i+k–count,1) ②i=i+k ③flag = Not flag
B.①ns = ns + Mid(s,i+k–count,1) ②i=i+1 ③flag = False
C.①ns = ns + Mid(s,i+k-1,1) ②i=i+k ③flag = Not flag
D.①ns = ns + Mid(s,i+k-1,1) ②i=i+1 ③flag = False
9.有如下VB程序段:
i = 1: j = 9: f = False
L = 0: R = 0
Key = Val(Text1.Text)
Do While i <= j And f = False
m = Fix((i + j) / 2)
If Key = a(m) Then
f = True
If Key < a(m) Then
j = m - 1: L = L + 1
Else
i = m + 1: R = R + 1
End If
Loop
若a(1)到a(9)的值为5,6,18,22,27,28,55,70,80,程序运行后,L、R的值为2、1,则输入的关键字Key可能是( )
A.5 B.6 C.18 D.28
10.有如下VB程序段:
n=Int(Rnd*4)+1
a(1)=7:a(2)=2:a(3)=7:a(4)=3:a(5)=9:a(6)=4
For i=2 To n
For j=1 To 7-i
If a(j) t=a(j):a(j)=a(j+1):a(j+1)=t
End If
Next j
Next i
执行该程序段后,数组元素a(1)到a(6)的值可能为( )
A.977432 B.234779 C.797432 D.977342
二、填空题
11.DIM A(-2 TO 3, 4) AS INTEGER ,该数组占的字节数是( ),该数组中的元素个数是( )个。
12.有如下语句:
i=7:s=0
do while i<119
s=s+i
i=i+4
loop
print s
该循环执行__________次。
13.运行以下VB程序,输出结果是_____________。
Private Sub Command1_Click()
Dim s As Integer, x As Integer
s = 0
x = 20
For x = 20 To 1 Step -3
s = s + x
Next x
Print x
End Sub
14.小红编写了一个将5位以内的十六进制正整数转换成十进制数的VB程序,功能如下:在文本框Text1中输入一个十六进制正整数,单击“转换”按钮Command1,在标签Label3中显示结果。程序运行界面如图所示。
(1)要使窗体Form1标题显示“数制转换”,则需修改窗体的________(单击,填字母:A.Font/B.Caption/C.BackColor)属性。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()
Dim x As String, ch As String
Dim flag As Boolean, i As Integer, result As Long
x=_________
i=1
result=0
flag=True
ch=Mid(x,1,1)
Do While i <=Len(x) And flag=True
If ch>= “0” And ch<= “9” Then
result=result * 16+Val(ch)
ElseIf ch>= “A” And ch <= “F” Then
result=result * 16+(Asc(ch)-Asc (“A”)+10)
ElseIf ch>= “a” And ch <= “f” Then
result=result * 16+(Asc(ch)-Asc (“a”)+10)
Else
flag=False
End If
i=i+1
ch=_________
Loop
If flag=True Then
Label3.Caption=Str(result)
Else
Label3.Caption= “输入错误”
End If
End Sub
(3)若在文本框Text1中输入5+9,单击“转换”按钮后,标签Label3中显示的内容是______(单选,填字母:A.14/B.E/C.输入错误)。
15.项目学习:解密盛唐时期诗人关系
【项目情境】
唐代诗人史传有名有姓者不下千余人,他们组成了大大小小不同的朋友圈。有的因为诗风接近,如李白代表的浪漫主义、杜甫代表的现实主义、王维代表的田园山水、芩参代表的边塞诗风;有的因为年龄大体相近,如盛唐时期的李白、杜甫、贺知章等;有的因为政见相近,如韩愈作为古文运动的领袖级人物,当时很多文人墨客以进入他的朋友圈为荣。在盛唐时期有这样一个朋友圈,他们的友谊跨越数十年,诗人之间通过互动诗歌,表达抒发情感,是他们朋友圈的一种表现方式,用计算机来分析这个时代的唐诗,就会发现诗人之间有着你意想不到的千丝万缕的关系。学校某研究性学习小组利用大数据分析技术,通过对诗词分析,绘制盛唐时期几位诗人(杜甫、李白、王维、孟浩然……)之间的社交关系网络图,试图推测哪位诗人是同时代诗人的核心,哪位诗人的影响最大,从而更好地学习、理解唐诗。
【项目准备】为完成项目,需要确定主题、目标、制订规划等各项工作。在此不一一展示。明确的主题—盛唐时期的诗人及诗词分析和诗人社交关系网络图
【项目实施】项目研究主要以诗人诗作为依据。具体实施过程如下:
(一)明确需要采集的数据选择合适的采集途径、工具和方法。全唐诗一共四万多首,分析采集相关数据的条件:①盛唐时期;②诗人、诗人之间经常称呼对方的别名;③考虑到同名同姓的问题,因此还需要诗人的生卒年的信息。
根据要求,完成答题。
(1)全唐诗数量较多,一共四万多首,来源分散,存储在互联网不同的服务器与各客户终端。从大数据存储与计算的角度来看,由此可知大数据具有____________的特征。(单选)
A.精确让位于模糊B.价值密度低C.分布式存储D.变化速度快
(2)网络上如此海量的关于唐诗的数据,有文字、图片、视频、音频等。这些数据种类和格式也不一致,表明各种____________数据共存于网络中。(多选)
A.结构化B.半结构化C.非结构化D.网状结构
(3)面对繁杂的数据,学习小组决定研究解密盛唐时期诗人关系,并利用计算机程序从网络中采集诗人、别名等相关的文本数据,并以一定的数据结构存储形成盛唐诗库。存储数据主要有两种方式,一种是____________,一种是数据云存储。你建议学习小组采用____________数据存储方式,理由是___________________。
(二)利用 Python程序采集、整理、分析数据。第一步,从互联网中筛选出符合条件的诗人及诗作等文本,整理并形成盛唐诗库;第二步,确定人物关系分析策略,即从唐诗库中搜索、统计诗人或别名的引用次数,确定二人之间的疏密关系,规则是诗的标题和正文中只要提到过对方,那么两者之间的引用关系加1,若一首诗中提到多次对方,只算一次引用;第三步,编写程序并调试验证。用爬虫程序段(如下图所示)采集数据。根据要求,完成答题。
base_url=’http://www.zhongguoshici.com/shici/lis
t?cate=%E5%94%90%E8%AF%97%E4%B8%89%E7%99%BE%E9%A6%96&p=’
import requests
import parsel
import re
headers={
‘User-Agent:’Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML, like Gecko)
}
for i in range(1,3):
the_ url=base _url+str(i)
response=requests get (the _url, headers=headers)
html_ str=response. text
html= parsel. Selector(html_str)
title_url= html. xpath(’//div[@class="poem_ content"]’).extract()
f=open("poet. txt","a" )
for poet in title_url:
the_peom=urls=re findall(<div class="poem_content">(.* ?)
f write(str(the_ peom[0]))
f. write("\n")
f.close()
(4)使用爬虫程序获取文本数据并形成唐诗库文件,所使用的数据采集方法为____________(选填:系统日志采集法、网络数据采集法其他数据采集方法)。阅读程序可知每首诗存放于列表poem[]中(以唐诗“春晓”为例如下表),采集后的数据保存在poet.txt文件中,该文件是一个_________________(选填:数据库文件、文档文件、图像文件、网页文件)。该数据采集方法可以将非结构化数据从网页中抽取出来,将其存储为统一的数据文件,并以_______________________的方式存储(选填:结构化、半结构化)
Poem[0]
Poem[1]
Poem[2]
Poem[3]
“春晓”
“唐”
“孟浩然”
“春眠不觉晓,……,花落知多少”
。
(5)以诗人甲、乙为例解密二人关系,完成答题。数据处理过程中要运用一定的分析方法对大量无序的数据进行整理、分析挖掘数据内在的结构和规律,从而提取有价值的、有意义的数据。数据分析一般包括特征探索、关联分析、聚类与分类等。让计算机搜索遍历唐诗库中有关甲、乙两位诗人的诗文,统计两位诗人或别名相互的引用次数,找寻二人之间的关联。这是运用了__________________(选填:特征探索、关联分析、聚类与分类)方法进行数据分析,也是__________________(选填:枚举、二分查找、排序)算法思想去求解这一问题的体现。
(6)编制计算机程序解决问题的过程中,__________________是编程的核心,是解决问题的方法和步骤。选用Python程序设计语言编写程序,Python属于__________________(选填:分析问题、设计算法、编写程序、调试运行、机器语言、汇编语言、高级语言)。图a示意,使用__________________(选填:自然语言、流程图、伪代码)进行算法描述,且运用循环控制结构嵌套了__________________控制结构,如果要跳出本次循环体的执行,应使用__________________语句实现跳转。
(7)阅读程序(图b示意),程序中以“#”开头的语句,其作用是_______________,程序调试完成,通过“另存为”保存文件,文件后缀名为_____________。
图a
import gushi #从txt文档中读取古诗
poems=gushi. readDatat()#用poems存储所有的唐诗jia=input("请输入诗人甲:")
yi=input("请输入诗人乙:")
gx=0
for poem in poems:#逐一列举:poem代表其中一首古诗
if jia in poem[2]and(yi in poem[0]or yi in poem[3]): gx=gx+1 #问题的解
print(jia,'"写给",yi,"的古诗共",gx,"首")
图b
(三)分析数据进行可视化表达并推测盛唐时期诗人关系。
(8)解密盛唐时期诗人关系。数据的可视化以易于理解的方式展示和诠释数据之间的关系、趋势与规律等,使人们更好地理解数据。从常用和实用的维度,数据可视化的呈现类型主要分为探索型和解释型,其中_________型可以帮助人们发现数据背后的价值,_________型则把数据简单明了地解释给人们(选填:探索、解释)。数据分析类型不同可视化呈现方式也不同,如关于趋势的分析,可用_________类型的图表呈现,关于比例的分析,可用_________类型的图表呈现关于关系的分析,可用_________类型的图表呈现。
(9)解密盛唐时期诗人关系。学习小组选择用网络关系图呈现盛唐时期诗人社会网络关系(如图所示)。图中箭头表示诗人之间的引用关系,如李白引用了贺知章,那么就有李白指向贺知章箭头;箭头的粗细程度则表示了诗人之间引用关系的强弱,如李白引用孟浩然的数量达4次,箭头就要粗一些。________
(10)解密盛唐时期诗人关系。观察图示,从绘制的盛唐的诗人社交关系网络图,尝试推测哪位诗人是盛唐诗人的核心,哪位诗人的影响最大,请简要阐述。(要求100字左右)________
三、操作题
16.某校新初一学生共288人,根据分班考成绩平行分成6个班。规则如下:首先对全年级学生按女生在前、男生在后,根据分班考试成绩降序排序,然后进行蛇形分班,如图a所示:
编写VB程序,实现上述平行分班功能。运行程序,单击“读学生成绩”按钮Cmd1,从数据库文件中读取学生的编号、姓名、性别、分班考成绩,分别保存在数组no、xm、xb、cj中,再单击“平行分班”按钮Cmd2,在列表框List1中输出分班结果。程序运行界面如图b所示。
请回答下列问题:
(1)若要清空列表框List1,能实现该功能的语句是( )单选,填字母:
A. List1.Caption = "" / B. List1.Text = "" / C. List1.Clear)
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Const num = 288, class = 6
Dim no(1 To num) As Integer' 编 号 no
Dim xm(1 To num) As String' 姓 名 xm
Dim xb(1 To num) As String' 性 别 xb
Dim cj(1 To num) As Single'分班考成绩 cj
Dim bj(1 To num) As Integer '分到班级 bj
Dim w As Integer'女生人数 w
Private Sub Cmd1_Click()
'从数据库文件中分别读取学生的编号、姓名、性别、分班考成绩,分别保存在数组 no、xm、xb、cj 中
'统计女生人数保存在 w 中,代码略
End Sub
Private Sub Cmd2_Click()
Dim i As Integer, j As Integer, k As Integer Dim t As Integer, c As String
For i = 1 To num - 1
______
For j = i To num - 1
'排序时,女生在前、男生在后降序排序,分班考成绩相同时不作特别处理
k = j
Next j
If k <>i Then
t = no(k): no(k) = no(i): no(i) = t
t = cj(k): cj(k) = cj(i): cj(i) = t
c = xm(k): xm(k) = xm(i): xm(i) = c
c = xb(k): xb(k) = xb(i): xb(i) = c
End If
Next i
j = 1: k = 1
For i = 1 To num
______
j = j + k
If i = w Then
j = 1: k = 1
If j = class + 1 Or j = 0 Then
_____
j = j + k
End If
Next i
List1.AddItem "班级姓名性别成绩"
For i = 1 To num
List1.AddItem Str(bj(i)) + "" + xm(i) + "" + xb(i) + "" + Str(cj(i))
Next i
End Sub
(3)程序中加框处代码有错,请改正______。
四、简答题
17.将一张面值为100元的人民币等值换成100张5元、1元和0.5元的零钞,要求每种零钞不少于1张,问有哪几种组合?
Dim i,j,k As Integer ′ i,j,k用于记录5元,1元,0.5元的张数
Print“5元 1元 0.5元”
For i=1 To 20
For j=1 To 100-i
k=__①__
If__②__Then
Print i,j,k ′分别输出i,j,k三个变量。
End If
Next j
Next i
18.在“抗击疫情,‘宅’出精彩”征文活动中,每位选手可以提交一篇作品。活动以互评的形式展开:每位选手对m篇作品进行打分(本人作品回避),方法如下:
① 用1-n数字代表n个作品,打乱顺序后分配给n个选手。分配方案保存在数组a中,如图a存储了两组分配方案(n=5)。在第一个分配方案中把4号作品分配给1号参赛者,1号作品分配给2号参赛者(选手编号与序号错开)……。
4
1
5
2
3
ça(1)~a(n)中存储第一个分配方案
2
3
4
5
1
ça(n+1)~a(2*n)中存储第二个分配方案
↑第i列中的作品拿给i号参赛者打分图a
②分配方案的形成方法: 将1~n之间的随机数字依次放到第1个位置、第2个位置……,随机数不能与位置号相同,并且要防止分配冲突,如前三个分配序号是“2 3 4”,那么在第4位上只能放“5”(如放“1”会导致第5个位置没有符合要求的数字,因此位置n-1需要判断数“n”是否已经分配,如果未分配,位置n-1放置数“n”),最终方案“2 3 4 5 1”。
③评m个作品需要m个分配方案。方案间要避免同一个人拿到重复的作品。如第16题图a第3行上的数据“5 1 2 3 4”不符合要求,因为会使第2号选手重复拿到1号作品。
小明依据上述方法设计了VB程序,功能如下:在文本框Text1和Text2分别输入参赛人数和每人打分的作品数量,单击“分配”按钮Command1,在列表框List1中输出结果。程序运行效果如图b所示。
请回答下列问题:
(1)n=5,m=3,a(1)~a(10)中的数据如图a所示,a(11)~a(15)的数据可能是 (单选,填字母:A.5 4 3 1 2/B.5 4 1 3 2/C.3 4 5 1 2)
(2)请在划线处填入合适的代码。
Dim n As Integer '总人数/总作品数
Dim m As Integer '每人分配篇数
Dim a(1 To 500) As Integer '数组a大小满足处理要求
Dim c(1 To 100) As Integer '数组c大小满足处理要求
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
n = Val(Text1.Text): m = Val(Text2.Text)
Randomize
i = 1
Do While i <= m
For j = 1 To n
c(j) = 0 '本轮分配方案中还没有数字j, c(j)=0,否则c(j)=1
Next j
For j = 1 To n
If j = n - 1 And c(n) = 0 Then
①
Else
k = r(n, j)
End If
a((i - 1) * n + j) = k '分配数字k到当前方案的第j个位置上
c(k) = 1
Next j
If ② Then i = i + 1
Loop
s = ""
For i = 1 To n
s = "参赛者" & i & ":"
For j = 1 To m
s = s + Str(a((j - 1) * n + i))+ ","
Next j
List1.AddItem s
s = ""
Next i
End Sub
Function r(x As Integer, y As Integer) As Integer
'生成一个取值在[1,x]之间,可以放在y位置上的随机数,满足条件r<>y andc(r)=0
End Function
Function check(c As Integer) As Boolean
'本轮方案和前面几次的分配方案比较,如果有人分到了重复作品,返回FALSE
Dim p As Integer,f As Boolean
f = True
p = 1
For i = 1 To c * n
If ③ Then
f = False: Exit For
End If
p = p mod n +1
Next i
check = f
End Function
参考答案:
1.B
2.C
3.C
4.C
5.A
6.D
7.D
8.A
9.A
10.C
11. 60 30
12.28
13.77
14. B Text1. Text或其他等价表达式 Mid(x,i,1)或Mid(Text1,Text,i,1)或其他等价表达式 C
15. C ABC 数据本地存储 云存储 方便文件共享,只需联网就可读取文件,可以脱离本地计算机保存文件。 网络数据采集法 文档文件 结构化 关联分析 排序 设计算法 高级语言 流程图 判断循环 break 解释、注释 .py 探索 解释 折线图、柱形图、柱线混合图
饼状图、堆叠面截图、百分比圆环图、圈图 散点图、雷达图、网络关系图、词云图、数据地图、动态势力图、3D动态显示图 如局部图b所示。由引用次数可知,从社交关系从深至浅来说,杜甫的好友依次是李白、孟浩然、王维;李白的好友是孟浩然、杜甫、贺知章;贺知章没有好友;王维的好友只有孟浩然;孟浩然的好友只有王维。 如局部图b所示。由被引用次数可知,李白的被引用次数是12,孟浩然的被引用次数是8,杜甫的被引用次数是3,王维的被引用次数是2,贺知章的被引用次数是2。故李白是是盛唐诗人的核心;从引用别人的次数来看,杜甫的引用别人的次数是15,李白的引用别人的次数是9,维的引用别人的次数是2,孟浩然的引用别人的次数是1,王贺知章的引用别人的次数是0。故杜甫的影响最大。
16. C k=num bj(i)=j k=-k cj(k)
18.(1)B
(2)①k= n ②check(i - 1) ③a(i) = a(c * n + p)
2.4调试程序同步练习人教版信息技术选修1: 这是一份高中中图版 (2019)本册综合复习练习题,共11页。试卷主要包含了选择题,填空题,操作题等内容,欢迎下载使用。
2.2vb语言概述同步练习沪科版信息技术选修1: 这是一份高中信息技术教科版 (2019)选修4 人工智能初步本册综合同步练习题,共5页。试卷主要包含了选择题,填空题,操作题等内容,欢迎下载使用。
2.3选择结构同步练习沪科版信息技术选修1: 这是一份高中信息技术教科版 (2019)选修4 人工智能初步本册综合当堂达标检测题,共9页。试卷主要包含了选择题,填空题,操作题等内容,欢迎下载使用。