算法思路:从乘数的最后一位开始逐个取出来与被乘数相乘,例如635的最后一位5,取出来与被乘数5相乘,得到25,个位数5作为结果存入s字符串,十位数2作为进位,留着加入下一次的乘积中,然后取出3,与5相乘,得到15,但是要加上刚才的进位,所以应该是17,个位数7作为结果存入s(此时结果是75),十位数作为进位1,留着加入下一次乘积…… 。
Private Sub Command1_Click()
dim s as string,s1 as string,s2 as string
dim i as integer,jinwei as integer,d as integer,t as integer
s1 = Text1.Text
s2 = Text2.Text
s = ""
jinwei = 0
For i = Len(s1) To 1 Step -1
d = Val(Mid(s1, i, 1))
t =
s =
jinwei = t \ 10
Next
If jinwei<> 0 Then s =
List1.AddItem s1 &"*"& s2 &"="& s
End Sub
s=Text1.Text
n=Len(s)
For i=1 To n
y(i)=1
Next i
For i=1 To
For j=
To n
If
Then
y(j)=y(j)+1
Else
y(i)=y(i)+1
End If
Next j
Next i
上述程序段3个方框处的表达式分别为( )
1)将明文中的字母E替换为A,F替换为B,G替换为C,…A替换为W,B替换为X,C替换为Y,…,小写字符的替换方法同理。
如:明文:I Love China 加密为:E Hkra Ydejw
2)将加密后的英文字母,按顺序依次放入每个字符串段落中,第1个加密字母E放在第1个段落,第2个字母H放在第2个段落,依次类推(如下图),段落间用逗号分隔并以逗号结尾。当遇到空格,在段落末尾“,”前,插入“+”号作为标记。
| 第1段 | 第2段 | 第3段 | 第4段 | 第5段 | 第6段 | 第7段 | 第8段 | 第9段 | 第10段 |
| E+, | H, | k, | r, | a+, | Y, | d, | e, | j, | w+, |
3)每个段落中,随机插入字母形成新的字母序列段,当段号小于8时加密字母在字母序列
中存放位置刚好是该段落号,位置以8为周期,第9段时,加密字母存放位置回到字母序列的第1位,第10段加密字母存放位置回到第2位,依次类推。(位置号<=8)
| 第1段 | 第2段 | 第3段 | 第4段 | 第5段 |
| Etc+, | mHfryh, | oTkrestf, | rfir, | Ccfta+, |
| 第6段 | 第7段 | 第8段 | 第9段 | 第10段 |
| iynhyYf, | tqswjyd, | nrtesiueh, | jnytq, | Uwccdb+, |
4)在每一段中随机插入除英文字母之外的ASCII字符码,形成一串密文。如图所示:
则根据加密算法,解密后的明文为
Private Sub Command1_Click()
Dim i As Integer, k As Integer
Dim s As String, c As String, ch As String
Dim letter As String, ret As String 'letter 用于存放字母序列s = Text1.Text
k = 1
For i = 1 To Len(s)
c = Mid(s, i, 1)
If c >= "A" And c <= "Z" Or c >= "a" And c <= "z" Then letter = letter + c
ElseIf
c = ","
Then
ch = Chr(Asc(ch) + 4)
If Not (ch >= "A" And ch <= "Z" Or ch >= "a" And ch <= "z") Then ch = Chr(Asc(ch) - 26)
End If
IfThen ret = ret + ch + " "
Else
ret = ret + ch
End If
k = k + 1
End If
Next i
Text 2.Text = ret
End Sub
Dim i As Integer, sum As Integer, a(0 To 7) As Integer
Dim s As String , ch As String , num As String
s="2-3-4-5-6-7-0"
sum=1:num=""
For i=1 To Len(s)
ch=Mid(s,i,1)
If ch>="0" And ch<="9" Then
num=num+ch
Else
sum=sum*Val(num)
a(Val(num))=Val(num)
End If
Next i
Text1.Text=Str(sum)
执行该程序段后,下列说法正确的是( )
s=0
For i=1 To 3
s=s+i
Next i
该程序段运行后,变量s的值是( )
Dim i As Integer, m As Integer, flag as Boolean
m =
flag=
For i = 2 To int(sqr(m))
If Then
flag=false
Exit For
End if
Next i
If flag=true Then
Text2.Text = str(m) +"是素数"
Else
Text2.Text = str(m) +"不是素数"
End if
s=Text1.Text
ans=0
Text2.Text=Str(ans)
若在Text1中输入110,则Text2中输出内容是6,划线处代码不正确是( )
t = Val(Mid(s, i, 1)) ans = ans * 2 + t
Next i
B . For i = 1 To Len(s)t = Val(Mid(s, i, 1))
ans = ans + t * 2 ^ (Len(s) - i)
Next i
C . i = Len(s)Do While i > 0
t = Val(Mid(s, Len(s) - i + 1, 1)) ans = ans + t * 2 ^ (i - 1)
i = i - 1 Loop
D . i = Len(s)Do While i >= 1
If Val(Mid(s, i, 1)) = 0 Then
ans = ans * 2 Else
ans = ans * 2 + 1
End If
i = i - 1
Loop
S = 0
For i = _____ to 3 step -1
S = S + i
Next i
该程序段运行后,语句S = S + i共执行了4次,则下划线处应是( )
1)这两项运动在记录中必须连续出现,不能被其他运动打断,如“1,2,2,1,2”是一种可能的结果;“1,2,2,1,2,3”则不是可能的结果;
2)这两项运动在记录中出现的次数必须是最多的一种组合。
|
运动记录 |
1,1,2,3,2,3,2,3,3,1,1,4,3 |
||||
|
序号 |
① |
② |
③ |
④ |
⑤ |
|
两项运动 |
1,1,2 |
2,3,2,3,2,3,3 |
3,3,1,1 |
1,1,4 |
4,3 |
从上表分析可知,小张在一段时间内连续进行的两项运动有5种不同组合,其中组合②中的两项运动持续时间最长,所以最“喜爱”的两项运动为2和3,共连续进行了7次。
根据算法思想,编写VB程序实现如下功能:程序初始化时读取小张记录的一段时间内的所有运动项目,以逗号间隔显示在文本框Text1中,单击“寻找运动项目”按钮Command1,在标签Label4上显示最喜爱的两项运动编号,在文本框Text2中显示这两项运动最长持续的次数。程序运行界面如图所示。
Dim a(1 To 100) As Integer, n As Integer
Private Sub Form_Load( )
'读取已有记录项目总数n
'读取记录的每次运动项目存入数组 a,并在文本框Text1中显示,代码略
End Sub
Private Sub Command1_Click()
Dim x As Integer, y As Integer 'x, y分别表示当前记录中两个不同项目
Dim c1 As Integer, c2 As Integer 'c1,c2 分别表示两个项目在当前统计过程中出现的次数
Dim i As Integer, j As Integer, m1 As Integer, m2 As Integer, ans As Integer
i = 1: j = 1
Do While j <= n And a(i) = a(j)
j = j + 1
Loop
x = a(i): y = a(j)
c1 =
c2 = 1
ans = j - i + 1
Do While j < n
j = j + 1
If a(j) = x Then
c1 = c1 + 1
ElseIf a(j) = y Then
c2 = c2 + 1
Else
Do While
If a(i) = x Then c1 = c1 – 1 Else c2 = c2 - 1
i = i + 1
Loop
If Then
y = a(j)
c2 = 1
Else
x = a(j)
c1 = 1
End If
End If
If ans < j - i + 1 Then
ans = j - i + 1
m1 = x
m2 = y
End If
Loop
Label4.Caption = Str(m1) + "和" + Str(m2)
Text2.Text = Str(ans)
End Sub
for i in range():
a=i// 100 #取出百位数字
b= #取出十位数字
c=i%10 #取出个位数字
if
print(“水仙花数是:”, i)
result = ""
s1 = Text1.Text
s2 = Text2.Text
i = 1
Do While i <= Len(s1)
If Mid(s1,i,Len(s2)) <> s2 Then
result = result + Mid(s1, i, 1)
i = i + 1
Else
i = i + Len(s2)
End If
Loop
在文本框Text1和Text2中分别输入“Pyyesthon”和“yes”,执行该程序段后,变量result的值是( )
def isprime (x):
for i in range(2, x):
if x % i= 0:
return False
return True
prime = []
for i in range(2, 21):
if isprime(i):
prime.append(i) #将 i添加到列表
print (len(prime))
运行该程序段,输出结果是
a=1
Do Until a>7
a=a*(a+1)
Loop
Print a
[问题求解]设这个数存放于变量x中,变量g、s、b分别存放个位、十位、百位上的数。需得分离数字得到每位上的数,即将变量g、s、b表示为x的形式。请阅读如下python程序,在横线处填写适当的表达式或语句,使程序完整。
print ("三位数之内的水仙花是:")
for x in(100,1000):
b=x//100
s=(x//10)
g=
If x=(b**3 +s**3+g**3):
print()
Din i As Integer, j As Integer
For i=1 To 5
For j=1 To 5-i
Print ""; '输出一个空格
Next j
For j=1 To i
Print **;
Next j
Next i
D .
实现上述功能的VB代码如下,请回答下列问题:
Const n= 10
Dim a(1 To n) As Integer
Private Sub Form_ load( )
'数组初始化,生成1~20之间的随机整数并赋值给数组a,代码略
End Sub
Private Sub Cmd1_Click()
Dim i As Integer, j As Integer, t As Integer
Dim bottom As Integer
bottom= n
For i=1 To bottom-1
For j= bottom To i+1 Step -1
If
Then '①改错
t=a(j) : a(j)=a(i) : a(i)=t
ElselIf a(j)=a(i) Then
'②填空
bottom= bottom- 1
End If
Next j
Next i
Text2. Text=" "
For i=1 To bottom
Text2. Text= Text2. Text+Str(a(i))
Next i
End Sub
Dim a(1 To 26) As Integer
s= "2020 Artificial Intelligence!” : n=0
For i=1 To Len(s)
ch= Mid(s, I, 1)
If ch>= "a" And ch <= "z" Then
m = Asc(ch) - Asc("a") + 1
a(m)=a(m)+1
End If
Next i
For i=1 To 10
If a(i)>1 Then n=n+1
Next i
已知数组a各元素的初始值都为0,执行该程序段后,变量n的值为( )
n=int(input("n="))
s=0
for i in range(1, n):
if n%i==0:
s=
if :
print(n, "是完数")
else:
print(n, "不是完数")
①请填空完善该程序,实现功能:按程序提示依次输入行和列的数字,则按行列打印由“*”组成的矩形。
例如,按提示输入:
请输入行数:3
请输入列数:5
屏幕将打印以下图形:
②编写完成后原名保存并关闭应用软件。
a=int(input("请输入行数:"))
b=
for i in range():
for j
print(,end=' ') #end=''表示接上一个输出项后输出,不换行
print( )