For i = 4 To 3 Step -1
If a(i) < a(i-1) Then
tmp = a(i)
For j = i-1 To 1 Step -1
If tmp > a(j) Then Exit For
a(j+1) = a(j)
Next j
a(j+1) = tmp
End If
Next i
数组元素 a(1)到 a(6)的值依次为“19,8,96,92,85,88”,经过该程序段“加工”后,数组元素 a(1)到 a(6)的值依次为( )
Const maxn = 1000
Dim a(0 To maxn) As Long
Private Sub Form_Load()
′产生maxn个不相同的数据,并把他存储在a数组中,代码略
End Sub
Private Sub Command1_Click()
Dim i As Long, j As Long, tmp As Long, cnt As Long
Dim last_exchange As Integer ′记录最后一次交换位置
Dim tmp_pos As Integer ′本次交换的位置
cnt = 0: i = 1
last_exchange = 0: tmp_pos = 1
Do While ′改错
last_exchange = tmp_pos
For j = maxn To last_exchange + 1 Step -1
If a(j) < a(j - 1) Then
tmp = a(j): a(j) = a(j - 1): a(j - 1) = tmp
cnt = cnt + 1
End If
Next j
i = tmp_pos
Loop
′输出,代码略
End Sub
在待处理的数据区间中,对相邻且数据个数相等的数据块进行处理。若数字i恰好在第i位置,则不做交换,否则按下列两种情况处理。
情况A.待处理区间中,若数字i之前的数据个数小于等于其余数据个数,做一次交换可将数字i换到第i位置,如数字i=2时:
情况B.待处理区间中,若数字i之前的数据个数大于其余数据个数,操作如下:
◆奇数个数据:先将待处理区间中第1个数据排除,对其余数据整体做数据块交换,再按情况A处理,如数字i=3时:
◆偶数个数据:先将待处理区间整体做数据块交换,再按情况A处理,如数字i=4时:
Const Maxn = 30
Dim a(1 To Maxn) As Integer
Dim wz(1 To Maxn) As Integer
'函数功能:数据块[st1… ed1]与后面数据块交换(两数据块相邻且个数相等)
Function kSwap(st1 As Integer, ed1 As Integer) As String
Dim i As Integer, t As Integer, n1 As Integer
n1=ed1-st1+1
For i=
t=a(i):a(i)=a(i+n1):a(i+n1)=t
t = wz(a(i)): wz(a(i)) = wz(a(i + n1)): wz(a(i + n1)) = t
Next i
'将处理结果返回,代码略。
End Function
Private Sub Cmd1 _Click()
Dim n As Integer, num As Integer, i As Integer, s As String
n = Val (Text1. Text)
'随机生成n个不重复正整数保存到a(1)到a(n)中,并在List1中显示,代码略。
For i=1 To n
wz(a(i)) = i
Next i
For i=1 To n - 1
If i <> wz(i) Then
num =
If wz(i)-i<=num-(wz(i)-i)Then '按情况A处理
s = kSwap(i, wz(i) - 1) : List1. AddItem
Else
If num Mod 2=0 Then
s = kSwap(i, i + num\2 - 1) : List1. AddItem s
Else
s=: List1. AddItem s
End If
i=i-1 数字i交换到第i位置的处理尚未完成;
End If
End If
Next i
End Sub
s="AaBb":t=""
For i=1 To Len(s)
ch=Mid(s, i, 1)
If ch>="a" And ch<="z" Then
ch=Chr(Asc(ch)-32)
End If
t=ch+t
Next i
Private Sub Command1_Click()
Dims As Integer,n As Integer
Dim a As Integer,b As Integer,c As Integer
n=0
s=102
List1.Clear
Do Whiles<=999
a= ①
b=s\10 Mod 10
c=s Mod 10
If ② Then
List1.Addltem Str(s)
③
End If
s=s+3
Loop
Label1.Caption="共有"+Str(n)+"个"
End Sub
画线处应填入的代码为:①;②;③。
实现上述功能的VB程序如下,请在画线处填入合适的代码。
Const maxn=80
Dim i, j, k, n, r As Integer
Dim a(1 To maxn)As Integer, b(1 To maxn)As Integer
Dims As String
Private Sub Form_Load( )
List1.Clear
For i=1 To maxn
a(i)=0
Next i
End Sub
Sub array_sum(j As Integer) ‘该过程用于计算j!,并将j!的精确值按位保存在数组a中
For k=1 To j-1
For i=1 To maxn
r= ①
If r>=10 Then ② =a(i+1)+1
a(i)=r Mod 10
Next i
Next k
End Sub
Private Sub Command1_Click( )
n=Val(Text1.Text)
a(1)=1
List1.AddItem"1!="&.Str(a(1))
For j=2 To n
For i=1 To maxn
b(i)=a(i)
Next i
s=""
Call array_sum(j) ‘该语句用于调用自定义过程
s=s+Str(j)+"!="
k=maxn
Do While a(k)=0
③
Loop
For i=k To 1 Step-1
s=s+Str(a(i))
Next i
List1.Addltem s
Next j
End Sub
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③。
表1某高校学考成绩换算表
学业水平考试等级 |
A |
B |
C |
D |
成绩折算(分) |
10分 |
9分 |
7分 |
4分 |
表2某学生学考等级成绩单
考试科目 |
语文 |
数学 |
英语 |
物理 |
化学 |
生物 |
历史 |
地理 |
政治 |
技术 |
考试等级 |
A |
A |
A |
A |
A |
B |
C |
A |
B |
A |
程序运行结果如图所示。
s=1 i=1 while i<=5: s=s*i i=i+1 print(s) |
for i in range (1,6):
print(‘*’)
s=0
for k in range(1,7,2):
s =s+k
print (s)
输出s的值是。
问题:输入一个正整数n,判断n是否为素数。要判断n是否为素数,最简单的方法是:统计2到n-1之间能整除n的整数个数s,若s大于0,则n不是素数,否则就是素数。根据以上方法,完善以下程序代码。
Dim n, s As Integer
n = Val(InputBox(“n=”))
s=0
For i=2 to
If n Mod i = 0 then
s= ‘统计因数个数
End If
Next i
IfThen
Print n &“是素数”
Else
Print n &“不是素数”
End If
1)初始时,建立一个空字典,把26个小写字母加入字典中。26个小写英文字母编码为1-26,字母“a”的编码为1,字母“b”的编码为2,其它字母的编码依次增加。
2)从字符串第一个位置开始扫描,若遇到空格(空格用“*”表示),则得到一个单词,截取该单词并存入变量中。
3)若该单词在字典中,则取出该单词在字典中的编码值;否则,依次取出该单词中各字母在字典中的编码值,(编码值之间用一个空格分隔),同时产生该单词的编码(编码为字典中的最大编码值加1),加入字典中。
4)继续扫描字符串,截取单词,并按照步骤(3)的方法进行处理,直至整个字符串编码完毕。字符串“abab”LZW编码过程如图所示。
Dim pos As Integer, a(1 To 100)As String
Private Sub Form_Load( )
'将字母“a”至“z”依次存入数组元素a(1)到a(26)
End Sub
Function judge(ss As String) As Integer '判断字典中是否有ss这个单词
Dim i As Integer judge = 0
For i = 27 To pos
If a(i) =Then judge = i
Exit For
End If
Next i
End Function
Private Sub Command1_Click( )
Dim s As String, i As Integer, j As Integer, k As Integer, ch As String, word As String, result As String, Dim id As Integer, idletter As Integer
s = Text1.Text pos = 26: i = 1
Do While i <= Len(s)
j = i
Do While Mid(s, j, 1) <> " " j = j + 1
If j > Len(s) Then Exit Do
Loop
word = Mid(s, i, j - i)
If Len(word) = 1 Then '单个字母的单词
result = result + Str(Asc(word) -Asc("a") + 1)
Else
id = judge(word)
If id = 0 Then '新的单词
For k = 1 To Len(word) '依次处理该单词中的各个字母编码
ch = Mid(word, k, 1)
Next k
pos = pos + 1 '对该单词编码
a(pos) = word
Else '词典中存在该单词
result = result + Str(id) End If
End If
If j < Len(s) Then result = result + " *"
Loop
Text2.Text = result
End Sub
算法思路如下:
1)求以a(i)为结尾元素的最长升序子序列时,找到所有序号j(j=1,2……i-1),且a(j)<a(i)。
如果这样的元素存在,且d(j) >= d(i)(d(i)记录i位置的最长升序子序列长度),那么就增加i 位置的最长升序子序列长度,并记录该升序子序列倒数第二个位置。
2)在d 数组中找出最大值,即最长升序子序列长度。
3)例如,2、11、4、13、5、7,d(1)=1,d(2)=2,d(3)=2,d(4)=3,d(5)=3,d(6)=4,所以最长升序子序列长度为4,是以a(6)为结尾元素。
现设计了如下VB 程序,界面如图所示,请回答下列问题:
Const n = 9
Dim a(1 To n) As Integer
Private Sub Form_Load()
'生成n个[1,10]范围的随机数,存储在a 数组,并显示在列表框List1。代码略
End Sub
Private Sub Command1_Click()
Dim d(1 To n) As Integer '记录i位置的最长升序子序列长度
Dim pre(1 To n) As Integer '记录i结尾的最长升序子序列前一数据的位置
Dim st As String, i As Integer, k As Integer, maxlen As Integer
For i = 1 To n
d(i) = 1
Next i
For i = 2 To n
For j = 1 To i - 1
If a(j) < a(i) And d(j) >= d(i) Then
d(i) =
pre(i) = j
End If
Next j
Next i
maxlen = 0 : k = 0
For i = 1 To n
If Then maxlen = d(i) : k = i
Next i
Do While k <> 0
st = a(k) & "," & st
Loop
Text1.Text = Mid(st, 1, Len(st) - 1)
End Sub
S = 0
For i = 2 to 100 step 2
S = S + i
Next i
Print i
该段程序代码执行完毕后,i的值是( )
⑴素数:指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。例如11,它只能被1和11整数,所以11是素数。
⑵回文数:正读和反读都是一样的数字,例如12321,它的正反都是一样,是回文数字。
编写Python程序,实现如下功能,找出100~n中的所有的回文素数(n为>=100的正整数)。
程序代码如下,请回答下面问题:
import math
def prime(n): # 判断 n 是否是素数
i=2
k=int(math.sqrt(n))
while i<=k:
if :
break
i=i+1
return i>k
def rev(n):# 倒转数字
t=0
while :
t=t*10+n%10
n=n//10
return t
n=int(input('请输入整数 n:'))
L=[]
for i in range(100,n+1):
if :
if prime(i)==True:
L=L+[i]
print('100 到 n 中的回文素数:',L)
[问题求解]设这个数存放于变量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()
数组元素 |
数组元素的含义 |
a(i) |
a(1)到a(10)依次存储1号顾客购买商品1~商品10的记录; a(11)至a(20)依次存储号2顾客购买商品1~商品10的记录;依次类推。 数组a的某个元素的值为1,则表示某位顾客购买了某种商品,若为0则表示没有购买该种商品。如a(6)=1表示1号顾客购买了商品6,a(6)=0表示未购买。 |
b(i) |
dsj(1)~dsj(9)依次存储商品1与商品2~商品10的关联次数; dsj(10)~dsj(17)依次存储商品2与商品3~商品10的关联次数:依次类推。 如dsj(5)=2表示商品1与商品6被同时购买过2次; 如dsj(45)=4表示商品9与商品10被同时购买过4次。 数组dsj中,若dsj(45)的值最大,则表示商品9和商品10的关联次数最多。 |
小王按照上述算法设计了VB程序,统计了20个用户购买10种商品之间的关联性,VB程序如下,部分界面如图所示。
Private Sub Cmd1_Click( )
Dim a(1To200) As Integer '各个用户原始的购买记录
Dim dsj (1To45) As Integer '统计商品之间的关联次数
Dim i As Integer, t As Integer, nc As Integer, j As Integer, max As Integer
'数组a读入数据并在列表框分行输出,代码略
For i=1 To 20'20个用户
t=1
For j=1 To 9'10个商品,共45种组合
For k=j+1 To 10
m=(i-1)*10
If Then dsj(t)=dsj(t)+1
Next k
Next j
Next i
max=0
For i=1 To 45
If Then
max=dsj(i)
maxi=i
End If
Next i
t=9:nc=1
Do While maxi>t
t=t-1
nc=nc+1
Loop
Text1.Text="关联最多的是商品"+Str(nc)+Str(maxi+nc)+":"+Str(max)+"次"
End Sub
FOR I= 1 TO 100
IF I MOD 2 =0 THEN S=S+I
NEXT I
PRINT S
这段程序的功能是( )
补全以下程序代码:
import random
num=random.randint(1,100)
n=5
flag=True
while:
guess=int(input("请输入猜测的数:"))
if guess<num:
print("偏小")
n=n-1
elif guess>num:
print("偏大")
n=n-1
else:
print("恭喜你,猜对了!")
flag=False
break #跳出当前循环,执行循环后的语句
if flag:
print("答案是:"+str(num)+"5次都没有猜中,游戏结束!")
请补全程序。
a=[2,1,3,4,5]
c=0
For i in range(2,len(a)):
if a[i-2]+a[i-1]==a[i]:
c=c+1
Print(c)
该程序段运行后,最后输出的内容是( )