学进去-教育应平等而普惠
排序:
414道相关试题
以下IP地址合法的是(  )
A.192.168.1.255B.172.16.0.1
C.127.0.0.1D.255.255.255.0
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
小明用 VB 模拟实现了一个打地鼠游戏的计分程序。游戏规则如下:总共有 10 个地鼠洞,每秒地鼠选择一个洞探出脑袋,如果当前的锤子在该洞口,则打中地鼠,否则没有打中。游戏时间总共t 秒(t<=10, Text1 中输入),锤子的起始位置在 b(1)(Text2 中输入)。现已知每个时刻地鼠探脑袋的位置,根据锤子移动的路线,计算得出最多的得分,并输出到 Lalbel1。
锤子移动规则:锤子每秒必须往左或往右移动一步(不可在当前位置停留),如果锤子已经在最左边了,只能往右移动;反之,只能往左移动。
计分方式:如果打中一个地鼠,计 1 分;如果连续打中地鼠,分数翻倍,即连续打中两个,分数为 1+2;连续打中三个,分数为 1+2+4;连续打中四个,分数为 1+2+4+8……
算法思路:
①随机产生在第i 秒时,地鼠探出脑袋的洞口为 j,若每个时刻地鼠探脑袋的洞口如下图所示,以 10 个洞口为横坐标n,游戏时间 t为纵坐标,建立一个矩阵a。当前时间出现地鼠的洞口标记为 1,其余默认为 0。

②模拟第 i 秒敲击洞口的位置:
1)若输入游戏过程如下图所示,从 5 号洞口出发 b(1)=5,当时间为 i=1 时,可到达的洞口有 2 种:j=2 时 b(2)=6,j=1 时 b(1)=4,即得矩阵 a 的坐标位置 i 和 b(j);

2)同理当 i=2 时,可到达的洞口有 4 种:j=4 时 b(4)=7,j=3 时 b(3)=5,j=2 时 b(2)=5,j=1 时b(1)=3。i=1 敲击洞口位置为 6 或 4;i=2 敲击洞口位置 6→7,6→5 或 4→5,4→3。
3)将 t 秒内可经过的 2^t 种不同路径敲击的矩阵位置的值存放到数组 p 中,如下图所示得到其中某一条路径p(j)=0101100010,根据 p(j)计算得分,找出最值 max 并输出。

(1)如果游戏时间为 10 秒,每秒地鼠都选择在第 2 个洞口,当锤子的起始位置在第 6 个洞口时,最多能得     分。
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Const n = 10
Dim a(1 To n * n) As Integer,b(1 To 2 ^ n) As Integer Dim p(1 To 2 ^ n) As String,s1 As String
Dim i As Integer,j As Integer,k As Integer,max As Integer Dim t As Integer,s As Integer,f As Integer
Randomize
t = Val(Text1.Text)
For i = 1 To t     '第 i 秒时,地鼠探出脑袋的洞口为 j
j = Int(Rnd * n + 1)
          
List1.AddItem Str(i) & Str(j)
Next i 
s1 = ""
For i = 1 To t * n
s1 = s1 + Str(a(i))

If i Mod n = 0 Then List2.AddItem s1:s1 = ""

End If

Next i
b(1) = Val(Text2.Text)
For i = 1 To n     '计算锤子在 a 矩阵移动的路径,并存放在 p 数组
k = 1 'k 为正则向右移动锤子,k 为负向左移动锤子
For j = 2 ^ i To 1 Step -1
b(j) = b((j + 1)\2) + k
If b(j) < 1 Or b(j) > n Then b(j) = b(j) - 2 * k
p(j) = p((j + 1) \ 2) + CStr(         ) ’ CStr 功能类似 Str
k = -k
Next j
Next i
max = 0
For i = 1 To 2 ^ n

f = 0:s = 0:j = 1

Do While j <= Len(p(i))

If Val(Mid(p(i),j,1)) > 0 Then

f = f * 2 + Val(Mid(p(i),j,1))

Else

s = s + f:f = 0 End If

j = j + 1 Loop

