tmp=height1(j):
height1(j)=height1(j-1):
height1(j-1)=tmp
EndIf
Nextj
Nexti
Fori=1Tonum
Text1.Text=Text1.Text+""+Str(height1(i))
Nexti
EndSub
PrivateSubCommand2_Click()
Dimleft,rightAsInteger,iAsInteger,midAsInteger
mid=Int((1+num)/2)
left=0:
right=0
height2(mid)=height1
(1)
Fori=1To(num-1)\2
right=right+1
height2(mid+right)=height1(2*i)
left=left+1
②
Nexti
IfnumMod2=0Then③
Fori=1Tonum
Text2.Text=Text2.Text+""+Str(height2(i))
Nexti
EndSub
(1)若参演的8名男生身高为180、171、173、174、178、175、176、170,程序执行结束后height1(5)的值是。
(2)在程序①、②、③画线处填入适当的语句或表达式。
将程序补充完整:
程序中①画线处应填入;
程序中②画线处应填入;
程序中③画线处应填入;
【答案】
(1)175
(2)①num=num+1②height2(mid-left)=height1(2*i+1)③height2(num)=height1(num)
【解析】
【详解】
本题考查VB综合能力。
根据题干,摆出中间低两边高(先右后左)的造型height1(5)=175。
(2)如果是男生,则男生数量+1,故填入num=num+1。
(3)left表示网左边排序,排序的是奇数位上的数值,故填入height2(mid-left)=height1(2*i+1)。
(4)如果整体数量是偶数个,则需要把最后一个也添加到数组中,故填入height2(num)=height1(num)。
7.小龙同学设计了一个求四则混合运算结果的程序,用于计算不带括号的+、-、*、\的运算,\为整除运算,且此处要求*和\的优先级相同。
在表达式中输入待求解的表达式,以=结尾。
按下Command1“计算”按钮后,在标签控件Label1中输出运算结果。
程序界面如下图所示:
(1)在表达式中输入15-22\5*2+7=,则输出的结果是。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Functioncalculate(xAsInteger,yAsInteger,opAsString)AsIntegerIfop="+"Thencalculate=x+y
Ifop="-"Thencalculate=x-yIfop="*"Thencalculate=x*yIfop="\"Thencalculate=x\y
EndFunction
Functionstate(opAsString)AsIntegerIfop="#"Thenstate=-1
Ifop="="Thenstate=1
Ifop="+"Thenstate=1
Ifop="-"Thenstate=1
'①
Ifop="*"Thenstate=3
EndFunction
PrivateSubCommand1_Click()
DimsAsString,lengthAsInteger,tAsStringDimkAsInteger,qAsInteger
Dimopt(0To3)AsStringDimiAsInteger
Dims1AsString
Dima(1To3)AsIntegers=Text1.Text
length=Len(s)
t="":
k=0:
q=0:
opt(q)="#"
Fori=1Tolengths1=Mid(s,i,1)
Ifs1>="0"Ands1<="9"Then
t=t+s1
Else
k=k+1a(k)=Val(t)t=""
DoWhile'②
a(k-1)=calculate(a(k-1),a(k),opt(q))
k=k-1
q=q-1
Loop
q=q+1
'③
Ifs1="="ThenLabel1.Caption=Str(a
(1))
EndIf
Nexti
EndSub
【答案】
(1)14
(2)①Ifop=“\”Thenstate=3②state(s1)<=state(opt(q))③opt(q)=sl
【解析】
【分析】
【详解】
本题考查VB综合能力。
(1)15-22\5*2+7结果为14。
(2)如果运算符是除号,则state=3,故填入Ifop=“\”Thenstate=3。
(3)根据优先级进行运算,若前一个运算符的优先级比后一个运算符高或者相等,则可进行a(k-1)和a(k)的运算,故填入state(s1)<=state(opt(q))。
(4)将运算符记录在opt数组中。
8.若一个三位数abc满足,
则称abc为水仙花数。
如三位数153满足
,则153是水仙花数。
以下是找出所有水仙花数的程序,请把程序补充完整。
(a为百位数、b为十位数、c为个位数)
DimiAsInteger,aAsInteger,bAsInteger,cAsInteger
Fori=100To____________
a=i\100
b=______________
c=i-100*a-10*b
If_______________________Then
Printi
EndIf
Nexti
【答案】999(i-a*100)\10或(iMod100)\10i=a^3+b^3+c^3
【解析】
【详解】
本题考查枚举算法。
本题考查枚举算法。
枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:
可预先确定候选答案的数量;候选答案的范围在求解之前必须有一个确定的集合。
(1)三位数的范围是100-999,所以第一空为999。
(2)b是三位数的中间那个数字,所以该空代码为(i-a*100)\10或(iMod100)\10。
(3)如果符合水仙花数的条件,则打印,故该空为i=a^3+b^3+c^3。
9.小王基于选择排序算法编写了一个VB程序,功能如下:
数组a有n*n个元素,按n行n列进行排列,按列进行升序排序。
例如6*6的数组,第一列将a
(1),a(7),a(13),a(19),a(25),a(31)进行排序。
运行程序,在列表框List1中显示n*n个数列单击“排序”按钮Command1,在列表框List2中显示排序后的结果,程序运行界面如图所示。
请回答下列问题:
(1)n=6时运行结果如图所示,图中1处“47”在数组a中下标是_______(填数字)。
(2)为了实现上述功能,请在划线处填写合适的代码。
①_______________
②_______________
(3)程序中加框处代码有错,请改正。
_________________
Constn=6
Dima(1Ton*n)AsInteger
PrivateSubForm_Load()'产生n*n个数组元素,每行按n个数显示在list1中
Fori=1Ton*n
a(i)=Int(Rnd*90)+10
s=s+Str(a(i))
If①____________Then
List1.AddItems
s=""
EndIf
Nexti
EndSub
PrivateSubCommand1_Click()
DimiAsInteger,jAsInteger,wAsInteger,sAsString
Fori=1Ton*n
k=i
Forj=k+nTo②___________
Ifa(k)>a(j)Thenk=j
Nextj
If
Thent=a(k):
a(k)=a(i):
a(i)=t
Nexti
'将排序后数组a的元素,按每行n个数显示在list2中,代码略
EndSub
【答案】12iModn=0
n*nStepn
k<>i或a(k)<>a(i)
【解析】
【详解】
本题考查VB综合能力,选择排序算法等。
(1)根据矩阵排列,每行每列都是n个,可知图中1处47在数组a中下标是12。
(2)List1中是按每行输出,所以当一行数量达到n个时,输出。
则第一空的代码为iModn=0。
(3)因为是按照列排序,所以在内循环的终值将所有数组元素包括,限定步长为n,这样就可以保证按列比较,故第二空代码为n*nStepn。
(4)根据选择排序特性,当a(k)<>a(i)时,交换,故改为a(k)<>a(i)。
10.编写VB程序,实现如下功能:
在文本框Text1中输入二进制数,单击“转换”命令按钮Command1,在文本框Text2中输出对应的十六进制数。
程序运行界面如图所示,请回答下列问题:
(1)如果输入的二进制数为“1101010”,则得到的结果为____________。
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
PrivateFunctionbw(xAsInteger,yAsString)AsString
'函数bw功能:
若二进制位数不足,通过在前面添"0"使得位数为4的倍数
DimrAsInteger,iAsInteger
r=xMod4
Ifr<>0Then
Fori=1To4-r
y="0"+y
Nexti
x=Len(y)
EndIf
bw=______________
EndFunction
PrivateSubCommand1_Click()
DimmAsString,nAsInteger,iAsInteger,aAsInteger
DimsAsInteger,s1AsString,jAsInteger
m=Text1.Text
n=Len(m)
Text2.Text=""
m=____________'调整m的位数为4的倍数
Fori=1Ton-3Step4
s=0
Forj=iToi+3
a=Val(Mid(m,j,1))
s=_______________
Nextj
Ifs>=10Then
s1=Chr(Asc("A")+s-10)
Else
s1=CStr(s)'函数CStr类似于Str,但无前导空格
EndIf
Text2.Text=Text2.Text+s1
Nexti
EndSub
【答案】6Aybw(n,m)s*2+a
【解析】
【详解】
本题考查VB综合能力,进制转换等。
(1)根据题意,将1101010转为十六进制,得到结果为6A。
(2)在自定义函数内部,需要有返回值,故代码第一空填写为y。
(3)此处语句为调用自定义函数,将n和m带入自定义函数,故此空语句为bw(n,m)。
(4)此处语句为将二进制转换为十进制,叠加语句可以是结果变量乘以进制数然后加上当前数值,故代码为s*2+a。
11.某加密算法的明文和密钥均由英文字母组成,且密钥循环使用,其加密规则如下:
①明文字符与对应密钥的ASCII码转化为二进制后求异或(对应位相同时结果为0,对应位不同时结果为1,如二进制1001与二进制1100的异或值为0101),并将异或结果转换为十进制p;
②如果处在奇数位,则将明文字符循环后移p个位置,否则将明文前移p个位置。