相关试卷
-
1、均分红包。当前有n堆红包,编号为1,2, 3, 。。 n,每堆有若干个红包,红包总数sum是n的倍数。可以在任一堆上取若干个红包,然后移动,最终使每堆上的红包个数相同。
移红包规则:
①编号为1的堆上的红包,只能移到编号为2的堆上;
②编号为n的堆上的红包,只能移到编号为n-1的堆上;
③其它堆上的红包,可以移到相邻左边或右边的堆上。
现要求找出最少的移动次数使每堆的红包数-样多。如图所示,在文本框Text1中输入红包堆数n,在文本框Text2中依次输入每堆红包的红包个数(以“,”为分隔符和结束符),单击“移红包次数统计”按钮Command1后,在标签Labe13中显示最少的移动次数。
(1)、代码“Private Sub Command1_ Click( )”中的Click是(单选,填字母: A . 对象名\B . 事件名\C . 事件处理过程名\D . 方法名)(2)、实现上述功能的VB程序如下,请在划线处填入合适的代码。Const Sum = 40 '红包总个数
Private Sub Command1_ Click ()
Dim n As Integer '红包的堆数
Dim s As String, k As Integer
Dim avg As Integer '最终每堆的红包个数
Dim m1 As Integer, m2 As Integer
Dim tmp As Integer, count As Integer, ans As Integer
n=
s = Text2. Text
avg=Sum/n
tmp=0: count=0: ans=0
For k=1 To Len(s)
c = Mid(s, k, 1)
If c <>","Then
tmp =
Else
count = count + 1
If count = 1 Then
m1 =tmp
Else
m2 = tmp
If m1 <> avg Then
m2=m2-(avg-m1)
ans=ans+1
End If
End If
tmp=0
End If
Next k
Labe13. Caption = Str (ans)
End Sub
-
2、小王利用循环排序思想编写了一个VB程序,用于计算下一轮比赛的出场顺序。从数据库中读取本轮比赛的人员姓名存在数组xm中,成绩存在数组cj中(成绩均不重复)。编程实现将这些成绩进行循环升序排列。要求最低成绩的位置不变,然后依次进行升序排序,即从最小值开始向下尾首相连形成升序数列。程序运行界面如图所示。点击“排序”按钮,完成循环升序排序。
(1)、“排序”按钮的对象名为(2)、请在划线处填入合适代码。Dim xm(1 to 100)As String ,cj(1 to 100)As Integer
Dim flag(1 to 100)As Boolean
Private Sub Form_ Load( )
'从数据库中读取数据,存储到相应数组中,并输出在列表框List1。第i个人,姓名为xm(i),成绩为cj(i)。人员数量存储到变量n中(1≤n≤100)。代码略
End Sub
Private Sub Cmd__Click( )
Dim min As Integer, pmin As Integer
min = cj(1): pmin = 1
For i=2 To n
If cj(i) < min Then min = cj(i): ①
Next i
flag(pmin) = True
pmin= pmin + 1
If pmin=n+1 Then pmin=1
For i=1 To n-2
k = pmin
For j=1 To n
If ② Then k= j
Next j
If k <> pmin Then
t = cj(k): cj(k) = cj(pmin): cj(pmin) = t
C = xm(k): xm(k) = xm(pmin): xm(pmin) = c
End If
flag(pmin) = True
pmin=pmin+1
Next i
'将排序后的人员姓名和成绩输出到列表框List2中,代码略。
End Sub
① ②
(3)、加框处代码出错,请改正。 -
3、循环结构表示程序反复执行某个或某些操作,只有用户干预才能终止循环。
-
4、编写程序,实现以下功能:计算s=1+2/5+3/10+……i/i^2+1 的值,n由键盘输入,计算结果s保留3位小数。
Private Sub Command1_Click()
Dim n as integer, i as integer,s as double
n=val(inputbox("请输入n的值"))
s=0: i=1
do while ①
②
i=i+1
Loop
s=

Print s
End Sub
(1)、实现该程序功能的主体算法结构是。(2)、上面的VB程序,请完善划线处内容,完成上述功能。
① ②(3)、方框处能使变量s的值四舍五入精确到小数点后第3位小数,以下可以实现的语句是( )。A、Int(s * 100) / 100 B、Int(s * 1000) / 1000 C、Int(s * 100 + 0.5) / 100 D、Int((s * 1000 + 0.5)) / 1000 -
5、编写一个VB程序,实现如下功能:输入s位数字构成的数字字符串(第1位数字不为0),移除k(0<k<s)个数字后,在保证原数字相对位置不变的情况下,使剩余数字组成的新数为最小(注:新数第1位不能为0)。例如8个数字构成的数字字符串“71803296”,移除3个数字,得到5位数字构成的最小数是“10296”,具体算法如图a所示。

