字符串处理及排序 练习-浙江省2023届高三信息技术一轮复习VB专题_第1页
字符串处理及排序 练习-浙江省2023届高三信息技术一轮复习VB专题_第2页
字符串处理及排序 练习-浙江省2023届高三信息技术一轮复习VB专题_第3页
字符串处理及排序 练习-浙江省2023届高三信息技术一轮复习VB专题_第4页
字符串处理及排序 练习-浙江省2023届高三信息技术一轮复习VB专题_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 练习1、(2021宁波模拟15)一个含有n个元素的整数数组,如果数组两个连续元素之间差的绝对值包括了1,n-1之间的所有整数,则称之为一组“完美跳数”。小余制作了验证完美跳数的VB程序,功能如下:在文本框Text1中输入一组以逗号分隔且以逗号结尾的整数数组,单击“验证”按钮Command1,在标签Labe11中显示验证结果,运行界面如图所示。(1)观察程序界面,具有Caption属性的对象有 个。(填个数)Private Sub Command1 Click()Dim n As Integer,i As Integer,j As Integer,s As String,chr As Stri

2、ng,temp As StringDim a(1 To 100)As Integer,b(1 To 100)As Integers=Text1.Texti=1:n=0Do While i=Len(s)ch=Mid(s,i,1)If ch=0And ch=9Thentemp=temp+chElsen=n+1 temp=End Ifi=i+1LoopFor i=2 To n Next iFor i=1 To n-2For j= n To i+1 Step-1If b(j)b(j-1)Then t=b(j):b(j)=b(j-1):b(j-1)=tNext jNext iFor i=1 To n-1

3、If b(i) i Then Exit For Next iIf i=n Then Labell.Caption=完美跳数Else Labe11.Caption=非完美跳数End Sub(2)请在上述程序的划线处填上合适的代码。(3)上述程序加框处代码有误,请改正。2、(2021嘉兴模拟15)仓库中有一批不同款式的衣服,相同款式的衣服具有相同的代号,现要统计每个款式的数量,并按数量从多到少的排序。小明编写了一个VB程序完成该统计。程序运行时,在文本框Text1输入每件衣服的代号n(1n100),代号之间用逗号相隔,衣服的总数量不超过100件。单击按钮Command1后,在列表框List1中按每

4、个款式的库存数量从大到小输出。程序运行界面如第15题图所示。(1)代码“Private Sub Command1_Click()”的Click是 (单选,填字母:A.对象名/B.属性名/C.事件名)。(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。(3)已知程序中加框处代码有错误,请改正。Private Sub Command1_Click()Dims As String,ch As String,p As Integer,t As IntegerDim a(1 To max)As Integer,b(1 To max)As Integer,c(1 To max)As Intege

5、r数组a用于存储输入的数据,数组b用于存储每款衣服的数量,数组c用于存储衣服的代号;数组a和b的初值均为0。s=Text1. Text:p=1 :max=100For i=1 To maxc(i)=iNext iFor i=1 To Len(s) If ch=0And ch=9Thena(p)=a(p)*10+Val(ch)Else End IfNext iFor i=1To p统计各款衣服的数量b(i)=b(i)+1Next iFor i=1 To max-1排序k=iFor j=i+1 To maxIf Then k=jNext jt=b(i):b(i)=b(k):b(k)=tt=c(i)

6、:c(i)=c(k):c(k)=tNext iFor i=1 To maxIf b(i)0 Then Listl.AddItem Str(c(i)+Str(b(i)Next iEnd Sub3、(2021杭州模拟15) “2021年我要学好Python!”小明这样想着。虽然一年里只要不出去旅游的日子都可以学习,但是对算法学习而言,连续不间断的效果更好,小明希望选一个最长的时间段学习Python。输入某些特定日期(X月X日)作为计划好的外出旅游时间,算出2021年最长的学习天数。编写VB程序,实现上述功能。运行程序,在文本框Textl中输入计划出去旅游的时间,用逗号间隔,并以逗号结尾,输入月份和

7、日期。如“3,1,2,19,”表示3月1日和2月19日要外出旅游不能学习。单击“统计”按钮Command1,输出最长学习天数。程序运行界面如第15题图所示。请回答下列问题:(1)窗体中至少包含 个对象(不含窗体)。(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。(3)程序中加框处代码有错,请改正。Dim yf(1To 12)As Integer每月天数Private Sub For m Load)“初始化1-12月天数,依次存储在数组yf(1)-yf(12)中,代码略End SubPrivate Sub Command1Click)Dim k As Integer,n As Int

8、eger,i As Integer,jAs IntegerDim t As Integer,z As Integer,qt As Integer,maxk As IntegerDim y(1To 365)As Integer, r(1To 365)As Integery数组存储月,r数组存储日Dim sum(0 To 12)As IntegerConst yearn=365k=0For i=1 To Len(Text1.Text)c=Mid(Text1.Text,i,1)Ifc=,Thenk=k+1Ifk Mod2=1Then y(k+1)2)=t Else r(k+1)2)=tt=0.Els