If f > 0 Then          If max < s Then max = s
Next i
Label1.Caption = "最多能得" + Str(max) + "分" End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
For i=1 To 6
a(i)=Int(Rnd*10)+1
Next i
Fori=1 To 5
If i Mod 2=1 And a(i>a(i+1)Then
t=a(i):a(i)=a(i+1):a(i+1)=t
a(i)=a(i)+1
End if
Next i
执行程序后,数据a中的各个元素可能是(  )
A.11 11 8 9 4 8B.2 10 2 2 4 3
C.10 10 2 2 4 4D.6 3 7 4 8 5
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
有如下程序段:
x=1:y=2
p=x=y
p的数据类型、该程序段运行后值分别为(   )
A.Integer  1B.Long  2C.Boolean  FalseD.Boolean  True
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
某算法的VB程序段如下:

key = Int (Rnd *5)*2+ 11

i = 1:j = 8:c = 0

Do While i <= j

m = (i+j+1) \ 2

If a(m) >= key Then i = m+1 EIse j = m-1

c = c+1

Loop

数组元素a(1)到a(8)的值依次为“23,21,19,18,16,15,14,11”。若该程序段执行后,下列说法错误的是(  )
A.i 的值为j+1B.i 的值可能是9C.j 的值可能是5D.c 的值一定是3
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
有如下VB程序段:
Dim d(1 to 5)as integer,i as integer
Dim flag as Boolean,j as integer

‘给数组元素d(1)至d(5)赋初值为1,代码略

Randomize

For i=1 to 5

J = l:flag = True
d(i) = int(Rnd*9)
Do while j< =i-1 and flag = True
d(i) = int(Rnd*5+1)
If d(i) = d(j) then i=i-l:flag = False
j = j+1
Loop

Next i

运行程序后,数组中的数据值可能是(   )
A.1 3 4 5 6B.3 5 4 1 1C.8 3 1 2 5D.1 2 6 2 1
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
在一个整数序列中找第 k 大数,若有相同的整数,则位置靠前的整数的名次靠前。如有整数分别为10,13,12,13,15,则第1大的数为15,第2大的数为13,位于第2位置,第3大的数还是13,位于第4个位置,第4大数是12,第5大的数是10。
编写一个VB程序,实现如下功能:程序启动时产生n个1~20之间的随机整数,在文本框Text2中输入整数k(k≤n),单击“查找”按钮Command1后,在标签Label1上显示第k大的数及位置。程序运行界面如图所示。

(1)下列对象不具有Caption属性的是          (单选,填字母:
A.Command1 /B.Form1 /C.Text1 /D.Label1)
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
(3)程序代码中的加框处代码有误,请改正。
Const n = 10
Dim a(1 To n) As Integer
Private Sub Form_Load()
'本过程产生n个1~20之间的随机整数存数组a中,并在文本框Text1中显示,代码略
End Sub
Private Sub Command1_Click()
Dim i As Integer, sum As Integer, key As Integer,c As Integer,k As Integer
Dim b(1 To 20) As Integer
        
For i = 1 To n
b(a(i)) = b(a(i)) + 1
Next i
i = 20
sum = 0
Do While i >= 1 And sum < k
         
i = i – 1
Loop
        
Label3.Caption = "第" + Str(k) + "大的数是" + Str(key)
c = 0
For i = 1 To n
If a(i) = key Then c = c + 1
If c = Then Exit For
Next i
Label3.Caption = Label3.Caption + ",在第" + Str(i) + "位置"
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
现有如下问题,在一个 6×6 的跳棋棋盘上放置 6 个棋子,使得每行、每列,每条斜线上至多有一个棋子,请问有几种不同的摆法。为了方便处理,可将棋盘模拟成 6*6 的正方形矩阵,如图1所示。该矩阵中从左往右列号依次 1,2,3,4,5,6,从上往下行号依次为 1,2,3,4,5,6。若在位置(1,2)(指第一行第二列)中放置了一个旗子,则第一行,第二列以及该位置所在的左斜线与右斜线均无法放置其他棋子。
解决该问题的算法思想如下:

图1
①从第一行开始逐行放置棋子。
②每行从左到右逐列尝试放置棋子,放置之前与已放置的棋子作比对。
③若无冲突,放置该行棋子并跳转至下一行。
④若有冲突,则在本行中向右继续寻找放置棋子的位置,若找不到则返回上一行,重新寻找棋子放置位置。
⑤最后一行放置结束,输出一种方案并继续寻找下一方案。用 VB 程序实现该算法,程序界面设计如图2所示。

图2
(1)若第一行的棋子放置在第三列,则第二行不能放置棋子的列的数量为________。(填个数)
(2)实现上述功能的 VB 程序如下,请在划线处填入合适的代码。
Const n = 6
Dim a(1 To n) As Integer
Dim m As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer
m = 0
For i = 1 To n
a(i) = 0    'a(i)存储第 i 行放置棋子的列号
Next i
For i = 1 To n + 1
If i = n + 1 Then       '所有行棋子放置完毕,输出一种方案
m = m + 1
s = ""
For j = 1 To n
s = s + Str(j) + ":" + Str(a(j)) + "|"
Next j
List1.AddItem s
i = i - 2
Else       '寻找下一行棋子放置位置
j = a(i) + 1
Do While j <= n And check(i, j) = False
___________
Loop
If j <= n Then
a(i) = j
Else
a(i) = 0
_____________
If i < 0 Then Exit For
End If
End If Next i
Label1.Caption = "共有" + Str(m) + "种方案" End Sub
'判断当前放置的棋子与已放置有无冲突
Function check(i As Integer, j As Integer) As Boolean
check = True
For k = 1 To i - 1
If a(k) = j Or j + i = a(k) + k Or __________ Then
check = False
End If
Next k
End Function
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
将某字符串按“V ”的形状进行变换,其变换方法描述如下:
(1)将字符串中的字母转换为大写字母后按升序进行排序;
(2)根据给定的行数,将字符串从上往下、从左到右进行“V ”字形排列;
(3)从左往右逐行读取字符串并输出;
例如:输入字符串为:“NoThingIsImpossible”,
经过排序得到字符串:“BEGHIIIILMNNOOPSSST”,行数输入为 3 时,排列如下:

经过变换后得到新字符串为:“BILOSEHIIMNOSSGINPT”。
编写 VB 程序,实现如下功能:在文本框 Text1 中输入行数,在文本框 Text2 中输入字符串(限定字母),单击“变换”按钮 Command1,在标签 Label3 中输出变换结果。程序运行效果如图所示。

(1)若小明在文本框 Text1 中输入 3,在文本框 Text2 中输入的的字符串为“NOTHING”,则在标签框 Label3 中输出的结果。________
(2)实现该功能的 VB 程序如下,请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim n As Integer, i As Integer, j As Integer
Dim s As String, result As String
Dim a(1 To 26) As Integer, res(1 To 100) As String
Dim flag As Integer'变量 flag 用于上下换方向
n = Val(Text1.Text)
s = conv(Text2.Text)
For i = 1 To Len(s)
c = Mid(s, i, 1)
_____①   
Next i
s = ""
For i = 1 To 26
For j = 1 To a(i)

s = s + Chr(i + 64)

Next j

Next i
j = 1: flag = -1
For i = 1 To Len(s)
c = Mid(s, i, 1)
res(j) = res(j) + c
If_____②   Then flag = -flag
End If
_____③   
Next i
For i = 1 To n
result = result + res(i)
Next i
Label3.Caption = result
End Sub
'小写字母转大写
Function conv(word As String) As String
Dim i As Integer, c As String, s As String
For i = 1 To Len(word)

c = Mid(word, i, 1)

If c >= "a" And c <= "z" Then c = Chr(Asc(c) - 32)

s = s + c

Next i
conv = s
End Function
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
某对分查找算法的VB程序段如下:







Loop

数组元素a(1)到a(10)的值依次为“2,3,5,8,9,10,13,17,19,20”。在文本框Text l中输人待查找的数,执行该程序段,则文本框Text 2中显示的内容可能的是(   )
A.9 3B.9 3 5C.9 17 19 13D.9 3 5 8 19
类型:选择题
难度系数:困难0.15
收藏
纠错
详情
首页
上一页
下一页
尾页