圆周率π值的计算方法有多种,其中一种近似值计算公式如下:π2/6=1+1/22+1/32+…+1/n2;对于n的不同取值,得到的π值精度不同。 如:
当n=100000时,计算出π=3.14158310432646,
当n=1000000时,计算出π=3.14159169886051。
以下程序是利用上述公式求n=10000000时π近似值的主要程序片段,请你补全代码。
Dim s As Double
Dim pi As Double
s = 0
For i = 1 To 10000000 ‘求公式右边的值s
s = s + 1 / (i * i)
Next i
Pi = Sqr
Print "π="; pi
i = 1;
s = 0;
while i < 7:
s = s + i;
i = i + 1;
if i == 5:
break;
print("1-7的累加值为:",s);
程序运行后输出的结果为:( )
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)各元素的值可能的是( )
s=0
For i=1 To 10 Step 3
s=s+1
Next i
Label1.Caption=Str(s)
该程序段运行后,标签Label1上显示的内容是( )
程序运行界面如图所示。
在文本框Text1中任意输入一个不完全相同的四位正整数,在文本框Text2中输出掉进黑洞的步数。实现上述功能的VB代码如下,但加框处代码有误,请改正。
Private Sub Command1_Click( )
Dim a(1 To 4)As Integer
Dim x As Integer,y As Integer,c As Integer,t As Integer
x=Val(Text1.Text)
c=0
Do While x<>6174
For i=1 To 4
a(i)=x Mod 10
‘①
Next i
For i=1 To 3
For j=i+1 To 4
If Then ‘②
t=a(i):a(i)=a(j):a(j)=t
End If
Next j
Next i
x=a(1)*1000+a(2)*100+a(3)*10+a(4)
y=a(1)+a(2)*10+a(3)*100+a(4)*1000
x=x-y
c=c+1
Loop
Text2.Text=Str(c)
End Sub
以上程序段运行时,为了实现上述功能,加框处代码应改正为:①;②。
Dim a(1 To 6) As String i = 6
Text1.Text = ""
Do While i > 1
k = i
For j = 1 To i - 1
If a(k) < a(j) Then k = j
Next j
tmp = a(k): a(k) = a(i): a(i) = tmp
Text1.Text = a(i)
i = i - 1
Loop
其中数据元素 a(1)到a(6)的值依次为“12”、“34”、“8”、“9”、“77”、“23”,执行该程序段后,文本框Text1中显示的内容为( )
每个方块用一个代表其周围墙的数字之和(0≤p≤15)表示:1 表示西墙,2 表示北墙,4 表示东墙,8 表示南墙。城堡的内墙被计算两次,方块(1,1)的南墙同时也是方块(2,1)的北墙。城堡至少有两个房间。例如,图a的每个方块对应数字如图b所示。
图a
图b
程序运行界面如图c所示,现已知城堡地形对应的数字矩阵,要求出城堡一共有多少房间,最大 的房间有多大。小金利用深度优先搜索算法解决当 前问题,具体算法如下:
图c
在城堡中按行搜索,找到第一个未被搜索过方块, 以它为起点,分别按左、上、右、下的顺序向其四个方向试探,若发现一个方向上的方块是未被搜索过且可以通往的(无墙),则以这个方块为新起点,再重复上述试探。若当前方块四个方向上均无路可走,则返回上一个方块进行其他方向上的搜索,直至返回开始当前搜索的第一个方块且这个方块四个方向上也无路可走是,则本轮搜索结束。
Const m = 4 Const n = 7
Dim a(1 To m * n * 4) As Integer
Dim f(1 To m * n) As Boolean
Dim c(1 To m * n) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, x As Integer, y As Integer
Dim area As Integer, max As Integer, cnt As Integer
'城堡地形对应的数字矩阵,存入 c 数组中,并显示在列表框 List1 中,f 数组初值为 false, 代码略
For i = 1 To m * n
x = c(i)
For j = 1 To 4
a((i - 1) * 4 + j) = x Mod 2
x = x \ 2
Next j
Next i
max = 0
For i = 1 To m
For j = 1 To n
IfThen
cnt = cnt + 1
area = Search(i, j)
If max < area Then
max = area
End If
Next j
Next i
Label1.Caption = "城堡一共有" + Str(cnt) + "个房间,最大的房间占" + Str(max) + "块方格."
End Sub
'从方块(x, y)开始搜索,并返回其所在房间所占方块数.
Function Search(ByVal x As Integer, ByVal y As Integer) As Integer
Dim i As Integer, j As Integer, sum As Integer, r As Integer, c As Integer
Dim pre(1 To m * n) As Integer '记录当前房间搜索的路径
Dim row(1 To 4) As Integer, col(1 To 4) As Integer
row(1) = 0: row(2) = -1: row(3) = 0: row(4) = 1
col(1) = -1: col(2) = 0: col(3) = 1: col(4) = 0
sum = 1: j = 1: pre(1) = x * 10 + y
f((x - 1) * n + y) = True
Do While True
For i = 1 To 4
r = x + row(i): c = y + col(i)
If r >= 1 And r <= m And c >= 1 And c <= n Then
If f((r - 1) * n + c) = False AndThen
sum = sum + 1
x = r: y = c
f((x - 1) * n + y) = True
j = j + 1
pre(j) = x * 10 + y
Exit For
End If
End If
Next i
If i > 4 Then
If j = 0 Then
Exit Do
x = pre(j) \ 10: y = pre(j) Mod 10
End If
Loop
Search = sum
End Function
Private Sub Command1_Click( )
Dims As String,ch As String
Dim i As Integer,t As Integer
Dim ans As Long,px As Long
s=Text1.Text
ans=0:t=0:px= 1
For i=1 To Len(s)
ch=Mid(s,i,1)
IfThen
t=t*10+Val(ch)
Else
px=px*t
If ch= "_" Then
px=-1
End If
t=0
End If
Next i
Label 1.Caption=Str(ans+)
End Sub
编写程序,实现上述功能:在文本框Text1中输入偶数n,单击“生成”按钮Command1,在列表框List1中显示初始矩阵,在文本框Text2中输入偶数m(2≤m≤ n),单击“处理”按钮Command2,在列表框List2显示处理结果。程序运行界面如图c所示。
请回答下列问题:
Dim n As Integer
Dim a(1 To 100 * 100) As String
Private Sub Command1_Click()
Dim i As Integer
n = Val(Text1.Text)
If n <= 100 And n >= 2 And n Mod 2 = 0 Then
For i = 1 To n * n
a(i) = Chr() ‘字符"0"的ASCII码值为48
'将初始矩阵显示列表框List1中,代码略
Next i
Else
List1.AddItem "输入有误"
End If
End Sub
Private Sub Command2_Click()
Dim b(1 To 100 * 100) As String, s As String
Dim m As Integer, y As Integer, i As Integer, R As Integer, C As Integer
m = Val(Text2.Text)
If m >= 2 And m <= n And m Mod 2 = 0 Then
y =
s = ""
For i = 1 To n * n
R = (i - 1) \ n + 1: C = (i - 1) Mod n + 1
If R <= y Or R > n - y Or C <= y Or C > n - y Then
b(i) = a(i)
Else
b(i) = ‘⑶
End If
s = s + b(i)
If i Mod n = 0 Then
List2.AddItem s
s = ""
End If
Next i
Else
List2.AddItem "输入有误"
End If
End Sub
假设银行的年存储利率为3%,如果现在存储10000元钱,问多少年后连本带利超过12000元。设定:连本带利=本金*(1+利率)∧年数
假设n年后连本带息超过12000,根据题意得出数学关系式:10000*(1+3%)∧n>12000,求最小的n。
(参考程序)
Dim s as single
Dim r as single
Dim n as integer
s=10000
r=0.03
n=0
Do while
n=n+1
s=s*(1+r)
Loop
Print n;“年后”:“连本带利超过”;s
根据上述回答下列问题:
编写一个VB程序,实现如下功能:程序启动时产生n个1~20之间的随机整数,在文本框
Text2中输人整数k(k≤n),单击“查找"按钮Command1后,在标签Label1上显示第k大的数及位置。程序运行界面如图所示。
Const n= 10
Dima(1 To n) As Integer
Private Sub Form_ Load( )
'本过程产生n个1~20之间的随机整数存数组a中,并在文本框Text1中显示,代码略
End Sub
Private Sub Command1_Click()
Dimi 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
Do While i> 1 And b(i) < 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
1 s=input("请输入年利率:")
2 rate=float(s[:-1])*0.01
3 money=100000
4 year=0
5 while money<=200000:
6 money=round( ),2)
7 year=year+1
8 print(year,"年后收益超过本金。”)
s = "Happy new year↑”
flag=False:m=0
For i=1 To Len(s)
c= Mid(s,i,1)
If c >=“a" And c <= "z” Then
If Not flag Then
m=m+1
flag=True
End If
Else
flag = False
End If
Next i
注:福彩“双色球”玩法;在1-33个红色球影申随机生成6个号码,在1~16个蓝色球号码中随机生成个号码,共计6+1个号码开奖。
程序运行界面如图所示。
Dim red(1 To 600) As Integer '用于存储100*6红色球信息
Dim blue(1 To 100) As Integer '用于存储100*1蓝色球信息
Private Sub Form_Load()
'本过程用于从数据库data. accdb中读取最近100期双色球开奖信息
'将100*6个红色球开奖信息依次存储在数组red()中
'将100*1个蓝色球开奖信息依次存储在数组blue()中
'将最近100期开奖信息格式化后显示在列表框List1中
'本过程代码略
End Sub
Private Sub Command1_Click()
Dim min As Integer
Dim s As string
Dim f(1 To 33)As Integer
'——以下开始处理蓝色球部分——
For b= 1 To 100
f(blue(b))= f(blue(b))+1
Next b
min= 100
For i= 1 To 16
If f(i)< min Then min f(i)
Next i
For i=1 To 16
If f(i)= min then s=
f(i)=0
Next i
List2. Additem"蓝色球重点买人:"十s
'——以下开始处理红色球部分——
For r=1 To 600
Next r
f(1)-f(11): |
6 |
8 |
20 |
25 |
16 |
21 |
14 |
20 |
24 |
28 |
26 |
f(12)-f(22): |
1 |
30 |
8 |
1 |
10 |
10 |
33 |
28 |
32 |
20 |
6 |
f(23)-f(33): |
4 |
34 |
29 |
18 |
25 |
30 |
4 |
13 |
30 |
20 |
6 |
结合加虚线框处代码的算法,输出的内容是:
红色球重点买入:(按输出顺序写出6个红球号码)。
警察抓小偷,有四个嫌疑人甲乙丙丁,其中一人是小偷。甲说“不是我”,乙说“是丙”,丙说“是丁”,丁说“丙在冤枉人”。他们中只有一人说了假话,编程判断谁是小偷。(注:在Python运算中,True的值为1,False的值为0)
persons=[‘甲’,‘乙’,‘丙’, ‘丁’] for thief in persons: flag =(thief!=‘甲’)+(thief==‘丙’)+(thief ==‘丁’)+(thief!=‘丁’) if flag == 3: print(thief) |
运行结果是:
s = "ABCDEF"
For i = 1 To Len(s)
a = Int(Rnd * 3 + 1)
b = Mid(s, a Mod 6 + 1, 1)
ch = ch + Chr(Asc(b) + 32)
Next i
执行该程序后,变量ch的值可能是( )
数值 |
[1,20] |
[21,40] |
[41,60] |
[61,80] |
[81,100] |
分组 |
一组 |
二组 |
三组 |
四组 |
五组 |
最后按照对照表统计出各个分组的人数占总人数的比例。程序运行界面如下:
import random
a=[ ] #存放随机生成的整数
b=[0]*5
c=“一组二组三组四组五组”
for i in range(150) :
① #生成[1, 100]的随机整数
a. append (m)
for i in range (len(a)):
②
for j in range (5) :
con=round (b[j]/len (a)*100, 2)
print( ③ + “比例是”+str(con)+“%”)
① ② ③
import random
dict={"北京市":"北京","上海市":"上海","河北省":"石家庄",… #dict中存储中国34个省级行政区及其省会城市
sf=list( ⑴ )
sh=list( ⑵ )
sj=random.randint(0,33) #生成[0,33]之间的整数
zd=sh[sj]
del sh[sj] #删除列表 sh 中的第 sj项
xx=random.sample(sh,3)+[zd] #随机产生列表 sh 中的 3 项,与 zd 连接成新列表xx #对列表xx 中的内容进行随机排序
random.shuffle(xx)
print("%s 的省会城市是? "%( ⑶ ))
for i in range(4):
print(‘%s.%s’%(‘ABCD’ [i],xx[i]))
print(‘本题参考答案为: %s’%(‘ABCD’[ ⑷ ]))
上述程序段中方框处可选语句为:
①dict.values()
②dict.keys()
③sh[sj]
④sf[sj]
⑤xx.index(zd)
⑥xx[zd]
则( 1 )( 2 )( 3 )( 4 )处语句依次可为( )
x=0
for i in range(1,11,2):
x+=i
print(x)
a = [1] * 6
b = [96,88,84,91,99,80]
for i in range(6):
for j in range(i+1,6):
if b[j] > b[i]:
a[i] += 1
else:
a[j] += 1
该程序段运行后,列表 a 的值为( )