请根据算法将下列程序补充完整。
Function prime(a As Integer) As Boolean
Dim j As Integer
prime = True
j = 2
Do While prime And j <= a \ 2
If a Mod j = 0 Then
prime = False
Exit Do
End If
Loop
End Function
Private Sub Command1_Click( )
Dim i As Integer, a As Integer, b As Integer
Dim count As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)
For i = a To b
If = True Then
List1.AddItem Str(i)
count = count + 1
End If
Next i
Label1.Caption = "素数共有" + Str(count) + "个!"
End Sub
请在下列程序代码的基础上按照要求设计该程序, 完善程序中的划线部分。
Dim n As Integer, a1 As Integer, a2 As Integer, a3 As Integer
Function f(x) As Boolean
f = True
For i = 2 To Sqr(x)
If x Mod i = 0 Then
Next i
End Function
Private Sub Command1 Click()
n =
For a1 = 2 To n
For a2 = a1 To n
For a3 = a2 To n
If And f(a1) And f(a2) And f(a3) Then
List1.AddItem (Str(a1) + " " + Str(a2) + " " + Str(a3))
End If
Next a3
Next a2
Next a1
End Sub
Private Sub Command1_Click()
Dim x As Integer,Y As Long,st
As String
For x=100 To 1 000
y=x^2
st=x&y ‘将数字x和y合并成不含空格的数字串st
If Then ‘①
List1. AddItem Str(x)&" "& Str(y)&" "&st
EndIf
Next x
End Sub
Function judge(s As String)As Boolean
Dim a(1 To 100)As String,i As Integer,j As Integer
judge=False
For i=1 To Len(s)
a(i)=Mid(s,i,1)
Next i
For i=1 To Len(s)-1
For j=i+1 To Len(s)
If Then Exit Function ‘②
Next j
Next i
judge=True
End Function
Const n = 10
Dim a(1 To n) As Integer ‘保存原始数据
Dim b(1 To n) As Boolean ‘数组b用来标记相应的位置有没有找过
Private Sub Command1_Click()
Dim i As Integer, sum As Integer, total As Integer
sum = 0: total = 1 ‘total表示第几组
i = 1
List2.AddItem“第” + Str (total) + “组”
Do While sum < n
Do While Not b(i)
List2.AddItem a(i)
b(i) = True
sum = sum + 1
Loop
If sum < n Then
List2.AddItem “第”+ Str(total)+“组”
i = 1
Do While b(i) ‘该循环用来查找下一组的开始位置
i = i+ 1
Loop
End If
Loop
End Sub
Private Sub Form_Load()
Dim i As Integer
Randomize
For i = 1 To n ‘产生n个不一样的整数,范围为[1,n]
a(i) = Int(Rnd * n)+1
Do While
a(i)= Int(Rnd * n) + 1
Loop
Next i
For i = 1 To n
List1.AddItem a(i)
b(i) = False
Next i
End Sub
Function f(x As Integer, y As Integer) As Boolean
‘该函数的功能:判断x和数组a中前y个数有没有重复
Dim j As Integer
f = False
For j = 1 To y
If a(j) = x Then f = True:Exit For
Next j
End Function
Private Sub Command1_Click()
Dim a As Integer, s As String
Dim n As Integer, t As Integer, v As Integer
n=Val(Text1.Text)
t=0
s=""
Do While n>0
a=n Mod 2
n=n\2
t=
s=Str(a)+s
Loop
v=t Mod 2
Text2.Text=s
Label3.Caption="校验位值:"+
End Sub
删数的算法如下:
⑴如果k>0,则从前往后检测相邻字符,否则,转⑶;
⑵①若所有相邻字符都已非降序,则将串尾k个字符删去,k值置0,转⑴;
②若相邻两数存在逆序(即前一个数>后一个数),则将前一个数删除,k值变化,然后回到⑴;
⑶去掉串首的0,输出结果。按照上述算法思路,编写了VB程序,功能如下:在文本框Text1中输入数字串,在文本框Text2中输入删数的个数,单击“处理”按钮Command1,在文本框Text3中显示最小的整数。程序运行界面如图所示。
delete 函数说明:delete(st,x,y)为自定义函数,功能为在字符串st中删除x 位置开始的y 长度的子串。
Private Sub Command1_Click()
Dim s As String, k As Integer, i As Integer, j As Integer, n As Integer
s = Text1.Text
k = Val(Text2.Text)
n = Len(s)
Do While k > 0
i = 1
Do While i < n And
i = i + 1
Loop
If i = n Then
n = n - k
k = 0
Else
s = delete(s, i, 1)
n = n - 1
End If
Loop
i = 1
Do While n > 1 And Mid(s, 1, 1) = "0"
s = delete(s, 1, 1)
I = i + 1
n = n - 1
Loop
Text3.Text = s
End Sub
Function delete(st As String, x As Integer, y As Integer) As String
'mid 函数第3个参数省略,则截取从开始位置向右到字符串结尾的所有字符
delete = Mid(st, 1, x - 1) + Mid(st, x + y)
End Function
假如我们用数组表示上述大根堆:
a(1) |
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
a(7) |
a(8) |
a(9) |
9 |
6 |
8 |
5 |
3 |
4 |
7 |
2 |
1 |
现有一算法把一个无序数组改造成大根堆。例如:我们在上图的大根堆中再增加一个值为8的新元素,如下图所示。
数组存储为:
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
a(7) |
a(8) |
a(9) |
a(10) |
6 |
8 |
5 |
3 |
4 |
7 |
2 |
1 |
8 |
具体操作方法如下:
第一步:因为a(10)大于它的双亲结点a(5),故需交换a(10)和a(5)的值;
数组存储为:
第二步:因为a(5)大于它的双亲结点a(2),故需交换a(5)和a(2)(t)值;
数组存储为:
a(1) |
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
a(7) |
a(8) |
a(9) |
a(10) |
9 |
8 |
8 |
5 |
6 |
4 |
7 |
2 |
1 |
3 |
第3步:因为a(2)不大于它的双亲结点a(1),故无需做交换操作。此时新元素已经放到了正确的位置,新的大根堆构造完成,上移行动结束。
实现上述功能的程序代码如下请在划线处填入合适的代码。
Dim a(1 To 100) As Integer
‘该函数功能为实现数据的对齐输出
Function pout(x As Integer, y As Integer) As String
代码略
End Function
Private Sub Command1_Click()
Dim tmp As Integer, Dim m As Integer
Dim n As Integer, Dim s As String
n = Val(Text1.Text)
For i=1 To n
a(i) = Int(Rnd()*99)+ 1
Next i
For i= 2 To n
p=i
f=p\2
Do While ①
tmp = a(p): a(p)= a(f): a(f) = tmp
p=f
f=p\2
If f= 0 Then Exit Do
Loop
Next i
k= n
Do While k >=1
m=m+1
②
Loop
k= 1
For i=0 To m- 1
s=""
For j= 1 To ③
If k> n Then Exit For
s=s+ pout(a(k), (2^(m-1)-2^i)/2^i)
k=k+ 1
Next j
List1.AddItem s
Next i
① ② ③
①相同的数字连写,所表示的数等于这些数字相加得到的数,如Ⅲ=3;
②小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如Ⅷ=8、XⅡ=12;
③小的数字(限于Ⅰ、X和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如Ⅳ=4、Ⅸ=9;
王老师设计了一个将罗马数字转换成阿拉伯数字的程序,实现该功能的程序代码如下:
Private Sub Command1_Click()
Dim a(1 To 10)As String
Dim b(0 To 10)As Integer
Dim x As String,c As Integer,j As Integer
x=Text 1.Text
j=Len(x)
b(0)= 0
c=0
For i=1 To j
a(i)= Mid(x,j-i+1,1)
b(i)=zh(a(i))
If ① Then
c=c-b(i)
Else
c=c+b(i)
End If
Next i
Label2.Caption="结果:"+Str(c)
End Sub
Function zh(xAs String)As Integer
s="IVXLCDM"
zh=1
For i=1 To 7
If Then
Exit For
Elself ② Then
zh=zh*5
Else
zh=zh*2
End If
Next i
End Function
①②
Private Sub Command1_Click( )
Dim c1 As String, c2 As String, s1 As String, s2 As String
s1 = Text1.Text: s2 = Text2.Text
i = 1: j = 1
Do While i <= Len(s1) And j <= Len(s2)
c1 = Mid(s1, i, 1): c2 = Mid(s2, j, 1)
If Then
i = i + 1: j = j + 1
Else
Exit Do 'Exit Do表示退出循环
End If
Loop
If i > Len(s1) And j > Len(s2) Then T3.Text = "相同" Else T3.Text = "不相同"
End Sub
Function toLowerCase(x As String) As String '该函数把大写字母转成小写
If x >= "A" And x <= "Z" Then
toLowerCase = Chr(Asc(x) + 32)
Else
End If
End Function
划线处的代码从以下代码中选择,每条划线一句代码:
①toLowerCase = Chr(Asc(x) - 32) ②toLowerCase = x
③toLowerCase(c1) = toLowerCase(c2) ④c1 = c2
选择代码组合正确的是
Private Sub Command1_Click()
Dim x As Integer
x = Val(Text1.Text)
Label1. Caption = Str(x)+ prime(x, 2)
End Sub
Function prime(n As Integer, m As Integer) As String
If n = m Then
prime = "是素数。"
ElseIf n < 2 Or n Mod m = 0 Then
prime = "不是素数。"
Else
prime = prime(n, m +1)
End If
End Function
在文本框Text1中输入的值是123,并执行程序后,自定义函数prime被执行的次数是( )
import math
a=int(input("a:"))
b-int(input("b:"))
c=int(input("c:"))
if
x1=((-1)*+s<+(:,),)))/(2*a)
x2=((-1)*b-<+(f(),))/(2*a)
print("x1=",x1,"x2=",x2)
else:
print("该方程式无解!")
A.a=int(input("a:"))
B.x1=((-1)*b+sqrt(f(a,b,c)))/(2*a)
C.x2=((-1)*b-sprt(f(a,b,c)))/(2*a)
D.print("x1=",x1,"x2=",x2)
应如何修改:。
import random
def judge(player,computer):
if player == computer:
print("平局")
elif ①
print("玩家赢")
else:
print("电脑赢")
dic={0:"石头",1:"剪刀",2:"布"}
player = intinput("请输入序号(0.石头1. 剪刀2.布):"))
if player != 0 and player != 1 and player != 2:
print("请重新输入!")
else:
②
print("玩家出:",dic[player])
print("电脑出:",dic[computer)
③
请回答下列问题:
① ② ③
字段名 |
数据类型 |
备注 |
|
||
|
||
|
请完善横线处的代码,实现将resut数据表中字段key值为txt(网页表单输入的关键字字符)的记录保存到列表变量rec中,并统计数量保存到sum中。
from flask import Flask, render_template
import sqlite3
#打开Flask网页模板和打开数据库并建立conn对象等代码略
app= Flask(_ name_ )
app.config['SECRET_KEY']='xxx_Sss_ 1276589'
bootstrap = Bootstrap(app)
class NameForm(FlaskForm):
txt = StringField('查询:', validators=[DataRequired( )])
submit = SubmitField('搜索')
@app.route(/)
@app.route('/cx', methods=['GET', 'POST'])
def index_cx( ):
rec=[ ]
sum= 0
cu = conn.cursor( ) #建立游标对象
rec = #使用fetchall( )函数将结果保存到列表rec中 sum = #统计列表变量rec的数量 conn.commit( ) #执行数据库语句 ru.close#关闭游标对象 conn.close |
return render_ template('t4.html', form-myform, txt=sum)
if _name_ ='_main_':
app.run( )
Private Sub Command1_Click( )
Dim a As Integer, b As Integer, c As Integer
A=Val(Text1.Text): b=Val(Text2.Text): c=Val(Text3.Text)
Label2.Caption=Str(fx(a, b, c))
End Sub
Function fx(x As Integer, y As Integer, z As Integer) As Integer
If x<y Then fx=z
If x>y Then fx=y Else fx=x
End Function
⑴找出等式中单个数字的最大值;
⑵从最大值加1的数制开始,按该数制的运算规则,把等式中所有数字转换成十进制数;
⑶如果等式两边的结论是成立的,那么该数制就是符合上述等式的最小数制,否则从下一个数制重新计算,直到十六进制为止。
小明为此编写了一个VB程序,程序运行时,在文本框Text1中输入一个等式,单击“计算”按钮Command1,在文本框Text2中显示该等式中数字所属的数制。程序运行界面如下图所示。
Private Sub Command1_Click()
Dim s1 As String, ysf As String,t1 As String,t2 As String,t3 As String
Dim ch As String,t As String, max As Integer, jz As Integer, i As Integer
s1=Text1. Text
t1=0: max=0
For i=1 To Len(s1)
ch= Mid(s1,i,1)
If ch="+" Or ch="-" Or ch="*" Or ch="\" Then
ysf=ch: t1=t: t=" "
ElseIf ch="=" Then
t2=t: t=" "
ElseIf ch>="A" And ch <="F" Then
t=t+ch
temp=
If max<temp Then max=temp
Else
t=t+ch
If max<Val(ch)Then max=Val(ch)
End If
Next i
t3=t: jz=0
Do While i<= 16
If ysf="+" Then
If XtoD(i, t1)+XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
ElseIf ysf="-" Then
If XtoD(i, t1)-XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
ElseIf ysf="*" Then
If XtoD(i, t1)* XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
Else
If XtoD(i, t1)/XtoD(i, t2)=XtoD(i, t3) Then jz=i: Exit Do
End If
i=i+1
Loop
If jz < >0 Then
Text2.Text="该数属于"+Str(jz)+"进制"
Else
Text2.Text="没有找到合适的进制"
End If
End sub
Function XtoD(x As Integer,s As String) As Integer
Dim j As Integer
j=0
For i=Len(s)To 1 Step-1
XtoD=XtoD+Val(Mid(s, i, 1))*x
Next i
End Function
丽华设计如下算法:考虑到方案中只包含了A与B两个字母,可以用二进制的0和1来代替(0表示A,1表示B)。当全部是0时最小,此数0;当全部是1时此数最大。枚举0到最大数的每一种情况,逐一判断是否包含B相连(二进制数1相连)情况,符合条件的0、1转为A、B后输出。
根据以上算法思想,丽华使用VB程序编写了一个程序来解决这个问题。在文本框Text1中输入n的值,点击“寻找方案”按钮Command1后,在列表框List1中输出所有的方案,在标签Label3中显示方案总数。
Private Sub Command1_Click()
Dim i As Integer, j As Integer, n As Integer, t As Integer, k As Integer
Dim flag as Boolean, ans As Integer
Dim a(1 To 15) As Integer
n = Val(Text1.Text)
For i = 0 To 2^n-1
t = i
For j = 1 To n
a(j) = t Mod 2
t = t \ 2
Next j
flag = True
For k = 1 To n-1
If Then flag = False
Next k
If flag Then : ans = ans + 1
Next i
Label3.Caption = "可能方案共" + Str(ans) + "种"
End Sub
Function GetStr(x As Integer, n As Integer) As String
Dim m As Integer, i As Integer
GetStr = ""
m = x
For i = 1 To n
If m Mod 2 = 0 Then
GetStr = "A" + GetStr
Else
GetStr = "B" + GetStr
End If
Next i
End Function
def fun(n):
a, b=0,1
while a < n:
print(a, end=' ')
a, b=b, a+b
fun(5)
def factorial(n):
s=1
for i in range(2,n+1):
s=s*i
return s
total=factorial(4)
print(total)
Dim x As Integer, y As Integer 'x用于存储横坐标的值,y用于存储纵坐标的值
Private Sub Command1_Click()
Dim sum As Integer, m As Integer
Dim dx As Integer, dy As Integer
Dim i As Integer, t As Integer
x= Val(Text1. Text)
y=Val(Text2. Text)
dx=0 : dy=0
sum= 0
m=1: t=- 1
Do While Not check(dx, dy)
For i=1 To m
If check(dx, dy) Then Exit Do 'ExitDo表示退出Do循环
dx=dx+t
sum= sum+ 1
Next i
For i=1 To m
If check(dx, dy) Then Exit Do
sum= sum+ 1
Next i
m=m+1
Loop
Label1. Caption= Str( sum)
End Sub
Function check(x1 As Integer, y1 As Integer) As Boolean
check= False
If x1=x And y1=y Then
End If
End Function
def doit(x):
if x>=6:
ans=1
else:
ans=3*doit(x+1)+2*doit(x+2)
return ans
print(doit(3))
程序运行后,输出的结果为( )