9、e t= End IfNext in=k2For i=1To n-1以月为主关键字、日为次关键字升序排序For j=1To n-i If thent=y(j):y(j)=y(j+1):y(j+1)=tt=r(j):r(j)=r(j+1):rj+1)=tEnd IfNext jNext isum(0)=0For i=1To 12sum(i)=sum(i-1)+yf(i)Next imaxk=0:t=0For i=1To nz=tt=r(i)+ sum(y(i)(3)改错Ifi1 Then qt=t-z-1Else qt=t-1If qtmaxk Then maxk=qt 记录长时间段Next i

10、qt= If qtmaxk Then maxk=qtLabel3.Caption=最长学习天数为:+Str(maxk)+“天”End Sub4、(2021台州模拟16)点阵方式是汉字输出显示和打印的一种字形编码。某字库描述汉字字形的点阵规模为8x8,每个点用1个二进制位表示,“0”表示白点,“1”表示黑点,且左上角(第1行第1列)的点是白点。汉字“中”的点阵字形和对应编码如第16题图a所示。 图a 图b现对该汉字的编码进行压缩:从第1行第1列开始,从左到右、由上至下,对连续的“0”和“1”进行压缩,得到一组数值,即为对应汉字的压缩码。如,“中”的压缩码为“3,1,4,7,1,1,2,1,2,1

11、,1,1,2,1,2,1,1,7,1,1,2,1,2,1,4,1,7,1,4”,其含义为:第一个数“3”,表示连续3个0;第二个数“1”,表示连续1个1;第三个数“4”,表示连续4个0;第四个数“”,表示连续7个1;.(以此类推,依次表示0和1的交替个数)。小王编写了一个汉字压缩码的解压缩程序,功能如下:在文本框Textl中输入以逗号分隔的压缩码,单击“解压缩”按钮Commandl,程序对压缩码进行解压缩处理,将编码转换成字形显示在列表框Listl中,并计算白点、黑点数,显示在标签Labell中。程序运行界面如第16题图b所示。(1)若某汉字压缩码为“3,1,7,1,7,4,4,1,7,1,7

12、,1,7,1,4,8”,则该字形中黑点的个数是 。(2)实现上述功能的VB程序如下,请在划线处填入合适代码。Const n=8Dim a(l To n*n)As IntegerPrivate Sub Command1_ClickODim s As String,c As String,1ine As StringDim i As Integer,j As Integer,k As IntegerDim total As Integer,flag As Integer,sum(0 To 1)As Integers=Text1.Text +,j=1:k=0For i=1 To Len(s)c=Mi

13、d(s,i,1)If c=,Thenk=k+1a(k)=Val( )j=i+1End IfNext isum(0)=0:sum(1)=0total=0:line=flag=0 左上角编码为0,即白点For i=1 To kFor j=1 To a(i)total=total+11ine=line+ If total Mod n=0 ThenList1.AddItem line1ine=End IfNextj flag=1-flagNext iLabel1.Caption=白点数:+Str(sum(0)+黑点数:+Str(sum(1)End SubFunction convert(x As In

14、teger)As String将编码0、1转换成白点和黑点;代码略End Function5、(2021丽水模拟16)将某字符串按“V”的形状进行变换,其变换方法描述如下:(1)将字符串中的字母转换为大写字母后按升序进行排序;(2)根据给定的行数,将字符串从上往下、从左到右进行“V”字形排列;(3)从左往右逐行读取字符串并输出;例如:输入字符串为:“NoThinglslmpossible”,经过排序得到字符串:“BEGHIIIILMNNOOPSSST”,行数输入为3时,排列如下:经过变换后得到新字符串为:“BILOSEHIIMNOSSGINPT”。编写VB程序,实现如下功能:在文本框Textl

15、中输入行数,在文本框Text2中输入字符串(限定字母),单击“变换”按钮Command1,在标签Label3中输出变换结果。程序运行效果如图所示。(1)若小明在文本框Textl中输入3,在文本框Text2中输入的的字符串为“NOTHING”,则在标签框Label3中输出的结果为 。(2)实现该功能的VB程序如下,请在划线处填入合适的代码。6、(2021金华十校模拟16)删数问题。输入一个正整数s,去掉其中任意k个数字后,剩下的数字按原左右次序将组成一个新的整数,设计算法使得剩下数字组成的新数最小。为了实现上述要求,小明按“每次删除左侧第一个升序序列的末位数字”的思想,编写了一个VB程序,程序的

16、运行界面如下所示,在文本框Text1中输入正整数s,在文本框Text2中输入删除的数字个数k,单击按钮Command1后,在标签Label3上显示结果,显示结果要求删除前导零,若删完后结果为0,则输出0。实现上述功能的程序如下:Dim a(1To 1000)As IntegerPrivate Sub Command1_Click()Dims As String,k As Integer,n As IntegerDim i As Integer,j As Integer,x As IntegerDim left As Integer,flag as Booleans=Text1.Textk=Va

17、l(Text2.Text)n=Len(s)If k n ThenLabel3.Caption=”输入的数据不足+Str(k)+“位”Exit SubEnd IfFor i=1 To na(i)=Val(Mid(s,i,1)Next iDo While k0flag=TrueFor j=1To n-1If ThenCall ss(j,n)删除数组中第j位,后续数据前移一位n=n-1:k=k-1flag=FalseExit For 退出for循环End IfNext jIf flag Thenn=n-k:k=0End IfLoop,在剩余的n个数字中,去除多余额前导零,如:00010,只输出10i

18、=1:left=1Do While left=left+1i=i+1LoopLabel3.Caption=For i=left To nLabel3.Caption=Label3.Caption +Str(a(i)Next iIf n=0 Then Label3.Caption=0End Sub数组a中,删除head位置的数据,后续数据前移1位Sub ss(head As Integer,tail As Integer)For i=head To tail-1a(i+1)=a(i)Next iEnd Sub(1)若要清空label1中内容,能实现该功能的语句是 (单选,填字母:A.Labell

19、.Label=/B.Labell.Caption=“/C.Labell.Clear)。(2)请在划线处填入合适的代码。(3)加框处代码有错,请改正。7、(2021绍兴模拟15)为了把工厂中高低不等的物品按从低到高排好序,工程师发明了一种排序机械臂,它首先在参加排序的所有物品中同时选出高度最低和最高的物品,分别交换到左、右边界,再缩小左、右边界,然后在余下的物品中采用同样的方法排序,直到所有物品成为一个有序的序列。编写VB程序,实现上述排序功能:运行程序,单击“读取”按钮Command1,在列表框Listl中显示待排序的物品,然后单击“排序”按钮Command2,在列表框List2中显示排序好的

20、物品。程序运行界面如图所示。请回答下列问题:若要程序运行时,窗体For m1的标题显示为“物品排序”,则For mLoad)事件中应添加的代码是 (单选,填字母:A.For ml.Name=物品排序/B.For ml.Text=物品排序/C.For ml.Caption=物品排序)。(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。(3)程序中加框处代码有错,请改正。Const m=9 m表示物品个数Dim id(m)As Integer,gd(m)As IntegerPrivate Sub Command1 Click)读取物品的信息依次存入数组id,gd中,并在列表框List1中

21、显示,代码略End SubPrivate Sub Command2_Click)Dim LAs Integer,R As Integer,t As integerDim imin As Integer,imax As IntegerL=1:R=m分别指向待排序区间的左右边界Do While LRimin=L For i=L+1To RIf gd(i)gd(imax) Then imax=iIf gd(i)gd(imin)Then imin=iNext it=id(imin):id(imin)=id(L):id(L)=tt=gd(imin):gd(imin)=gd(L):gd(L)=tIf im

22、ax=L Then 考虑最大值恰好在L位置的情形t=id(imax):id(imax)=id(R):id(R)=tt=gd(imax):gd(imax)=gd(R):gd(R)=tL=L+1 LoopFor i=1To mList2.Addltem Str(id(i)+Str(gd(i)Next iEnd Sub8、(2021温州十校模拟15)为方便习题讲解,需对某次考试中选择题得分率数据进行统计分析,找出选择题得分率最低的前m项对应的题号及考点(若有与第m项得分率相同的,一并选取)。编写VB程序,实现上述功能。运行程序时,先读取每个选择题的题号、得分率和考点,显示在列表框List1中。在文本

23、框Text1中输入得分率最低的前m项值,单击“统计”按钮,按照得分率从小到大升序排序,并在列表框List2中输出得分率最低前m项的题号、得分率及考点。程序运行界面如第15题图所示。请回答下列问题:(1)“统计”按钮的事件过程名是 。(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。(3)程序中加框处代码神墙有错,请改正。Dim n As IntegerDim th(0 To 100)As Integer,df(0 To 100)As Single,kd(1 To 100)As StringPrivate Sub For m_Load()读取题号、得分率和考点分别存入数组th、df和k

24、d数组,在列表框List1中显示,代码略选择题的个数存入变量n,代码略End SubFunction dq(x As String,k As Integer)As String固定数据的位数dq=xDo While dq=dq+ LoopEnd FunctionPrivate Sub Select_Click()Dim m As Integer,i As Integer,j As Integer,p As Integer,t As Integer,mm As IntegerList2.Clearm=Val(Text1.Text)i=1Do While i=n-1p=iFor j=i+1 To

25、nIf Thenp=jNext jIf pi Thent=th(i):th(i)=th(p):th(p)=tEnd IfIf im Or df(i)df(i-1) Then Exit Do改错i=i+1Loop For i=1 To mmList2.AddItem dq(Str(th(i),6)+dq(Str(df(th(i),8)+dq(kd(th(i),12)Next iEnd Sub9、(2021衢州模拟15)某市要组织高中生参加竞技比赛。现要求在报名的n名学生中挑选出m名身高大于等于175cm的学生,被挑选出的学生两两组队,且队内两名成员的体重之和不能超过175公斤。编写VB程序,实现

26、上述挑选、组队功能。运行程序,在列表框List1中显示m名身高大于等于175cm的学生信息,且根据体重数值降序排序。单击“组队”按钮,在符合条件的情况下尽可能多的两两组队,并将组队结果显示在列表框List2中。程序运行界面如第15题图所示,实现上述功能的VB程序如下。请回答下列问题:(1)观察代码可知,该程序“组队”按钮的对象名为 。(2)请在划线处填入合适的代码。(3)程序中加框处代码有错,请改正。Const n=20Dim id(1 To 20)As Integer,h(1 To 20)As Integer,w(1 To 20)As Integer ,mAs Integer Private

27、 Sub For m Load()从数据库中读取n名学生的编号、身高和体重分别存储在数组id、h和w中,代码略。m=0存储身高175cm的学生总数For i=1 To nk=iFor j=i+1 To nIf h(j)=175 ThenIf w(j)w(k) Then k=j(3)End IfNext jIf k i Thent=id(i):id(i)=id(k):id(k)=tt=h(i):h(i)=h(k):h(k)=tt=w(i):w(i)=w(k):w(k)=tEnd IfIf h(i)175 Thenm=i-1Exit For 结束挑选E1se End IfList1.AddItem

28、 str(id(i)+Str(h(i)+Str(w(i)Next iEnd SubPrivate Sub Com_Click()L=1:R=mDo While LRIf ThenList2.AddItem Str(id(L)+号和+Str(id(R)+号组队”L=L+1:R=R-1Else End IfLoopEnd Sub10、 (2021慈溪模拟15)为了提高群众的安全意识,需要从各个学校挑选志愿者做好防诈骗宣传。组委会从数据库中看到k(1=k=11)个不同的学校共上报了n(k=n=100)位志愿者。由于人数太多,为了快速决定志愿者人选,组委会决定从中选择一段连续的区间,这个区间内每个报名

29、的学校至少包含1名志愿者,同时要求满足条件的区间长度最小,输出区间内的志愿者名单。例如,有10条报名数据,来自5个不同的学校,学校编码依次是2,1,2,4,3,3,5,5,3,5,则包含5个学校的最短区间是从第2个到第7个,并从List2中显示所选区间中的志愿者姓名,程序界面如图所示。(1)要使窗体For ml标题显示“选取志愿者”,则需修改该窗体的 (单选,填字母:A.Text/B.Caption/C.Name(名称)属性。(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。(3)程序中加框处代码有错,请改正。Dim bm(1 To 100)As Integer,k As Integ

30、er,xm(1 To 100)As String,n As IntegerPrivate Sub For m Load()本过程从数据库中读入指定数据到数组bm、xm中,并在List1中显示获取k,表示不同学校数;n表示报名记录总数代码略End SubPrivate Sub Command1_Click()Dim m As Integeri=k:j=nDo While i=jm= If judge(m) 0 Thenj=m-1ans=m: start=judge(m)Elsei=m+1End IfLoopFor i=1 To ansList2. AddItem xm(i)Next iLabe1

31、1.Caption=共选出志愿者+CStr(ans)+人End SubFunction judge(m As Integer)As Integer judge函数用于返回区间起始位置Dim f(1 To 11)As Integerf(i)表示i学校是否包含在区间Dim t As Integerjudge=0For i=1To n-m+1枚举以i为起点的区间内是否包含各个学校t=0For j=i To i+m-1If Thent=t+1f(bm(j)=1Next jIft=k Then :Exit FunctionFor j=1 To kf(j)=0Next jNext iEnd Functio

32、n11、(2021温州新力量联盟模拟15)某单位招聘人员,根据应聘人员的笔试成绩从高到低取一定比例的人员进入面试,若按比例计算出的人数为小数,则直接取整(不四舍五入),若进入面试的最后1名有多个同分人员,同分人员也进入面试。程序运行界面如下,请完成后面的小题:(1)程序运行时自动清空文本框Text1中显示的内容,应该在 事件处过程执行相关命令A.For m load B.Textl Change C.Commandl Click(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。(3)程序中加框处代码有错,请改正人员编号和笔试成绩分别存储到数组变量id和score中,应聘总人数存储在变

33、量n中面试比例在文本框Text1中输入,所输入比例值必须使面试人数大于1且小于n,代码略。Private Sub Command1_Click()Dim i As Integer,j As Integer,st As String,t As IntegerFor i=1To n-1按笔试成绩从高到低排序k=iFor j=i+1 To nIf Thenk=jNext jIf ki Thenst=id(k):id(k)=id(i):id(i)=stt=score(k):score(k)=score(i):score(i)=tEnd IfNext iNum= j=num+1Do While j=nIf score(j)=score(j+1) Then Exit Doj=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论