算法分析:要使得到的5位数字最小,首先需保证能取到5个数字,且首位应尽量小,那么取首位数的范围应保证余下有4个数字,即在前4位中选最小非0的数字。
程序运行时,在文本框Text1中输入一个数字字符串,在文本框Text2中输入要移除的数字个数,单击“运行”按钮CmdRun后,在标签Labell显示得到的最小新数,程序运行界面如图b所示。
(1)、程序运行时,若要在名为Form1的窗体标题上显示“删数”,可以在Form Load事件处理过程中添加语句为(单选,填字母:A . Form1. Text ="删数"\B . Form1. Caption ="删数"\C . Form1. AddItem"删数")(2)、实现上述功能的VB程序代码如下,请在划线处填入合适的代码。Private Sub CmdRun_ Click()
Dim Num As String,New_num As String ' Num为输入的数字字符串
Dim i As Integer, j As Integer, m As Integer,
Dim As Integer, s As Integer, k As Integer
Dim a(30) As String, b(30) As Integer
Num = Text1. Text: s = Len(Num)
k = Val (Text2. Text) 'k为删除数字个数
For i=1 To s
a(i) = Mid(Num,i,1)
Next i
j =1
m=1
n=
For i=m+1 To n '取第一个非零最小数字
If
Then m=i '加框处程序代码有误,请改正Next i
b(j)= m
Do While '取其他最小数字
m=m+1
n=n+1
For i=m+1 To n
If a(i) < a(m) Then m= i
Next i
j =j+1:b(j)=m
Loop
For i= m+1 To s '最后直接取的数字
j =j+1: b(j)=i
Next i
For j=1 To s- k '输出最小数
New_ num =
Next j
Labell. Caption = New_num
End Sub
(3)、加框处程序代码有误,请改正。 -
6、给定两个十进制整数X和Y(X<=Y),求出从X到Y的所有整数中出现“1”的个数。例如:X=6,Y=15时,6,7,8,9,10,11,12,13,14,15,出现了7个“1”。小明编写了一个VB程序,功能如下:在文本框Text1中输入整数X,在文本框Text2中输入整数Y,单击“统计”按钮Command1后,在列表框List1中显示X到Y,并在标签Label3中显示从X到Y的所有整数中出现“1”的个数。程序运行界面如图所示,请在划线处填入合适代码。
(1)、下列程序段中句List1.AddItem中的AddItem是(填字母:A. 属性名/B.事件名/C.方法名/D.对象)(2)、为了实现上述功能,请在划线处填入合适的代码。PrivateSubCommand1_Click()
Dim x AsInteger,y As Integer,t AsInteger
Dim I AsInteger,n As Integer,count AsInteger
x=Val(Text1.Text)
y=Val(Text2.Text)

