资源简介 ※ 练习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 String,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〉="0"And ch〈="9"Thentemp=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-1If b(i)< > i Then Exit ForNext iIf i=n Then Labell.Caption="完美跳数"Else Labe11.Caption="非完美跳数"End Sub(2)请在上述程序的划线处填上合适的代码。(3)上述程序加框处代码有误,请改正。2、(2021嘉兴模拟15)仓库中有一批不同款式的衣服,相同款式的衣服具有相同的代号,现要统计每个款式的数量,并按数量从多到少的排序。小明编写了一个VB程序完成该统计。程序运行时,在文本框Text1输入每件衣服的代号n(1≤n≤100),代号之间用逗号相隔,衣服的总数量不超过100件。单击按钮Command1后,在列表框List1中按每个款式的库存数量从大到小输出。程序运行界面如第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 Integer’数组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>="0"And ch〈="9"Thena(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):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中输入计划出去旅游的时间,用逗号间隔,并以逗号结尾,输入月份和日期。如“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 Integer,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 Integer'y数组存储月,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.Elset= ①End IfNext in=k\2For i=1To n-1以月为主关键字、日为次关键字升序排序For j=1To n-iIf ② 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)改错Ifi>1 Then qt=t-z-1Else qt=t-1If qt>maxk Then maxk=qt ‘记录长时间段Next iqt= ③If qt>maxk 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,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,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=Mid(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 Integer)As String‘将编码0、1转换成白点和黑点;代码略End Function5、(2021丽水模拟16)将某字符串按“V”的形状进行变换,其变换方法描述如下:(1)将字符串中的字母转换为大写字母后按升序进行排序;(2)根据给定的行数,将字符串从上往下、从左到右进行“V”字形排列;(3)从左往右逐行读取字符串并输出;例如:输入字符串为:“NoThinglslmpossible”,经过排序得到字符串:“BEGHIIIILMNNOOPSSST”,行数输入为3时,排列如下:经过变换后得到新字符串为:“BILOSEHIIMNOSSGINPT”。编写VB程序,实现如下功能:在文本框Textl中输入行数,在文本框Text2中输入字符串(限定字母),单击“变换”按钮Command1,在标签Label3中输出变换结果。程序运行效果如图所示。(1)若小明在文本框Textl中输入3,在文本框Text2中输入的的字符串为“NOTHING”,则在标签框Label3中输出的结果为 。(2)实现该功能的VB程序如下,请在划线处填入合适的代码。6、(2021金华十校模拟16)删数问题。输入一个正整数s,去掉其中任意k个数字后,剩下的数字按原左右次序将组成一个新的整数,设计算法使得剩下数字组成的新数最小。为了实现上述要求,小明按“每次删除左侧第一个升序序列的末位数字”的思想,编写了一个VB程序,程序的运行界面如下所示,在文本框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=Val(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 k<>0flag=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=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="0"End 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.Label=""/B.Labell.Caption=“"/C.Labell.Clear)。(2)请在划线处填入合适的代码。(3)加框处代码有错,请改正。7、(2021绍兴模拟15)为了把工厂中高低不等的物品按从低到高排好序,工程师发明了一种排序机械臂,它首先在参加排序的所有物品中同时选出高度最低和最高的物品,分别交换到左、右边界,再缩小左、右边界,然后在余下的物品中采用同样的方法排序,直到所有物品成为一个有序的序列。编写VB程序,实现上述排序功能:运行程序,单击“读取”按钮Command1,在列表框Listl中显示待排序的物品,然后单击“排序”按钮Command2,在列表框List2中显示排序好的物品。程序运行界面如图所示。请回答下列问题:若要程序运行时,窗体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中显示,代码略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 Limin=L①For i=L+1To RIf gd(i)If gd(i)Next it=id(imin):id(imin)=id(L):id(L)=tt=gd(imin):gd(imin)=gd(L):gd(L)=tIf imax=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中。在文本框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和kd数组,在列表框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 nIf ② Thenp=jNext jIf p< >i Thent=th(i):th(i)=th(p):th(p)=tEnd IfIf i>m 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程序,实现上述挑选、组队功能。运行程序,在列表框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 IntegerPrivate 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 str(id(i))+""+Str(h(i))+""+Str(w(i))Next iEnd SubPrivate Sub Com_Click()L=1:R=mDo While LIf ② 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)位志愿者。由于人数太多,为了快速决定志愿者人选,组委会决定从中选择一段连续的区间,这个区间内每个报名的学校至少包含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 Integer,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 iLabe11.Caption="共选出志愿者"+CStr(ans)+"人"End SubFunction judge(m As Integer)As Integer ‘judge函数用于返回区间起始位置Dim f(1 To 11)As Integer'f(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 Function11、(2021温州新力量联盟模拟15)某单位招聘人员,根据应聘人员的笔试成绩从高到低取一定比例的人员进入面试,若按比例计算出的人数为小数,则直接取整(不四舍五入),若进入面试的最后1名有多个同分人员,同分人员也进入面试。程序运行界面如下,请完成后面的小题:(1)程序运行时自动清空文本框Text1中显示的内容,应该在 事件处过程执行相关命令A.For m loadB.Textl ChangeC.Commandl Click(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。(3)程序中加框处代码有错,请改正’人员编号和笔试成绩分别存储到数组变量id和score中,应聘总人数存储在变量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 k< >i 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=j+1LoopFor k= ③List2.AddItem Str(k)+""+id(k)+""+Str(score(k))Next kEnd Sub12、(2021湖州模拟15)某夏令营按两门考试科目总分从高分到低分依次录取学生。如果录取学生的最后一名出现有总分并列的情况,则并列的学生全部录取。编写VB程序实现以上功能,程序运行时在列表框List1中显示全部学生的信息,在文本框Text1中输入计划招生人数,点击“录取”按钮Command1后,在列表框List2中输出录取的学生信息,并在标签Label1上显示最终录取的人数。程序运行界面如第15题图所示。请回答下列问题:(1)如第15题图所示,按钮Command1上显示的“录取”是该按钮对象的(单选,填字母:A.对象名/B.属性名/C.方法名/D.属性值)(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。(3)程序中加框处代码有错,请改正。Const num=15Dim xm(num)As String,kml(num)As Integer,km2(num)As IntegerPrivate Sub For m Load()’读取num个学生的姓名、科目1、科目2的成绩,分别存储到数组xm、kml、km2。’在列表框List1中输出所有学生的姓名与成绩,代码略。End SubPrivate Sub Command1_Click()Dim rs As Integer,count As Integer,flag As BooleanDim i As Integer,j As Integer,t As Integer,tmp As Stringrs=Val(Text1.Text)List2.AddItem"姓名科目1科目2"count=0:i=1①Do While i〈=num And flagFor j=num-1 To i Step-1If ② Thentmp=xm(j):xm(j)=xm(j+1):xm(j+1)=tmpt=kml(j):kml(j)=kml(j+1):kml(j+1)=tt=km2(j):km2(j)=km2(j+1):km2(j+1)=tEnd IfNext jflag=FalseIf i<=num Or kml(i)+km2(i)=kml(i-1)+km2(i-1)Thencount=i:flag=TrueEnd Ifi=i+1LoopFor i=1 To countList2.AddItem xm(i)+""+Str(kml(i))+""+Str(km2(i))Next iLabe11.Caption="共录取学生"+ ③ +"人"End Sub1 展开更多...... 收起↑ 资源预览