专题08 VB综合应用之算法程序设计专项练习.docx
《专题08 VB综合应用之算法程序设计专项练习.docx》由会员分享,可在线阅读,更多相关《专题08 VB综合应用之算法程序设计专项练习.docx(15页珍藏版)》请在冰豆网上搜索。
专题08VB综合应用之算法程序设计专项练习
专题8VB综合应用之算法程序设计(专项练习)
1.有一段VB程序,代码如下:
Fori=1To3
Forj=8Toi+1Step-1
Ifa(j)t=a(j):a(j)=a(i):a(i)=tEndIfNextjNexti数组元素a(1)到a(8)的值依次为“35,18,14,20,30,15,28,26”,运行该程序段后,a(5)到a(8)的值依次是()A.30,26,28,35B.14,15,18,20C.26,15,18,14D.26,28,30,352.有如下程序:constn=10dima(1to10)asinteger,iasintegers=0i=1Dowhilea(i)>0andi<=ns=s+1i=i+1loop数组元素a(1)至a(10)的数据依次为“1,5,2,3,8,-9,5,6,7,-10”,运用该算法处理后s的值是()A.3B.5C.8D.103.有如下程序:S=“”Fori=1to3Forj=7toi+1step-1Ifa(j)K=a(j):a(j)=a(j-1):a(j-1)=kEndifNextjs=s+str(a(i))NextiText1.text=s数组元素a(1)到a(7)的数据依次为“4,15,11,7,9,16,12”经过该程序段“加工”后,文本框text1中显示的内容是()A.479B.161512C.415117D.479114.有如下程序段:Fork=1To4Step3Fori=kTok+1Forj=i+1Tok+2Ifa(j)temp=a(j):a(j)=a(i):a(i)=tempEndIfNextjNextiNextk数组元素a(1)到a(6)的值依次为“9,8,7,6,5,4”,经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为()A.9,8,7,6,5,4B.4,5,6,7,8,9C.7,8,9,4,5,6D.9,8,7,4,5,65.有如下程序段:Fori=1To2Forj=5Toi+1Step-1Ifa(j)>a(j-1)Thent=a(j):a(j)=a(j-1):a(j-1)=tEndIfNextjNexti数组元素a(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为()A.77,45,33,24,16B.16,24,33,45,77C.77,45,24,16,33D.16,24,45,33,776.以下VB代码运行后,在文本框Textl中输入1,则选择语句Ifk<=9Thenk=k+i执行的次数为()PrivateSubText1_Change()DimkAsInteger,iAsIntegerk=Val(Text1.Text)Fori=1To3Ifk<=9Thenk=k+iNextiText1.Text=Str(k)EndSubA.3B.5C.6D.97.有一组升序排列的数:3、6、7、10、12、17、26、31、79,如果用对分法查找数据10,则依次访问的数据为()A.12、6、7、10B.12、7、10C.12、6、10D.12、7、6、108.字符串中任意连续的字符组成的子序列称为该字符串的子串,如字符串“abc”的子串有“a”“b”“c”“ab”“bc”“abc”。输出字符串s所有子串的VB程序段如下:PrivateSubCommandl_Click()DimsAsString,slenAsIntegerDimIAsInteger,jAsIntegers=Textl.Textslen=Len(s)①Fori=lToslen②Forj=lToslen-i+1③Listl.AddltemMid(s,j,i)④NextjNextiEndSub则下列说法正确在的是()A.变量s放的是原始字符串的长度值B.若输入“12345”,则字符串“245”是该字符串的子串C.当j=2时,内循环遍历输出所有长度为2的子串D.在保证算法功能一致的情况下,注释④处的语句可改写为Listl.AddltemMid(s,i,j)9.有如下VB程序:PrivateSubCommandl_Click()Dims1,s2,chAsStringDimiAsIntegers1=Text1.TextFori=1ToLen(sl)ch=Mid(sl,i,1)IfAsc(ch)>=65AndAsc(ch)<=90Thench=Chr(Asc(ch)+3)EndIfs2=ch+s2NextiLabel1.Caption=s2EndSub己知大写字母A的ASCII码为65。运行上述程序,若文本框Textl中的内容为“Alb2C3”,单击命令按钮Commandl,标签Labell中显示的是()A.Alb2C3B.3C2blAC.Dlb2F3D.3F2b1D10.有如下程序段:tail=6:i=1:r=Val(Text1.Text)DoWhileiForj=tailToi+1Step-1Ifa(j)>a(j-1)Thent=a(j)a(j)=a(j-1)a(j-1)=tEndIfNextji=i+1Forj=iTotail-1Ifa(j)t=a(j)a(j)=a(j+1):a(j+1)=tEndIfNextjtail=tail-1Loop数组元素a(1)到a(6)的值依次为“73、56、28、61、44、92”,若在文本框Text1中输入“2”,则经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为()A.73,61,56,92,44,28B.92,73,56,61,44,28C.92,73,61,56,28,44D.92,73,61,56,44,2811.数组元素a(0)到a(9)的值依次为“13,20,22,25,30,33,40,52,65,100”,文本框Text1中输入的值是33,执行该程序段,下列描述正确的是()key=Val(Text1.Text)i=0:j=9:s=0DoWhilei<=jm=Fix((i+j)\2+0.5)s=s+1Ifkey=a(m)ThenLabel1.Caption=Label1.Caption+"→"+Str(m)ExitDo'ExitDo表示退出循环EndIfIfkeyLabel1.Caption=Label1.Caption+"→"+Str(m)LoopLabel2.Caption="历经"+CStr(s)+"步"A.标签Label1显示内容为“→4→7→5”B.标签Label2显示内容为“历经1步”C.该程序为顺序查找,查找次数为3D.该程序为对分查找,查找次数为412.有以下VB程序段a(1)=68:a(2)=88:a(3)=76:a(4)=60:a(5)=98a(6)=100:a(7)=64:a(8)=85:a(9)=99:a(10)=59Fori=1To9b(i)=Abs(a(i+1)-a(i))c(b(i)\10)=c(b(i)\10)+1NextiFori=0To10Ifc(i)>0ThenLabel1.Caption=Label1.Caption+""+Str(c(i))EndIfNexti数组c各元素初值为0,执行该程序段,标签Label1上显示的内容是()A.23211B.13221C.23221D.1321213.小王制作了一个插入数据到指定位置的VB程序,程序运行时,在文本框Text1中输入“4”,Text2中输入“3”,当该程序段运行完毕后,数组d的元素值依次为()Dimd(1To6)AsIntegerd(1)=9:d(2)=7:d(3)=5:d(4)=4:d(5)=2DimmAsInteger,nAsInteger,iAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)Fori=6Tom-1Step-1d(i)=d(i-1)Nextid(i)=nA.397542B.937542C.497542D.94754214.有如下VB程序段,若数组元素d(l)〜d(6)的值分别为:"f、”a"、”t”、”h”、”e”、”r”,在文本框Textl中输入3,则该程序运行结束后,标签Labell中显示的内容为()n=Val(Text1.Text)s=d(n)Fori=1To5Forj=6Toi+1Step-1Ifd(j)t=d(j):j(j)=d(i):d(i)=tIfi=nThens=s+"-"+d(i)Ifj=nThens=s+"-"+d(j)EndIfNextjNextiLabel1.Caption=sA.t-a-r-f-hB.t-r-fC.t-e-fD.t-r-h15.阅读如下程序,Label1中显示的是()Dima(1To10)AsIntegerDimsAsStringFori=1To10a(i)=1NextiForj=1To5Fori=1To10IfiModj=0Thena(i)=1-a(i)EndIfNextiNextjFori=1To10Label1.Caption=Label1.Caption&a(i)NextiA.0110100010B.0110100000C.1010100000D.100101110116.有如下VB程序段:Dima(lTo5)AsInteger,iAsInteger,cAsIntegera(l)=2:a(2)=1:a(3)=3:a(4)=4:a(5)=5:c=0Fori=3To5Ifa(i-2)+a(i-1)=a(i)Thenc=c+1NextiTextl.Text=Str(c)该程序段运行后,文本框Textl中显示的内容是()A.1B.2C.3D.417.有如下VB程序段:DimxAsLong,i,yAsIntegerDimAns,tAsLongx=123DoWhilex>0y=xMod10t=1Fori=1Toyt=t*yNextians=ans+tx=x\10Loop程序运行后,变量ans的值是()A.14B.32C.123D.32118.下面程序的功能是:产生30个[1,100]范围内的随机整数,并统计这30个随机数中不重复的整数的个数,最后将统计结果显示在标签Label1中。例如:5个随机数[1,2,3,2,1]中不重复数字个数为3。程序部分代码如下:count=0Fori=1To30a(i)=Int(Rnd*100)+1NextiFori=1To30NextiFori=1To100Ifb(i)<>0Thencount=count+1NextiLabel1.Caption="不重复数字个数"+Str(count)为实现上述功能,则程序划线处应填入的语句为()A.b(i)=1B.b(a(i))=a(b(i))+1C.b(i)=b(i)+1D.b(a(i))=b(a(i))+119.VB程序实现如下功能:在文本框Text1中输入要发放的红包总金额,文本框Text2中输入红包个数,单击“发红包”按钮Command1,在列表框List1中输出每个随机分配的红包金额,界面如图所示。(1)代码“PrivateSubCommand1_Click()”中的Command1_Click是。(单选,填字母:A.属性名/B.对象名/C.过程名)(2)为实现上述功能,请在划线处填入合适的代码。PrivateSubCommand1_Click()DimsAsSingle,xAsSingle,nAsInteger,iAsInteger,maxAsSingle,pAsIntegerRandomizeList1.Clears=Val(Text1.Text)max=0:p=0Fori=1TonIfThenx=sElsex=Rnd*s/(n-i)EndIfx=Int(100*x+0.5)/100s=s-xList1.AddItem"红包"+Str(i)+":"+Str(x)Ifx>maxThenp=iNextiLabel3.Caption="运气王为:红包"+Str(p)EndSub(3)语句“x=Int(100*x+0.5)/100”的作用是。(单选,填字母:A.防止出现0元红包B.四舍五入保留两位小数C.求剩余金额)20.对一个n×n的矩阵以“行”为单位进行升序排序,如下表所示是一个4×4的矩阵以行为单位进行升序排序。李华编写了实现上述功能的程序,程序功能如下:程序运行时,在文本框Text1中输入n(1<=n<=10)单击“产生”按钮Command1产生n×n个随机数,随机数的范围为[0,9],随机存储在数组a中,并以矩阵的形式在列表框List1上显示。单击“排序”按钮Command2,对矩阵以“行”为单位进行升序排序,并在列表框List2输出排序后的矩阵。在程序运行界面如下图所示。实现上述功能的VB程序如下,请在划线处填入合适的代码。DimnAsIntegerDima(1To100)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,sAsStrings=""Fori=1Ton*ns=s+Str(a(i))IfiModn=0ThenList1.AddItemss=""EndIfNextiEndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,tAsIntegerDimsAsStrings=""Fori=1Ton*nk=iForj=i+1ToIfa(j)NextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tIfiModn=0ThenList2.AddItemss=""EndIfNextiEndSub 专题8VB综合应用之算法程序设计(专项练习)(参考答案)123456789ABACADABC101112131415161718BABBBABBD19.【答案】(1)C(2)①n=Val(Text2.Text)②i=n③max=x(3)B【解析】(1)事件处理过程名由对象名和事件名组成,故“Command1_Click”是事件处理过程名,故选C。(2)①变量n表示红包个数,为整型数据,其值通过文本框text2输入,故答案为n=Val(Text2.Text)。②代码中for循环主要用于分配n个红包的具体金额的,for内部嵌套了两个if语句,第一个块if用于判断是不是最后一个红包,若是,则将全部余额分配给最后这个红包。故答案为i=n,或者n=i。③代码中for循环嵌套的第二个块if语句用于找出最大红包,若红包金额x大于max,就将该x赋给max,故答案为max=x。(3)语句“x=int(100*x+0.5)/100”是四舍五入较为常见的一种的方法,故选B。20.【答案】①n=Val(Text1.Text)②a(i)=Int(Rnd*10)③((i-1)\n+1)*n④s=s+Str(a(i))【解析】第①空,获取n的初始值,即矩阵大小。第②空,生成矩阵中的每一个元素存储在a数组中,每个元素为[0,9]的随机整数。第③空,每行排序,所以数据比较的范围为每n个数变动一次,比如7*7的矩阵,第一趟的比较范围为1到7个数,第二趟为8到14个数,第三趟为15到21个数„„,k=i初始化位置,所以j=i+1To((i-1)\n+1)*n。第④空,数据排序后重新逐个连接输出。淘宝统一定价:13元
t=a(j):
a(j)=a(i):
a(i)=t
EndIf
Nextj
Nexti
数组元素a
(1)到a(8)的值依次为“35,18,14,20,30,15,28,26”,运行该程序段后,a(5)到a(8)的值依次是()
A.30,26,28,35B.14,15,18,20
C.26,15,18,14D.26,28,30,35
2.有如下程序:
constn=10
dima(1to10)asinteger,iasinteger
s=0
i=1
Dowhilea(i)>0andi<=n
s=s+1
i=i+1
loop
(1)至a(10)的数据依次为“1,5,2,3,8,-9,5,6,7,-10”,运用该算法处理后s的值是()
A.3B.5C.8D.10
3.有如下程序:
S=“”
Fori=1to3
Forj=7toi+1step-1
Ifa(j)K=a(j):a(j)=a(j-1):a(j-1)=kEndifNextjs=s+str(a(i))NextiText1.text=s数组元素a(1)到a(7)的数据依次为“4,15,11,7,9,16,12”经过该程序段“加工”后,文本框text1中显示的内容是()A.479B.161512C.415117D.479114.有如下程序段:Fork=1To4Step3Fori=kTok+1Forj=i+1Tok+2Ifa(j)temp=a(j):a(j)=a(i):a(i)=tempEndIfNextjNextiNextk数组元素a(1)到a(6)的值依次为“9,8,7,6,5,4”,经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为()A.9,8,7,6,5,4B.4,5,6,7,8,9C.7,8,9,4,5,6D.9,8,7,4,5,65.有如下程序段:Fori=1To2Forj=5Toi+1Step-1Ifa(j)>a(j-1)Thent=a(j):a(j)=a(j-1):a(j-1)=tEndIfNextjNexti数组元素a(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为()A.77,45,33,24,16B.16,24,33,45,77C.77,45,24,16,33D.16,24,45,33,776.以下VB代码运行后,在文本框Textl中输入1,则选择语句Ifk<=9Thenk=k+i执行的次数为()PrivateSubText1_Change()DimkAsInteger,iAsIntegerk=Val(Text1.Text)Fori=1To3Ifk<=9Thenk=k+iNextiText1.Text=Str(k)EndSubA.3B.5C.6D.97.有一组升序排列的数:3、6、7、10、12、17、26、31、79,如果用对分法查找数据10,则依次访问的数据为()A.12、6、7、10B.12、7、10C.12、6、10D.12、7、6、108.字符串中任意连续的字符组成的子序列称为该字符串的子串,如字符串“abc”的子串有“a”“b”“c”“ab”“bc”“abc”。输出字符串s所有子串的VB程序段如下:PrivateSubCommandl_Click()DimsAsString,slenAsIntegerDimIAsInteger,jAsIntegers=Textl.Textslen=Len(s)①Fori=lToslen②Forj=lToslen-i+1③Listl.AddltemMid(s,j,i)④NextjNextiEndSub则下列说法正确在的是()A.变量s放的是原始字符串的长度值B.若输入“12345”,则字符串“245”是该字符串的子串C.当j=2时,内循环遍历输出所有长度为2的子串D.在保证算法功能一致的情况下,注释④处的语句可改写为Listl.AddltemMid(s,i,j)9.有如下VB程序:PrivateSubCommandl_Click()Dims1,s2,chAsStringDimiAsIntegers1=Text1.TextFori=1ToLen(sl)ch=Mid(sl,i,1)IfAsc(ch)>=65AndAsc(ch)<=90Thench=Chr(Asc(ch)+3)EndIfs2=ch+s2NextiLabel1.Caption=s2EndSub己知大写字母A的ASCII码为65。运行上述程序,若文本框Textl中的内容为“Alb2C3”,单击命令按钮Commandl,标签Labell中显示的是()A.Alb2C3B.3C2blAC.Dlb2F3D.3F2b1D10.有如下程序段:tail=6:i=1:r=Val(Text1.Text)DoWhileiForj=tailToi+1Step-1Ifa(j)>a(j-1)Thent=a(j)a(j)=a(j-1)a(j-1)=tEndIfNextji=i+1Forj=iTotail-1Ifa(j)t=a(j)a(j)=a(j+1):a(j+1)=tEndIfNextjtail=tail-1Loop数组元素a(1)到a(6)的值依次为“73、56、28、61、44、92”,若在文本框Text1中输入“2”,则经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为()A.73,61,56,92,44,28B.92,73,56,61,44,28C.92,73,61,56,28,44D.92,73,61,56,44,2811.数组元素a(0)到a(9)的值依次为“13,20,22,25,30,33,40,52,65,100”,文本框Text1中输入的值是33,执行该程序段,下列描述正确的是()key=Val(Text1.Text)i=0:j=9:s=0DoWhilei<=jm=Fix((i+j)\2+0.5)s=s+1Ifkey=a(m)ThenLabel1.Caption=Label1.Caption+"→"+Str(m)ExitDo'ExitDo表示退出循环EndIfIfkeyLabel1.Caption=Label1.Caption+"→"+Str(m)LoopLabel2.Caption="历经"+CStr(s)+"步"A.标签Label1显示内容为“→4→7→5”B.标签Label2显示内容为“历经1步”C.该程序为顺序查找,查找次数为3D.该程序为对分查找,查找次数为412.有以下VB程序段a(1)=68:a(2)=88:a(3)=76:a(4)=60:a(5)=98a(6)=100:a(7)=64:a(8)=85:a(9)=99:a(10)=59Fori=1To9b(i)=Abs(a(i+1)-a(i))c(b(i)\10)=c(b(i)\10)+1NextiFori=0To10Ifc(i)>0ThenLabel1.Caption=Label1.Caption+""+Str(c(i))EndIfNexti数组c各元素初值为0,执行该程序段,标签Label1上显示的内容是()A.23211B.13221C.23221D.1321213.小王制作了一个插入数据到指定位置的VB程序,程序运行时,在文本框Text1中输入“4”,Text2中输入“3”,当该程序段运行完毕后,数组d的元素值依次为()Dimd(1To6)AsIntegerd(1)=9:d(2)=7:d(3)=5:d(4)=4:d(5)=2DimmAsInteger,nAsInteger,iAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)Fori=6Tom-1Step-1d(i)=d(i-1)Nextid(i)=nA.397542B.937542C.497542D.94754214.有如下VB程序段,若数组元素d(l)〜d(6)的值分别为:"f、”a"、”t”、”h”、”e”、”r”,在文本框Textl中输入3,则该程序运行结束后,标签Labell中显示的内容为()n=Val(Text1.Text)s=d(n)Fori=1To5Forj=6Toi+1Step-1Ifd(j)t=d(j):j(j)=d(i):d(i)=tIfi=nThens=s+"-"+d(i)Ifj=nThens=s+"-"+d(j)EndIfNextjNextiLabel1.Caption=sA.t-a-r-f-hB.t-r-fC.t-e-fD.t-r-h15.阅读如下程序,Label1中显示的是()Dima(1To10)AsIntegerDimsAsStringFori=1To10a(i)=1NextiForj=1To5Fori=1To10IfiModj=0Thena(i)=1-a(i)EndIfNextiNextjFori=1To10Label1.Caption=Label1.Caption&a(i)NextiA.0110100010B.0110100000C.1010100000D.100101110116.有如下VB程序段:Dima(lTo5)AsInteger,iAsInteger,cAsIntegera(l)=2:a(2)=1:a(3)=3:a(4)=4:a(5)=5:c=0Fori=3To5Ifa(i-2)+a(i-1)=a(i)Thenc=c+1NextiTextl.Text=Str(c)该程序段运行后,文本框Textl中显示的内容是()A.1B.2C.3D.417.有如下VB程序段:DimxAsLong,i,yAsIntegerDimAns,tAsLongx=123DoWhilex>0y=xMod10t=1Fori=1Toyt=t*yNextians=ans+tx=x\10Loop程序运行后,变量ans的值是()A.14B.32C.123D.32118.下面程序的功能是:产生30个[1,100]范围内的随机整数,并统计这30个随机数中不重复的整数的个数,最后将统计结果显示在标签Label1中。例如:5个随机数[1,2,3,2,1]中不重复数字个数为3。程序部分代码如下:count=0Fori=1To30a(i)=Int(Rnd*100)+1NextiFori=1To30NextiFori=1To100Ifb(i)<>0Thencount=count+1NextiLabel1.Caption="不重复数字个数"+Str(count)为实现上述功能,则程序划线处应填入的语句为()A.b(i)=1B.b(a(i))=a(b(i))+1C.b(i)=b(i)+1D.b(a(i))=b(a(i))+119.VB程序实现如下功能:在文本框Text1中输入要发放的红包总金额,文本框Text2中输入红包个数,单击“发红包”按钮Command1,在列表框List1中输出每个随机分配的红包金额,界面如图所示。(1)代码“PrivateSubCommand1_Click()”中的Command1_Click是。(单选,填字母:A.属性名/B.对象名/C.过程名)(2)为实现上述功能,请在划线处填入合适的代码。PrivateSubCommand1_Click()DimsAsSingle,xAsSingle,nAsInteger,iAsInteger,maxAsSingle,pAsIntegerRandomizeList1.Clears=Val(Text1.Text)max=0:p=0Fori=1TonIfThenx=sElsex=Rnd*s/(n-i)EndIfx=Int(100*x+0.5)/100s=s-xList1.AddItem"红包"+Str(i)+":"+Str(x)Ifx>maxThenp=iNextiLabel3.Caption="运气王为:红包"+Str(p)EndSub(3)语句“x=Int(100*x+0.5)/100”的作用是。(单选,填字母:A.防止出现0元红包B.四舍五入保留两位小数C.求剩余金额)20.对一个n×n的矩阵以“行”为单位进行升序排序,如下表所示是一个4×4的矩阵以行为单位进行升序排序。李华编写了实现上述功能的程序,程序功能如下:程序运行时,在文本框Text1中输入n(1<=n<=10)单击“产生”按钮Command1产生n×n个随机数,随机数的范围为[0,9],随机存储在数组a中,并以矩阵的形式在列表框List1上显示。单击“排序”按钮Command2,对矩阵以“行”为单位进行升序排序,并在列表框List2输出排序后的矩阵。在程序运行界面如下图所示。实现上述功能的VB程序如下,请在划线处填入合适的代码。DimnAsIntegerDima(1To100)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,sAsStrings=""Fori=1Ton*ns=s+Str(a(i))IfiModn=0ThenList1.AddItemss=""EndIfNextiEndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,tAsIntegerDimsAsStrings=""Fori=1Ton*nk=iForj=i+1ToIfa(j)NextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tIfiModn=0ThenList2.AddItemss=""EndIfNextiEndSub 专题8VB综合应用之算法程序设计(专项练习)(参考答案)123456789ABACADABC101112131415161718BABBBABBD19.【答案】(1)C(2)①n=Val(Text2.Text)②i=n③max=x(3)B【解析】(1)事件处理过程名由对象名和事件名组成,故“Command1_Click”是事件处理过程名,故选C。(2)①变量n表示红包个数,为整型数据,其值通过文本框text2输入,故答案为n=Val(Text2.Text)。②代码中for循环主要用于分配n个红包的具体金额的,for内部嵌套了两个if语句,第一个块if用于判断是不是最后一个红包,若是,则将全部余额分配给最后这个红包。故答案为i=n,或者n=i。③代码中for循环嵌套的第二个块if语句用于找出最大红包,若红包金额x大于max,就将该x赋给max,故答案为max=x。(3)语句“x=int(100*x+0.5)/100”是四舍五入较为常见的一种的方法,故选B。20.【答案】①n=Val(Text1.Text)②a(i)=Int(Rnd*10)③((i-1)\n+1)*n④s=s+Str(a(i))【解析】第①空,获取n的初始值,即矩阵大小。第②空,生成矩阵中的每一个元素存储在a数组中,每个元素为[0,9]的随机整数。第③空,每行排序,所以数据比较的范围为每n个数变动一次,比如7*7的矩阵,第一趟的比较范围为1到7个数,第二趟为8到14个数,第三趟为15到21个数„„,k=i初始化位置,所以j=i+1To((i-1)\n+1)*n。第④空,数据排序后重新逐个连接输出。淘宝统一定价:13元
K=a(j):
a(j)=a(j-1):
a(j-1)=k
Endif
s=s+str(a(i))
Text1.text=s
(1)到a(7)的数据依次为“4,15,11,7,9,16,12”经过该程序段“加工”后,文本框text1中显示的内容是()
A.479B.161512
C.415117D.47911
4.有如下程序段:
Fork=1To4Step3
Fori=kTok+1
Forj=i+1Tok+2
Ifa(j)temp=a(j):a(j)=a(i):a(i)=tempEndIfNextjNextiNextk数组元素a(1)到a(6)的值依次为“9,8,7,6,5,4”,经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为()A.9,8,7,6,5,4B.4,5,6,7,8,9C.7,8,9,4,5,6D.9,8,7,4,5,65.有如下程序段:Fori=1To2Forj=5Toi+1Step-1Ifa(j)>a(j-1)Thent=a(j):a(j)=a(j-1):a(j-1)=tEndIfNextjNexti数组元素a(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a(1)到a(5)的值依次为()A.77,45,33,24,16B.16,24,33,45,77C.77,45,24,16,33D.16,24,45,33,776.以下VB代码运行后,在文本框Textl中输入1,则选择语句Ifk<=9Thenk=k+i执行的次数为()PrivateSubText1_Change()DimkAsInteger,iAsIntegerk=Val(Text1.Text)Fori=1To3Ifk<=9Thenk=k+iNextiText1.Text=Str(k)EndSubA.3B.5C.6D.97.有一组升序排列的数:3、6、7、10、12、17、26、31、79,如果用对分法查找数据10,则依次访问的数据为()A.12、6、7、10B.12、7、10C.12、6、10D.12、7、6、108.字符串中任意连续的字符组成的子序列称为该字符串的子串,如字符串“abc”的子串有“a”“b”“c”“ab”“bc”“abc”。输出字符串s所有子串的VB程序段如下:PrivateSubCommandl_Click()DimsAsString,slenAsIntegerDimIAsInteger,jAsIntegers=Textl.Textslen=Len(s)①Fori=lToslen②Forj=lToslen-i+1③Listl.AddltemMid(s,j,i)④NextjNextiEndSub则下列说法正确在的是()A.变量s放的是原始字符串的长度值B.若输入“12345”,则字符串“245”是该字符串的子串C.当j=2时,内循环遍历输出所有长度为2的子串D.在保证算法功能一致的情况下,注释④处的语句可改写为Listl.AddltemMid(s,i,j)9.有如下VB程序:PrivateSubCommandl_Click()Dims1,s2,chAsStringDimiAsIntegers1=Text1.TextFori=1ToLen(sl)ch=Mid(sl,i,1)IfAsc(ch)>=65AndAsc(ch)<=90Thench=Chr(Asc(ch)+3)EndIfs2=ch+s2NextiLabel1.Caption=s2EndSub己知大写字母A的ASCII码为65。运行上述程序,若文本框Textl中的内容为“Alb2C3”,单击命令按钮Commandl,标签Labell中显示的是()A.Alb2C3B.3C2blAC.Dlb2F3D.3F2b1D10.有如下程序段:tail=6:i=1:r=Val(Text1.Text)DoWhileiForj=tailToi+1Step-1Ifa(j)>a(j-1)Thent=a(j)a(j)=a(j-1)a(j-1)=tEndIfNextji=i+1Forj=iTotail-1Ifa(j)t=a(j)a(j)=a(j+1):a(j+1)=tEndIfNextjtail=tail-1Loop数组元素a(1)到a(6)的值依次为“73、56、28、61、44、92”,若在文本框Text1中输入“2”,则经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为()A.73,61,56,92,44,28B.92,73,56,61,44,28C.92,73,61,56,28,44D.92,73,61,56,44,2811.数组元素a(0)到a(9)的值依次为“13,20,22,25,30,33,40,52,65,100”,文本框Text1中输入的值是33,执行该程序段,下列描述正确的是()key=Val(Text1.Text)i=0:j=9:s=0DoWhilei<=jm=Fix((i+j)\2+0.5)s=s+1Ifkey=a(m)ThenLabel1.Caption=Label1.Caption+"→"+Str(m)ExitDo'ExitDo表示退出循环EndIfIfkeyLabel1.Caption=Label1.Caption+"→"+Str(m)LoopLabel2.Caption="历经"+CStr(s)+"步"A.标签Label1显示内容为“→4→7→5”B.标签Label2显示内容为“历经1步”C.该程序为顺序查找,查找次数为3D.该程序为对分查找,查找次数为412.有以下VB程序段a(1)=68:a(2)=88:a(3)=76:a(4)=60:a(5)=98a(6)=100:a(7)=64:a(8)=85:a(9)=99:a(10)=59Fori=1To9b(i)=Abs(a(i+1)-a(i))c(b(i)\10)=c(b(i)\10)+1NextiFori=0To10Ifc(i)>0ThenLabel1.Caption=Label1.Caption+""+Str(c(i))EndIfNexti数组c各元素初值为0,执行该程序段,标签Label1上显示的内容是()A.23211B.13221C.23221D.1321213.小王制作了一个插入数据到指定位置的VB程序,程序运行时,在文本框Text1中输入“4”,Text2中输入“3”,当该程序段运行完毕后,数组d的元素值依次为()Dimd(1To6)AsIntegerd(1)=9:d(2)=7:d(3)=5:d(4)=4:d(5)=2DimmAsInteger,nAsInteger,iAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)Fori=6Tom-1Step-1d(i)=d(i-1)Nextid(i)=nA.397542B.937542C.497542D.94754214.有如下VB程序段,若数组元素d(l)〜d(6)的值分别为:"f、”a"、”t”、”h”、”e”、”r”,在文本框Textl中输入3,则该程序运行结束后,标签Labell中显示的内容为()n=Val(Text1.Text)s=d(n)Fori=1To5Forj=6Toi+1Step-1Ifd(j)t=d(j):j(j)=d(i):d(i)=tIfi=nThens=s+"-"+d(i)Ifj=nThens=s+"-"+d(j)EndIfNextjNextiLabel1.Caption=sA.t-a-r-f-hB.t-r-fC.t-e-fD.t-r-h15.阅读如下程序,Label1中显示的是()Dima(1To10)AsIntegerDimsAsStringFori=1To10a(i)=1NextiForj=1To5Fori=1To10IfiModj=0Thena(i)=1-a(i)EndIfNextiNextjFori=1To10Label1.Caption=Label1.Caption&a(i)NextiA.0110100010B.0110100000C.1010100000D.100101110116.有如下VB程序段:Dima(lTo5)AsInteger,iAsInteger,cAsIntegera(l)=2:a(2)=1:a(3)=3:a(4)=4:a(5)=5:c=0Fori=3To5Ifa(i-2)+a(i-1)=a(i)Thenc=c+1NextiTextl.Text=Str(c)该程序段运行后,文本框Textl中显示的内容是()A.1B.2C.3D.417.有如下VB程序段:DimxAsLong,i,yAsIntegerDimAns,tAsLongx=123DoWhilex>0y=xMod10t=1Fori=1Toyt=t*yNextians=ans+tx=x\10Loop程序运行后,变量ans的值是()A.14B.32C.123D.32118.下面程序的功能是:产生30个[1,100]范围内的随机整数,并统计这30个随机数中不重复的整数的个数,最后将统计结果显示在标签Label1中。例如:5个随机数[1,2,3,2,1]中不重复数字个数为3。程序部分代码如下:count=0Fori=1To30a(i)=Int(Rnd*100)+1NextiFori=1To30NextiFori=1To100Ifb(i)<>0Thencount=count+1NextiLabel1.Caption="不重复数字个数"+Str(count)为实现上述功能,则程序划线处应填入的语句为()A.b(i)=1B.b(a(i))=a(b(i))+1C.b(i)=b(i)+1D.b(a(i))=b(a(i))+119.VB程序实现如下功能:在文本框Text1中输入要发放的红包总金额,文本框Text2中输入红包个数,单击“发红包”按钮Command1,在列表框List1中输出每个随机分配的红包金额,界面如图所示。(1)代码“PrivateSubCommand1_Click()”中的Command1_Click是。(单选,填字母:A.属性名/B.对象名/C.过程名)(2)为实现上述功能,请在划线处填入合适的代码。PrivateSubCommand1_Click()DimsAsSingle,xAsSingle,nAsInteger,iAsInteger,maxAsSingle,pAsIntegerRandomizeList1.Clears=Val(Text1.Text)max=0:p=0Fori=1TonIfThenx=sElsex=Rnd*s/(n-i)EndIfx=Int(100*x+0.5)/100s=s-xList1.AddItem"红包"+Str(i)+":"+Str(x)Ifx>maxThenp=iNextiLabel3.Caption="运气王为:红包"+Str(p)EndSub(3)语句“x=Int(100*x+0.5)/100”的作用是。(单选,填字母:A.防止出现0元红包B.四舍五入保留两位小数C.求剩余金额)20.对一个n×n的矩阵以“行”为单位进行升序排序,如下表所示是一个4×4的矩阵以行为单位进行升序排序。李华编写了实现上述功能的程序,程序功能如下:程序运行时,在文本框Text1中输入n(1<=n<=10)单击“产生”按钮Command1产生n×n个随机数,随机数的范围为[0,9],随机存储在数组a中,并以矩阵的形式在列表框List1上显示。单击“排序”按钮Command2,对矩阵以“行”为单位进行升序排序,并在列表框List2输出排序后的矩阵。在程序运行界面如下图所示。实现上述功能的VB程序如下,请在划线处填入合适的代码。DimnAsIntegerDima(1To100)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,sAsStrings=""Fori=1Ton*ns=s+Str(a(i))IfiModn=0ThenList1.AddItemss=""EndIfNextiEndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,tAsIntegerDimsAsStrings=""Fori=1Ton*nk=iForj=i+1ToIfa(j)NextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tIfiModn=0ThenList2.AddItemss=""EndIfNextiEndSub 专题8VB综合应用之算法程序设计(专项练习)(参考答案)123456789ABACADABC101112131415161718BABBBABBD19.【答案】(1)C(2)①n=Val(Text2.Text)②i=n③max=x(3)B【解析】(1)事件处理过程名由对象名和事件名组成,故“Command1_Click”是事件处理过程名,故选C。(2)①变量n表示红包个数,为整型数据,其值通过文本框text2输入,故答案为n=Val(Text2.Text)。②代码中for循环主要用于分配n个红包的具体金额的,for内部嵌套了两个if语句,第一个块if用于判断是不是最后一个红包,若是,则将全部余额分配给最后这个红包。故答案为i=n,或者n=i。③代码中for循环嵌套的第二个块if语句用于找出最大红包,若红包金额x大于max,就将该x赋给max,故答案为max=x。(3)语句“x=int(100*x+0.5)/100”是四舍五入较为常见的一种的方法,故选B。20.【答案】①n=Val(Text1.Text)②a(i)=Int(Rnd*10)③((i-1)\n+1)*n④s=s+Str(a(i))【解析】第①空,获取n的初始值,即矩阵大小。第②空,生成矩阵中的每一个元素存储在a数组中,每个元素为[0,9]的随机整数。第③空,每行排序,所以数据比较的范围为每n个数变动一次,比如7*7的矩阵,第一趟的比较范围为1到7个数,第二趟为8到14个数,第三趟为15到21个数„„,k=i初始化位置,所以j=i+1To((i-1)\n+1)*n。第④空,数据排序后重新逐个连接输出。淘宝统一定价:13元
temp=a(j):
a(i)=temp
Nextk
(1)到a(6)的值依次为“9,8,7,6,5,4”,经过该程序段“加工”后,数组元素a
(1)到a(6)的值依次为()
A.9,8,7,6,5,4B.4,5,6,7,8,9
C.7,8,9,4,5,6D.9,8,7,4,5,6
5.有如下程序段:
Fori=1To2
Forj=5Toi+1Step-1
Ifa(j)>a(j-1)Then
a(j-1)=t
(1)到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元素a
(1)到a(5)的值依次为()
A.77,45,33,24,16B.16,24,33,45,77
C.77,45,24,16,33D.16,24,45,33,77
6.以下VB代码运行后,在文本框Textl中输入1,则选择语句Ifk<=9Thenk=k+i执行的次数为()
PrivateSubText1_Change()
DimkAsInteger,iAsInteger
k=Val(Text1.Text)
Ifk<=9Thenk=k+i
Text1.Text=Str(k)
EndSub
A.3B.5C.6D.9
7.有一组升序排列的数:
3、6、7、10、12、17、26、31、79,如果用对分法查找数据10,则依次访问的数据为()
A.12、6、7、10B.12、7、10C.12、6、10D.12、7、6、10
8.字符串中任意连续的字符组成的子序列称为该字符串的子串,如字符串“abc”的子串有“a”“b”“c”“ab”“bc”“abc”。
输出字符串s所有子串的VB程序段如下:
PrivateSubCommandl_Click()
DimsAsString,slenAsInteger
DimIAsInteger,jAsInteger
s=Textl.Text
slen=Len(s)①
Fori=lToslen②
Forj=lToslen-i+1③
Listl.AddltemMid(s,j,i)④
则下列说法正确在的是()
A.变量s放的是原始字符串的长度值
B.若输入“12345”,则字符串“245”是该字符串的子串
C.当j=2时,内循环遍历输出所有长度为2的子串
D.在保证算法功能一致的情况下,注释④处的语句可改写为Listl.AddltemMid(s,i,j)
9.有如下VB程序:
Dims1,s2,chAsString
DimiAsInteger
s1=Text1.Text
Fori=1ToLen(sl)
ch=Mid(sl,i,1)
IfAsc(ch)>=65AndAsc(ch)<=90Then
ch=Chr(Asc(ch)+3)
s2=ch+s2
Label1.Caption=s2
己知大写字母A的ASCII码为65。
运行上述程序,若文本框Textl中的内容为“Alb2C3”,单击命令按钮Commandl,标签Labell中显示的是()
A.Alb2C3B.3C2blAC.Dlb2F3D.3F2b1D
10.有如下程序段:
tail=6:
i=1:
r=Val(Text1.Text)
DoWhileiForj=tailToi+1Step-1Ifa(j)>a(j-1)Thent=a(j)a(j)=a(j-1)a(j-1)=tEndIfNextji=i+1Forj=iTotail-1Ifa(j)t=a(j)a(j)=a(j+1):a(j+1)=tEndIfNextjtail=tail-1Loop数组元素a(1)到a(6)的值依次为“73、56、28、61、44、92”,若在文本框Text1中输入“2”,则经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为()A.73,61,56,92,44,28B.92,73,56,61,44,28C.92,73,61,56,28,44D.92,73,61,56,44,2811.数组元素a(0)到a(9)的值依次为“13,20,22,25,30,33,40,52,65,100”,文本框Text1中输入的值是33,执行该程序段,下列描述正确的是()key=Val(Text1.Text)i=0:j=9:s=0DoWhilei<=jm=Fix((i+j)\2+0.5)s=s+1Ifkey=a(m)ThenLabel1.Caption=Label1.Caption+"→"+Str(m)ExitDo'ExitDo表示退出循环EndIfIfkeyLabel1.Caption=Label1.Caption+"→"+Str(m)LoopLabel2.Caption="历经"+CStr(s)+"步"A.标签Label1显示内容为“→4→7→5”B.标签Label2显示内容为“历经1步”C.该程序为顺序查找,查找次数为3D.该程序为对分查找,查找次数为412.有以下VB程序段a(1)=68:a(2)=88:a(3)=76:a(4)=60:a(5)=98a(6)=100:a(7)=64:a(8)=85:a(9)=99:a(10)=59Fori=1To9b(i)=Abs(a(i+1)-a(i))c(b(i)\10)=c(b(i)\10)+1NextiFori=0To10Ifc(i)>0ThenLabel1.Caption=Label1.Caption+""+Str(c(i))EndIfNexti数组c各元素初值为0,执行该程序段,标签Label1上显示的内容是()A.23211B.13221C.23221D.1321213.小王制作了一个插入数据到指定位置的VB程序,程序运行时,在文本框Text1中输入“4”,Text2中输入“3”,当该程序段运行完毕后,数组d的元素值依次为()Dimd(1To6)AsIntegerd(1)=9:d(2)=7:d(3)=5:d(4)=4:d(5)=2DimmAsInteger,nAsInteger,iAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)Fori=6Tom-1Step-1d(i)=d(i-1)Nextid(i)=nA.397542B.937542C.497542D.94754214.有如下VB程序段,若数组元素d(l)〜d(6)的值分别为:"f、”a"、”t”、”h”、”e”、”r”,在文本框Textl中输入3,则该程序运行结束后,标签Labell中显示的内容为()n=Val(Text1.Text)s=d(n)Fori=1To5Forj=6Toi+1Step-1Ifd(j)t=d(j):j(j)=d(i):d(i)=tIfi=nThens=s+"-"+d(i)Ifj=nThens=s+"-"+d(j)EndIfNextjNextiLabel1.Caption=sA.t-a-r-f-hB.t-r-fC.t-e-fD.t-r-h15.阅读如下程序,Label1中显示的是()Dima(1To10)AsIntegerDimsAsStringFori=1To10a(i)=1NextiForj=1To5Fori=1To10IfiModj=0Thena(i)=1-a(i)EndIfNextiNextjFori=1To10Label1.Caption=Label1.Caption&a(i)NextiA.0110100010B.0110100000C.1010100000D.100101110116.有如下VB程序段:Dima(lTo5)AsInteger,iAsInteger,cAsIntegera(l)=2:a(2)=1:a(3)=3:a(4)=4:a(5)=5:c=0Fori=3To5Ifa(i-2)+a(i-1)=a(i)Thenc=c+1NextiTextl.Text=Str(c)该程序段运行后,文本框Textl中显示的内容是()A.1B.2C.3D.417.有如下VB程序段:DimxAsLong,i,yAsIntegerDimAns,tAsLongx=123DoWhilex>0y=xMod10t=1Fori=1Toyt=t*yNextians=ans+tx=x\10Loop程序运行后,变量ans的值是()A.14B.32C.123D.32118.下面程序的功能是:产生30个[1,100]范围内的随机整数,并统计这30个随机数中不重复的整数的个数,最后将统计结果显示在标签Label1中。例如:5个随机数[1,2,3,2,1]中不重复数字个数为3。程序部分代码如下:count=0Fori=1To30a(i)=Int(Rnd*100)+1NextiFori=1To30NextiFori=1To100Ifb(i)<>0Thencount=count+1NextiLabel1.Caption="不重复数字个数"+Str(count)为实现上述功能,则程序划线处应填入的语句为()A.b(i)=1B.b(a(i))=a(b(i))+1C.b(i)=b(i)+1D.b(a(i))=b(a(i))+119.VB程序实现如下功能:在文本框Text1中输入要发放的红包总金额,文本框Text2中输入红包个数,单击“发红包”按钮Command1,在列表框List1中输出每个随机分配的红包金额,界面如图所示。(1)代码“PrivateSubCommand1_Click()”中的Command1_Click是。(单选,填字母:A.属性名/B.对象名/C.过程名)(2)为实现上述功能,请在划线处填入合适的代码。PrivateSubCommand1_Click()DimsAsSingle,xAsSingle,nAsInteger,iAsInteger,maxAsSingle,pAsIntegerRandomizeList1.Clears=Val(Text1.Text)max=0:p=0Fori=1TonIfThenx=sElsex=Rnd*s/(n-i)EndIfx=Int(100*x+0.5)/100s=s-xList1.AddItem"红包"+Str(i)+":"+Str(x)Ifx>maxThenp=iNextiLabel3.Caption="运气王为:红包"+Str(p)EndSub(3)语句“x=Int(100*x+0.5)/100”的作用是。(单选,填字母:A.防止出现0元红包B.四舍五入保留两位小数C.求剩余金额)20.对一个n×n的矩阵以“行”为单位进行升序排序,如下表所示是一个4×4的矩阵以行为单位进行升序排序。李华编写了实现上述功能的程序,程序功能如下:程序运行时,在文本框Text1中输入n(1<=n<=10)单击“产生”按钮Command1产生n×n个随机数,随机数的范围为[0,9],随机存储在数组a中,并以矩阵的形式在列表框List1上显示。单击“排序”按钮Command2,对矩阵以“行”为单位进行升序排序,并在列表框List2输出排序后的矩阵。在程序运行界面如下图所示。实现上述功能的VB程序如下,请在划线处填入合适的代码。DimnAsIntegerDima(1To100)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,sAsStrings=""Fori=1Ton*ns=s+Str(a(i))IfiModn=0ThenList1.AddItemss=""EndIfNextiEndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,tAsIntegerDimsAsStrings=""Fori=1Ton*nk=iForj=i+1ToIfa(j)NextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tIfiModn=0ThenList2.AddItemss=""EndIfNextiEndSub 专题8VB综合应用之算法程序设计(专项练习)(参考答案)123456789ABACADABC101112131415161718BABBBABBD19.【答案】(1)C(2)①n=Val(Text2.Text)②i=n③max=x(3)B【解析】(1)事件处理过程名由对象名和事件名组成,故“Command1_Click”是事件处理过程名,故选C。(2)①变量n表示红包个数,为整型数据,其值通过文本框text2输入,故答案为n=Val(Text2.Text)。②代码中for循环主要用于分配n个红包的具体金额的,for内部嵌套了两个if语句,第一个块if用于判断是不是最后一个红包,若是,则将全部余额分配给最后这个红包。故答案为i=n,或者n=i。③代码中for循环嵌套的第二个块if语句用于找出最大红包,若红包金额x大于max,就将该x赋给max,故答案为max=x。(3)语句“x=int(100*x+0.5)/100”是四舍五入较为常见的一种的方法,故选B。20.【答案】①n=Val(Text1.Text)②a(i)=Int(Rnd*10)③((i-1)\n+1)*n④s=s+Str(a(i))【解析】第①空,获取n的初始值,即矩阵大小。第②空,生成矩阵中的每一个元素存储在a数组中,每个元素为[0,9]的随机整数。第③空,每行排序,所以数据比较的范围为每n个数变动一次,比如7*7的矩阵,第一趟的比较范围为1到7个数,第二趟为8到14个数,第三趟为15到21个数„„,k=i初始化位置,所以j=i+1To((i-1)\n+1)*n。第④空,数据排序后重新逐个连接输出。淘宝统一定价:13元
Forj=tailToi+1Step-1
t=a(j)
a(j)=a(j-1)
Forj=iTotail-1
Ifa(j)t=a(j)a(j)=a(j+1):a(j+1)=tEndIfNextjtail=tail-1Loop数组元素a(1)到a(6)的值依次为“73、56、28、61、44、92”,若在文本框Text1中输入“2”,则经过该程序段“加工”后,数组元素a(1)到a(6)的值依次为()A.73,61,56,92,44,28B.92,73,56,61,44,28C.92,73,61,56,28,44D.92,73,61,56,44,2811.数组元素a(0)到a(9)的值依次为“13,20,22,25,30,33,40,52,65,100”,文本框Text1中输入的值是33,执行该程序段,下列描述正确的是()key=Val(Text1.Text)i=0:j=9:s=0DoWhilei<=jm=Fix((i+j)\2+0.5)s=s+1Ifkey=a(m)ThenLabel1.Caption=Label1.Caption+"→"+Str(m)ExitDo'ExitDo表示退出循环EndIfIfkeyLabel1.Caption=Label1.Caption+"→"+Str(m)LoopLabel2.Caption="历经"+CStr(s)+"步"A.标签Label1显示内容为“→4→7→5”B.标签Label2显示内容为“历经1步”C.该程序为顺序查找,查找次数为3D.该程序为对分查找,查找次数为412.有以下VB程序段a(1)=68:a(2)=88:a(3)=76:a(4)=60:a(5)=98a(6)=100:a(7)=64:a(8)=85:a(9)=99:a(10)=59Fori=1To9b(i)=Abs(a(i+1)-a(i))c(b(i)\10)=c(b(i)\10)+1NextiFori=0To10Ifc(i)>0ThenLabel1.Caption=Label1.Caption+""+Str(c(i))EndIfNexti数组c各元素初值为0,执行该程序段,标签Label1上显示的内容是()A.23211B.13221C.23221D.1321213.小王制作了一个插入数据到指定位置的VB程序,程序运行时,在文本框Text1中输入“4”,Text2中输入“3”,当该程序段运行完毕后,数组d的元素值依次为()Dimd(1To6)AsIntegerd(1)=9:d(2)=7:d(3)=5:d(4)=4:d(5)=2DimmAsInteger,nAsInteger,iAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)Fori=6Tom-1Step-1d(i)=d(i-1)Nextid(i)=nA.397542B.937542C.497542D.94754214.有如下VB程序段,若数组元素d(l)〜d(6)的值分别为:"f、”a"、”t”、”h”、”e”、”r”,在文本框Textl中输入3,则该程序运行结束后,标签Labell中显示的内容为()n=Val(Text1.Text)s=d(n)Fori=1To5Forj=6Toi+1Step-1Ifd(j)t=d(j):j(j)=d(i):d(i)=tIfi=nThens=s+"-"+d(i)Ifj=nThens=s+"-"+d(j)EndIfNextjNextiLabel1.Caption=sA.t-a-r-f-hB.t-r-fC.t-e-fD.t-r-h15.阅读如下程序,Label1中显示的是()Dima(1To10)AsIntegerDimsAsStringFori=1To10a(i)=1NextiForj=1To5Fori=1To10IfiModj=0Thena(i)=1-a(i)EndIfNextiNextjFori=1To10Label1.Caption=Label1.Caption&a(i)NextiA.0110100010B.0110100000C.1010100000D.100101110116.有如下VB程序段:Dima(lTo5)AsInteger,iAsInteger,cAsIntegera(l)=2:a(2)=1:a(3)=3:a(4)=4:a(5)=5:c=0Fori=3To5Ifa(i-2)+a(i-1)=a(i)Thenc=c+1NextiTextl.Text=Str(c)该程序段运行后,文本框Textl中显示的内容是()A.1B.2C.3D.417.有如下VB程序段:DimxAsLong,i,yAsIntegerDimAns,tAsLongx=123DoWhilex>0y=xMod10t=1Fori=1Toyt=t*yNextians=ans+tx=x\10Loop程序运行后,变量ans的值是()A.14B.32C.123D.32118.下面程序的功能是:产生30个[1,100]范围内的随机整数,并统计这30个随机数中不重复的整数的个数,最后将统计结果显示在标签Label1中。例如:5个随机数[1,2,3,2,1]中不重复数字个数为3。程序部分代码如下:count=0Fori=1To30a(i)=Int(Rnd*100)+1NextiFori=1To30NextiFori=1To100Ifb(i)<>0Thencount=count+1NextiLabel1.Caption="不重复数字个数"+Str(count)为实现上述功能,则程序划线处应填入的语句为()A.b(i)=1B.b(a(i))=a(b(i))+1C.b(i)=b(i)+1D.b(a(i))=b(a(i))+119.VB程序实现如下功能:在文本框Text1中输入要发放的红包总金额,文本框Text2中输入红包个数,单击“发红包”按钮Command1,在列表框List1中输出每个随机分配的红包金额,界面如图所示。(1)代码“PrivateSubCommand1_Click()”中的Command1_Click是。(单选,填字母:A.属性名/B.对象名/C.过程名)(2)为实现上述功能,请在划线处填入合适的代码。PrivateSubCommand1_Click()DimsAsSingle,xAsSingle,nAsInteger,iAsInteger,maxAsSingle,pAsIntegerRandomizeList1.Clears=Val(Text1.Text)max=0:p=0Fori=1TonIfThenx=sElsex=Rnd*s/(n-i)EndIfx=Int(100*x+0.5)/100s=s-xList1.AddItem"红包"+Str(i)+":"+Str(x)Ifx>maxThenp=iNextiLabel3.Caption="运气王为:红包"+Str(p)EndSub(3)语句“x=Int(100*x+0.5)/100”的作用是。(单选,填字母:A.防止出现0元红包B.四舍五入保留两位小数C.求剩余金额)20.对一个n×n的矩阵以“行”为单位进行升序排序,如下表所示是一个4×4的矩阵以行为单位进行升序排序。李华编写了实现上述功能的程序,程序功能如下:程序运行时,在文本框Text1中输入n(1<=n<=10)单击“产生”按钮Command1产生n×n个随机数,随机数的范围为[0,9],随机存储在数组a中,并以矩阵的形式在列表框List1上显示。单击“排序”按钮Command2,对矩阵以“行”为单位进行升序排序,并在列表框List2输出排序后的矩阵。在程序运行界面如下图所示。实现上述功能的VB程序如下,请在划线处填入合适的代码。DimnAsIntegerDima(1To100)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,sAsStrings=""Fori=1Ton*ns=s+Str(a(i))IfiModn=0ThenList1.AddItemss=""EndIfNextiEndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,tAsIntegerDimsAsStrings=""Fori=1Ton*nk=iForj=i+1ToIfa(j)NextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tIfiModn=0ThenList2.AddItemss=""EndIfNextiEndSub 专题8VB综合应用之算法程序设计(专项练习)(参考答案)123456789ABACADABC101112131415161718BABBBABBD19.【答案】(1)C(2)①n=Val(Text2.Text)②i=n③max=x(3)B【解析】(1)事件处理过程名由对象名和事件名组成,故“Command1_Click”是事件处理过程名,故选C。(2)①变量n表示红包个数,为整型数据,其值通过文本框text2输入,故答案为n=Val(Text2.Text)。②代码中for循环主要用于分配n个红包的具体金额的,for内部嵌套了两个if语句,第一个块if用于判断是不是最后一个红包,若是,则将全部余额分配给最后这个红包。故答案为i=n,或者n=i。③代码中for循环嵌套的第二个块if语句用于找出最大红包,若红包金额x大于max,就将该x赋给max,故答案为max=x。(3)语句“x=int(100*x+0.5)/100”是四舍五入较为常见的一种的方法,故选B。20.【答案】①n=Val(Text1.Text)②a(i)=Int(Rnd*10)③((i-1)\n+1)*n④s=s+Str(a(i))【解析】第①空,获取n的初始值,即矩阵大小。第②空,生成矩阵中的每一个元素存储在a数组中,每个元素为[0,9]的随机整数。第③空,每行排序,所以数据比较的范围为每n个数变动一次,比如7*7的矩阵,第一趟的比较范围为1到7个数,第二趟为8到14个数,第三趟为15到21个数„„,k=i初始化位置,所以j=i+1To((i-1)\n+1)*n。第④空,数据排序后重新逐个连接输出。淘宝统一定价:13元
t=a(j)a(j)=a(j+1):
a(j+1)=t
tail=tail-1
Loop
(1)到a(6)的值依次为“73、56、28、61、44、92”,若在文本框Text1中输入“2”,则经过该程序段“加工”后,数组元素a
A.73,61,56,92,44,28B.92,73,56,61,44,28
C.92,73,61,56,28,44D.92,73,61,56,44,28
11.数组元素a(0)到a(9)的值依次为“13,20,22,25,30,33,40,52,65,100”,文本框Text1中输入的值是33,执行该程序段,下列描述正确的是()
key=Val(Text1.Text)
i=0:
j=9:
DoWhilei<=j
m=Fix((i+j)\2+0.5)
Ifkey=a(m)Then
Label1.Caption=Label1.Caption+"→"+Str(m)
ExitDo'ExitDo表示退出循环
IfkeyLabel1.Caption=Label1.Caption+"→"+Str(m)LoopLabel2.Caption="历经"+CStr(s)+"步"A.标签Label1显示内容为“→4→7→5”B.标签Label2显示内容为“历经1步”C.该程序为顺序查找,查找次数为3D.该程序为对分查找,查找次数为412.有以下VB程序段a(1)=68:a(2)=88:a(3)=76:a(4)=60:a(5)=98a(6)=100:a(7)=64:a(8)=85:a(9)=99:a(10)=59Fori=1To9b(i)=Abs(a(i+1)-a(i))c(b(i)\10)=c(b(i)\10)+1NextiFori=0To10Ifc(i)>0ThenLabel1.Caption=Label1.Caption+""+Str(c(i))EndIfNexti数组c各元素初值为0,执行该程序段,标签Label1上显示的内容是()A.23211B.13221C.23221D.1321213.小王制作了一个插入数据到指定位置的VB程序,程序运行时,在文本框Text1中输入“4”,Text2中输入“3”,当该程序段运行完毕后,数组d的元素值依次为()Dimd(1To6)AsIntegerd(1)=9:d(2)=7:d(3)=5:d(4)=4:d(5)=2DimmAsInteger,nAsInteger,iAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)Fori=6Tom-1Step-1d(i)=d(i-1)Nextid(i)=nA.397542B.937542C.497542D.94754214.有如下VB程序段,若数组元素d(l)〜d(6)的值分别为:"f、”a"、”t”、”h”、”e”、”r”,在文本框Textl中输入3,则该程序运行结束后,标签Labell中显示的内容为()n=Val(Text1.Text)s=d(n)Fori=1To5Forj=6Toi+1Step-1Ifd(j)t=d(j):j(j)=d(i):d(i)=tIfi=nThens=s+"-"+d(i)Ifj=nThens=s+"-"+d(j)EndIfNextjNextiLabel1.Caption=sA.t-a-r-f-hB.t-r-fC.t-e-fD.t-r-h15.阅读如下程序,Label1中显示的是()Dima(1To10)AsIntegerDimsAsStringFori=1To10a(i)=1NextiForj=1To5Fori=1To10IfiModj=0Thena(i)=1-a(i)EndIfNextiNextjFori=1To10Label1.Caption=Label1.Caption&a(i)NextiA.0110100010B.0110100000C.1010100000D.100101110116.有如下VB程序段:Dima(lTo5)AsInteger,iAsInteger,cAsIntegera(l)=2:a(2)=1:a(3)=3:a(4)=4:a(5)=5:c=0Fori=3To5Ifa(i-2)+a(i-1)=a(i)Thenc=c+1NextiTextl.Text=Str(c)该程序段运行后,文本框Textl中显示的内容是()A.1B.2C.3D.417.有如下VB程序段:DimxAsLong,i,yAsIntegerDimAns,tAsLongx=123DoWhilex>0y=xMod10t=1Fori=1Toyt=t*yNextians=ans+tx=x\10Loop程序运行后,变量ans的值是()A.14B.32C.123D.32118.下面程序的功能是:产生30个[1,100]范围内的随机整数,并统计这30个随机数中不重复的整数的个数,最后将统计结果显示在标签Label1中。例如:5个随机数[1,2,3,2,1]中不重复数字个数为3。程序部分代码如下:count=0Fori=1To30a(i)=Int(Rnd*100)+1NextiFori=1To30NextiFori=1To100Ifb(i)<>0Thencount=count+1NextiLabel1.Caption="不重复数字个数"+Str(count)为实现上述功能,则程序划线处应填入的语句为()A.b(i)=1B.b(a(i))=a(b(i))+1C.b(i)=b(i)+1D.b(a(i))=b(a(i))+119.VB程序实现如下功能:在文本框Text1中输入要发放的红包总金额,文本框Text2中输入红包个数,单击“发红包”按钮Command1,在列表框List1中输出每个随机分配的红包金额,界面如图所示。(1)代码“PrivateSubCommand1_Click()”中的Command1_Click是。(单选,填字母:A.属性名/B.对象名/C.过程名)(2)为实现上述功能,请在划线处填入合适的代码。PrivateSubCommand1_Click()DimsAsSingle,xAsSingle,nAsInteger,iAsInteger,maxAsSingle,pAsIntegerRandomizeList1.Clears=Val(Text1.Text)max=0:p=0Fori=1TonIfThenx=sElsex=Rnd*s/(n-i)EndIfx=Int(100*x+0.5)/100s=s-xList1.AddItem"红包"+Str(i)+":"+Str(x)Ifx>maxThenp=iNextiLabel3.Caption="运气王为:红包"+Str(p)EndSub(3)语句“x=Int(100*x+0.5)/100”的作用是。(单选,填字母:A.防止出现0元红包B.四舍五入保留两位小数C.求剩余金额)20.对一个n×n的矩阵以“行”为单位进行升序排序,如下表所示是一个4×4的矩阵以行为单位进行升序排序。李华编写了实现上述功能的程序,程序功能如下:程序运行时,在文本框Text1中输入n(1<=n<=10)单击“产生”按钮Command1产生n×n个随机数,随机数的范围为[0,9],随机存储在数组a中,并以矩阵的形式在列表框List1上显示。单击“排序”按钮Command2,对矩阵以“行”为单位进行升序排序,并在列表框List2输出排序后的矩阵。在程序运行界面如下图所示。实现上述功能的VB程序如下,请在划线处填入合适的代码。DimnAsIntegerDima(1To100)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,sAsStrings=""Fori=1Ton*ns=s+Str(a(i))IfiModn=0ThenList1.AddItemss=""EndIfNextiEndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,tAsIntegerDimsAsStrings=""Fori=1Ton*nk=iForj=i+1ToIfa(j)NextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tIfiModn=0ThenList2.AddItemss=""EndIfNextiEndSub 专题8VB综合应用之算法程序设计(专项练习)(参考答案)123456789ABACADABC101112131415161718BABBBABBD19.【答案】(1)C(2)①n=Val(Text2.Text)②i=n③max=x(3)B【解析】(1)事件处理过程名由对象名和事件名组成,故“Command1_Click”是事件处理过程名,故选C。(2)①变量n表示红包个数,为整型数据,其值通过文本框text2输入,故答案为n=Val(Text2.Text)。②代码中for循环主要用于分配n个红包的具体金额的,for内部嵌套了两个if语句,第一个块if用于判断是不是最后一个红包,若是,则将全部余额分配给最后这个红包。故答案为i=n,或者n=i。③代码中for循环嵌套的第二个块if语句用于找出最大红包,若红包金额x大于max,就将该x赋给max,故答案为max=x。(3)语句“x=int(100*x+0.5)/100”是四舍五入较为常见的一种的方法,故选B。20.【答案】①n=Val(Text1.Text)②a(i)=Int(Rnd*10)③((i-1)\n+1)*n④s=s+Str(a(i))【解析】第①空,获取n的初始值,即矩阵大小。第②空,生成矩阵中的每一个元素存储在a数组中,每个元素为[0,9]的随机整数。第③空,每行排序,所以数据比较的范围为每n个数变动一次,比如7*7的矩阵,第一趟的比较范围为1到7个数,第二趟为8到14个数,第三趟为15到21个数„„,k=i初始化位置,所以j=i+1To((i-1)\n+1)*n。第④空,数据排序后重新逐个连接输出。淘宝统一定价:13元
Label2.Caption="历经"+CStr(s)+"步"
A.标签Label1显示内容为“→4→7→5”
B.标签Label2显示内容为“历经1步”
C.该程序为顺序查找,查找次数为3
D.该程序为对分查找,查找次数为4
12.有以下VB程序段
a
(1)=68:
(2)=88:
a(3)=76:
a(4)=60:
a(5)=98a(6)=100:
a(7)=64:
a(8)=85:
a(9)=99:
a(10)=59
Fori=1To9
b(i)=Abs(a(i+1)-a(i))
c(b(i)\10)=c(b(i)\10)+1
Fori=0To10
Ifc(i)>0Then
Label1.Caption=Label1.Caption+""+Str(c(i))
数组c各元素初值为0,执行该程序段,标签Label1上显示的内容是()
A.23211B.13221
C.23221D.13212
13.小王制作了一个插入数据到指定位置的VB程序,程序运行时,在文本框Text1中输入“4”,Text2中输入“3”,当该程序段运行完毕后,数组d的元素值依次为()
Dimd(1To6)AsInteger
d
(1)=9:
(2)=7:
d(3)=5:
d(4)=4:
d(5)=2
DimmAsInteger,nAsInteger,iAsInteger
m=Val(Text1.Text)
n=Val(Text2.Text)
Fori=6Tom-1Step-1
d(i)=d(i-1)
d(i)=n
A.397542B.937542
C.497542D.947542
14.有如下VB程序段,若数组元素d(l)〜d(6)的值分别为:
"f、”a"、”t”、”h”、”e”、”r”,在文本框Textl中输入3,则该程序运行结束后,标签Labell中显示的内容为()
n=Val(Text1.Text)
s=d(n)
Fori=1To5
Forj=6Toi+1Step-1
Ifd(j)t=d(j):j(j)=d(i):d(i)=tIfi=nThens=s+"-"+d(i)Ifj=nThens=s+"-"+d(j)EndIfNextjNextiLabel1.Caption=sA.t-a-r-f-hB.t-r-fC.t-e-fD.t-r-h15.阅读如下程序,Label1中显示的是()Dima(1To10)AsIntegerDimsAsStringFori=1To10a(i)=1NextiForj=1To5Fori=1To10IfiModj=0Thena(i)=1-a(i)EndIfNextiNextjFori=1To10Label1.Caption=Label1.Caption&a(i)NextiA.0110100010B.0110100000C.1010100000D.100101110116.有如下VB程序段:Dima(lTo5)AsInteger,iAsInteger,cAsIntegera(l)=2:a(2)=1:a(3)=3:a(4)=4:a(5)=5:c=0Fori=3To5Ifa(i-2)+a(i-1)=a(i)Thenc=c+1NextiTextl.Text=Str(c)该程序段运行后,文本框Textl中显示的内容是()A.1B.2C.3D.417.有如下VB程序段:DimxAsLong,i,yAsIntegerDimAns,tAsLongx=123DoWhilex>0y=xMod10t=1Fori=1Toyt=t*yNextians=ans+tx=x\10Loop程序运行后,变量ans的值是()A.14B.32C.123D.32118.下面程序的功能是:产生30个[1,100]范围内的随机整数,并统计这30个随机数中不重复的整数的个数,最后将统计结果显示在标签Label1中。例如:5个随机数[1,2,3,2,1]中不重复数字个数为3。程序部分代码如下:count=0Fori=1To30a(i)=Int(Rnd*100)+1NextiFori=1To30NextiFori=1To100Ifb(i)<>0Thencount=count+1NextiLabel1.Caption="不重复数字个数"+Str(count)为实现上述功能,则程序划线处应填入的语句为()A.b(i)=1B.b(a(i))=a(b(i))+1C.b(i)=b(i)+1D.b(a(i))=b(a(i))+119.VB程序实现如下功能:在文本框Text1中输入要发放的红包总金额,文本框Text2中输入红包个数,单击“发红包”按钮Command1,在列表框List1中输出每个随机分配的红包金额,界面如图所示。(1)代码“PrivateSubCommand1_Click()”中的Command1_Click是。(单选,填字母:A.属性名/B.对象名/C.过程名)(2)为实现上述功能,请在划线处填入合适的代码。PrivateSubCommand1_Click()DimsAsSingle,xAsSingle,nAsInteger,iAsInteger,maxAsSingle,pAsIntegerRandomizeList1.Clears=Val(Text1.Text)max=0:p=0Fori=1TonIfThenx=sElsex=Rnd*s/(n-i)EndIfx=Int(100*x+0.5)/100s=s-xList1.AddItem"红包"+Str(i)+":"+Str(x)Ifx>maxThenp=iNextiLabel3.Caption="运气王为:红包"+Str(p)EndSub(3)语句“x=Int(100*x+0.5)/100”的作用是。(单选,填字母:A.防止出现0元红包B.四舍五入保留两位小数C.求剩余金额)20.对一个n×n的矩阵以“行”为单位进行升序排序,如下表所示是一个4×4的矩阵以行为单位进行升序排序。李华编写了实现上述功能的程序,程序功能如下:程序运行时,在文本框Text1中输入n(1<=n<=10)单击“产生”按钮Command1产生n×n个随机数,随机数的范围为[0,9],随机存储在数组a中,并以矩阵的形式在列表框List1上显示。单击“排序”按钮Command2,对矩阵以“行”为单位进行升序排序,并在列表框List2输出排序后的矩阵。在程序运行界面如下图所示。实现上述功能的VB程序如下,请在划线处填入合适的代码。DimnAsIntegerDima(1To100)AsIntegerPrivateSubCommand1_Click()DimiAsInteger,sAsStrings=""Fori=1Ton*ns=s+Str(a(i))IfiModn=0ThenList1.AddItemss=""EndIfNextiEndSubPrivateSubCommand2_Click()DimiAsInteger,jAsInteger,tAsIntegerDimsAsStrings=""Fori=1Ton*nk=iForj=i+1ToIfa(j)NextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tIfiModn=0ThenList2.AddItemss=""EndIfNextiEndSub 专题8VB综合应用之算法程序设计(专项练习)(参考答案)123456789ABACADABC101112131415161718BABBBABBD19.【答案】(1)C(2)①n=Val(Text2.Text)②i=n③max=x(3)B【解析】(1)事件处理过程名由对象名和事件名组成,故“Command1_Click”是事件处理过程名,故选C。(2)①变量n表示红包个数,为整型数据,其值通过文本框text2输入,故答案为n=Val(Text2.Text)。②代码中for循环主要用于分配n个红包的具体金额的,for内部嵌套了两个if语句,第一个块if用于判断是不是最后一个红包,若是,则将全部余额分配给最后这个红包。故答案为i=n,或者n=i。③代码中for循环嵌套的第二个块if语句用于找出最大红包,若红包金额x大于max,就将该x赋给max,故答案为max=x。(3)语句“x=int(100*x+0.5)/100”是四舍五入较为常见的一种的方法,故选B。20.【答案】①n=Val(Text1.Text)②a(i)=Int(Rnd*10)③((i-1)\n+1)*n④s=s+Str(a(i))【解析】第①空,获取n的初始值,即矩阵大小。第②空,生成矩阵中的每一个元素存储在a数组中,每个元素为[0,9]的随机整数。第③空,每行排序,所以数据比较的范围为每n个数变动一次,比如7*7的矩阵,第一趟的比较范围为1到7个数,第二趟为8到14个数,第三趟为15到21个数„„,k=i初始化位置,所以j=i+1To((i-1)\n+1)*n。第④空,数据排序后重新逐个连接输出。淘宝统一定价:13元
t=d(j):
j(j)=d(i):
d(i)=t
Ifi=nThens=s+"-"+d(i)
Ifj=nThens=s+"-"+d(j)
Label1.Caption=s
A.t-a-r-f-hB.t-r-fC.t-e-fD.t-r-h
15.阅读如下程序,Label1中显示的是()
Dima(1To10)AsInteger
DimsAsString
Fori=1To10
a(i)=1
Forj=1To5
IfiModj=0Then
a(i)=1-a(i)
Label1.Caption=Label1.Caption&a(i)
A.0110100010B.0110100000
C.1010100000D.1001011101
16.有如下VB程序段:
Dima(lTo5)AsInteger,iAsInteger,cAsInteger
a(l)=2:
(2)=1:
a(3)=3:
a(4)=4:
a(5)=5:
c=0
Fori=3To5
Ifa(i-2)+a(i-1)=a(i)Thenc=c+1
Textl.Text=Str(c)
该程序段运行后,文本框Textl中显示的内容是()
A.1B.2C.3D.4
17.有如下VB程序段:
DimxAsLong,i,yAsInteger
DimAns,tAsLong
x=123
DoWhilex>0
y=xMod10
t=1
Fori=1Toy
t=t*y
ans=ans+t
x=x\10
程序运行后,变量ans的值是()
A.14B.32C.123D.321
18.下面程序的功能是:
产生30个[1,100]范围内的随机整数,并统计这30个随机数中不重复的整数的个数,最后将统计结果显示在标签Label1中。
例如:
5个随机数[1,2,3,2,1]中不重复数字个数为3。
程序部分代码如下:
count=0
Fori=1To30
a(i)=Int(Rnd*100)+1
Fori=1To100
Ifb(i)<>0Thencount=count+1
Label1.Caption="不重复数字个数"+Str(count)
为实现上述功能,则程序划线处应填入的语句为()
A.b(i)=1B.b(a(i))=a(b(i))+1
C.b(i)=b(i)+1D.b(a(i))=b(a(i))+1
19.VB程序实现如下功能:
在文本框Text1中输入要发放的红包总金额,文本框Text2中输入红包个数,单击“发红包”按钮Command1,在列表框List1中输出每个随机分配的红包金额,界面如图所示。
(1)代码“PrivateSubCommand1_Click()”中的Command1_Click是。
(单选,填字母:
A.属性名/B.对象名/C.过程名)
(2)为实现上述功能,请在划线处填入合适的代码。
PrivateSubCommand1_Click()
DimsAsSingle,xAsSingle,nAsInteger,iAsInteger,maxAsSingle,pAsInteger
Randomize
List1.Clear
s=Val(Text1.Text)
max=0:
p=0
Fori=1Ton
IfThen
x=s
Else
x=Rnd*s/(n-i)
x=Int(100*x+0.5)/100
s=s-x
List1.AddItem"红包"+Str(i)+":
"+Str(x)
Ifx>maxThenp=i
Label3.Caption="运气王为:
红包"+Str(p)
(3)语句“x=Int(100*x+0.5)/100”的作用是。
A.防止出现0元红包B.四舍五入保留两位小数C.求剩余金额)
20.对一个n×n的矩阵以“行”为单位进行升序排序,如下表所示是一个4×4的矩阵以行为单位进行升序排序。
李华编写了实现上述功能的程序,程序功能如下:
程序运行时,在文本框Text1中输入n(1<=n<=10)单击“产生”按钮Command1产生n×n个随机数,随机数的范围为[0,9],随机存储在数组a中,并以矩阵的形式在列表框List1上显示。
单击“排序”按钮Command2,对矩阵以“行”为单位进行升序排序,并在列表框List2输出排序后的矩阵。
在程序运行界面如下图所示。
实现上述功能的VB程序如下,请在划线处填入合适的代码。
DimnAsInteger
Dima(1To100)AsInteger
DimiAsInteger,sAsString
s=""
Fori=1Ton*n
s=s+Str(a(i))
IfiModn=0Then
List1.AddItems
PrivateSubCommand2_Click()
DimiAsInteger,jAsInteger,tAsInteger
k=i
Forj=i+1To
Ifa(j)NextjIfk<>iThent=a(k):a(k)=a(i):a(i)=tIfiModn=0ThenList2.AddItemss=""EndIfNextiEndSub 专题8VB综合应用之算法程序设计(专项练习)(参考答案)123456789ABACADABC101112131415161718BABBBABBD19.【答案】(1)C(2)①n=Val(Text2.Text)②i=n③max=x(3)B【解析】(1)事件处理过程名由对象名和事件名组成,故“Command1_Click”是事件处理过程名,故选C。(2)①变量n表示红包个数,为整型数据,其值通过文本框text2输入,故答案为n=Val(Text2.Text)。②代码中for循环主要用于分配n个红包的具体金额的,for内部嵌套了两个if语句,第一个块if用于判断是不是最后一个红包,若是,则将全部余额分配给最后这个红包。故答案为i=n,或者n=i。③代码中for循环嵌套的第二个块if语句用于找出最大红包,若红包金额x大于max,就将该x赋给max,故答案为max=x。(3)语句“x=int(100*x+0.5)/100”是四舍五入较为常见的一种的方法,故选B。20.【答案】①n=Val(Text1.Text)②a(i)=Int(Rnd*10)③((i-1)\n+1)*n④s=s+Str(a(i))【解析】第①空,获取n的初始值,即矩阵大小。第②空,生成矩阵中的每一个元素存储在a数组中,每个元素为[0,9]的随机整数。第③空,每行排序,所以数据比较的范围为每n个数变动一次,比如7*7的矩阵,第一趟的比较范围为1到7个数,第二趟为8到14个数,第三趟为15到21个数„„,k=i初始化位置,所以j=i+1To((i-1)\n+1)*n。第④空,数据排序后重新逐个连接输出。淘宝统一定价:13元
Ifk<>iThent=a(k):
a(k)=a(i):
List2.AddItems
专题8VB综合应用之算法程序设计
(专项练习)(参考答案)
1
2
3
4
5
6
7
8
9
A
B
C
D
10
11
12
13
14
15
16
17
18
19.【答案】
(1)C
(2)①n=Val(Text2.Text)②i=n③max=x(3)B
【解析】
(1)事件处理过程名由对象名和事件名组成,故“Command1_Click”是事件处理过程名,故选C。
(2)①变量n表示红包个数,为整型数据,其值通过文本框text2输入,故答案为n=Val(Text2.Text)。
②代码中for循环主要用于分配n个红包的具体金额的,for内部嵌套了两个if语句,第一个块if用于判断是不是最后一个红包,若是,则将全部余额分配给最后这个红包。
故答案为i=n,或者n=i。
③代码中for循环嵌套的第二个块if语句用于找出最大红包,若红包金额x大于max,就将该x赋给max,故答案为max=x。
(3)语句“x=int(100*x+0.5)/100”是四舍五入较为常见的一种的方法,故选B。
20.【答案】①n=Val(Text1.Text)②
a(i)=Int(Rnd*10)
③((i-1)\n+1)*n④s=s+Str(a(i))
【解析】第①空,获取n的初始值,即矩阵大小。
第②空,生成矩阵中的每一个元素存储在a数组中,每个元素为[0,9]的随机整数。
第③空,每行排序,所以数据比较的范围为每n个数变动一次,比如7*7的矩阵,第一趟的比较范围为1到7个数,第二趟为8到14个数,第三趟为15到21个数„„,k=i初始化位置,所以j=i+1To((i-1)\n+1)*n。
第④空,数据排序后重新逐个连接输出。
淘宝统一定价:
13元
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1