count=0
For i=x To y
List1.AddItem Str(i)
n=i
Do While n>0
If n Mod 10=1 Then
count=count+1
End If
Loop
Next i
Label3.Caption="X到Y之间1的个数有"++"个"
End Sub
(3)、如果删除加框处代码,并运行程序,在文本框Text1中输入“40”,在文本框Text2中输入“10”,单击“统计”按钮,则标签框Label3显示X到Y之间1的个数有个。 -
7、运行下列程序,正确的结果是
s=0
for i in range (1 5):
s=s+i
print("i=",i,"s=",s)
-
8、下面的程序段运行后的结果为。
s=0
for i in range(1,8,3):
s=s+i
print(s)
-
9、字符串数组a中a(1)到a(6)的原始数据为57,3,24,34, 6,120,为了对该数组进行排序操作,编写了以下VB程序。
i=2
Do While i<=6
For j=6 To i+2 Step -2
If a(j)>a(j-2)Then t=a(j):a(j)=a(j-2):a(j-2)=t
Next j
i=i+2
Loop
则程序运行之后,数组元素a(1)和a(2)的值分别是( )
A、6 3 B、57 120 C、120 57 D、6 34 -
10、小明想用数据移位思想将一段长度为n的序列a(n), 以t位置为分界,把前t-1个数和后n-t+1个数调换前后顺序,但保持每段中数据的相对位置不变。例如一段长度为6的序列1、2、3、4、5、6。t=4时,数组a中元素顺序变成4、5、6、1、2、3。实现上述功能的代码如下,下列①、②处填写正确的是( )
t = Val(Text1. Text): m= 2
For i=t-1 To 1 Step-1
k = a(i)
For j=i To n- 1
①
Next j
②
n=n-1
Next i
A、①a(j+1)=a(j) ②a(j+1)=k B、①a(j)=a(j+1) ②a(j+1)=k C、①a(j+1)=a(j) ②a(j)=k D、①a(j)=a(j+1) ②a(j)=k -
11、下列有关for循环语句说法正确的是( )。A、for 循环变量 in 列表后面必须加冒号 B、For循环所包含的语句是不以缩进为标志的。 C、列表的几种表达方式有直接罗列,先定义后使用和使用range( )函数 D、For循环所包含的语句是以缩进为标志的。
-
12、下面的程序段运行后的结果为( )
s=1
for i in range(1,6,2):
s=s+i
print(s)
A、15 B、10 C、12 D、9 -
13、有如下VB程序段:
s ="cbafedgh"
m=3:c="":n= Len(s)
For i =1 To n
j=(i-1)Mod 3 + 1
If m> n Then Exit For '退出For循环
c=c+ Mid(s,m-j+1,1)
If j Mod 3 =0 Then m =m+3
Next i
If i < n Then c = Mid(s,i,n-i + 1)+c
执行该程序段后,变量c的值是( )
A、Abcdef B、Abcdefgh C、Ghabcdef D、hgabcdef -
14、数组a中存储着某市2010年到 2019 年的GDP数值,编写VB程序,实现找出相邻两年GDP变化最大(即相邻两年GDP差值最大)的年份区间。若有多个符合要求的年份区间,只输出距今最近的年份区间。部分代码如下所示:
Dim i As Integer, imax As Integer
①
For i = 3 To 10
If Abs(a(i) - a(i - 1)) >= ② Then imax = i
Next i
Text1.Text = "GDP变化最大的年份区间是" + Str(imax + 2008) + "-" + Str(imax + 2009)
①、②应填入的代码为( )
A、①imax=1 ②Abs(a(i - 1) - a(i - 2)) B、①imax=1 ②Abs(a(imax) - a(imax - 1)) C、①imax=2 ②Abs(a(i - 1) - a(i - 2)) D、①imax=2 ②Abs(a(imax) - a(imax - 1))2 -
15、有如下 VB 程序段:
For i = 1 To 6
a(i) = Int(Rnd * 20) + 1: b(i) = i
Next i
For i = 1 To 5
For j = i+1 To 6
If a(b(i))>a(b(j)) Then
t = b(j): b(j) = b(i): b(i) = t
End If
Next j
Next i
i = 1 : j = 6: s="" : Key = Val(Text1.Text)
Do While i <= j
m = (i + j) \ 2
If Key = a(b(m)) Then Exit Do
If Key < a(b(m)) Then j = m - 1 Else i = m + 1
s = s + Str(m)
Loop
Text2.Text = s
在文本框Text1中输入10,运行以上程序段后,文本框Text2中显示的内容为 3 5 4,则 a 数组中 a(1)到 a(6)各元素的值可能的是( )
A、11,6,4,13,18,15 B、4,5,8,19,10,17 C、2,11,7,6,3,18 D、9,2,11,21,5,16 -
16、有如下Visual Basic程序段:
Private Sub Command1_ Click ()
Dim a(1 To 10) As Integer, i As Integer, k As Integer
a(1)=1:a(2)=17:a(3)=8:a(4)=9:a(5)=18
a(6)=15:a(7)=20:a(8)=13:a(9)=7:a(10)=11
k=0
For i= 2 To 9
If(a(i)-a(i-1))*(a(i+1)-a(i))< 0 Then k=k+1
Next i
Text1. Text = Str (k)
End Sub
该程序段运行后后,文本框Text1中显示的内容是( )
A、6 B、7 C、8 D、9 -
17、编写VB程序,计算斐波那契数列中第n项(n >= 3)的值,并在标签Label2中输出结果。(斐波那契数列是指这样的数列:1,1,2,3,5,8,13…。即:第1项和第2项的值均为1,从第3项开始,每一项的值是它前面两项之和),主要代码如下:
n = Val(Text1.Text)
f1 = 1: f2 = 1
For k = 3 To n
f = f1 + f2
①
②
Next k
Label2.Caption = "斐波那契数列第" + Str(n) + "项的值为" + Str(f)
代码中①②两处分别应为( )
A、①f2 = f1 ②f1 = f B、①f1 = f2 ②f2 = f C、①f1 = f ②f2 = f1 D、①f2 = f ②f1 = f2 -
18、有如下程序段:
Dim i As Integer, t As Integer, s As Integer
s = 0: t = 0
For i = 0 To 10
If i Mod 5 = 0 then s = s + 1
t = t + i
Next i
Text1.Text = Str(s)
执行该程序段后,变量s和t的值分别是( )
A、3 55 B、3 15 C、2 15 D、2 55 -
19、有如下VB程序段:
s = Text1.Text
For i=1 To Len(s)
ch = Mid(s,i,1)
If ch>="A" And ch<="Z" Then t=t+ch
If ch>="a" And ch<="z" Then
ch = Chr(Asc(ch)-32)
t=t+ch
ElseIf ch >= "0"And ch <= "9" Then
t=ch+t
End If
Next i
Text2.Text = t
已知'A'的ASCI码为65,'a'的ASCI码为97。程序运行后,在文本框Text1中输人“Text2.text=”Abc1234“”(外括号不包括),则在Text2中显示的内容是( )
A、TEXT2.TEXTABC1234 B、43212TexttextABC C、43212TEXTTEXTABC D、TEXTTEXTABC43212 -
20、下面的程序运行后的输出结果为( )
n=1
for i in range(0,5):
n=n*i
print(n)
A、120 B、24 C、0 D、25