学进去-教育应平等而普惠
排序:
414道相关试题
数轴上有n个开区间(ai,bi),其中ai,bi都是正整数,开区间不含端点。现要挑选出尽量多的区间,使得任意两个区间都没有公共部分,如有公共部分即为相交。选择区间的算法设计如下:
例如有开区间:(7,12)、(10,12),(2,6),(11,15)
(1)排序。按照bi从小到大排序,当bi相同时,按照ai从大到小排序。
排序结果:(2,6)、(10,12)、(7,12)、(11,15)
(2)挑选。第一个区间必选,然后依次选出与前面已选的区间不相交的区间。
挑选结果:(2,6)、(10,12)
根据上述算法描述,设计程序界面如图所示,在文本框Text1中按格式输入原始区间,点击“计算”按钮后,在文本框Text2中按顺序输出最多的没有公共部分的区间。

依据上述描述设计如下VB程序:
Const n=10                        '程序最多处理10个区间
Dim a(1 To 2 * n)As Integer
'a(1),a(2)存放第1区间的下限和上限,a(3),a(4)存放第2区间的下限和上限
Private Sub Command1_Click()
Dim i As Integer,j As Integer,k As Integer,c As Integer
Dim pl As Integer,p2 As Integer
Dim s As String
'读取文本框Text1中的区间数据,按要求存入数组a中
s="":ss="":j=1
For i=1 To Len(Textl.Text)
S=Mid(Text1.Text,i,1)
If s>="0"And s<="9"Then
ss=ss+s
Else
If ss<>""Then
a(j)= Val(ss)
ss=""
j=j+1
End If
End If
Next i
'排序
c=(j-1)/2         '区间个数
For i=1 To c-1
k=i
For j=i+1 To c
If    Or a(2 * k)=a(2 * i)And a(2 * k-1)<a(2 * j-1)Then
k-j

End If

Next j
If k<>i Then
t=a(2 * i-1):a(2 * i-1)=a(2 * k-1):a(2 * k-1)=t
t=a(2 * i):a(2 * i)=a(2 * k):a(2 * k)=t
End If
Next i
'挑选
pl=1:p2=2
res="("+Str(a(1))+","+Str(a(2))+")"    '第一个区间必选
Do While p2<=c

If NotIn(pl,p2)Then

res=res+"、("+Str(a(2 * p2-1))+","Str(a(2 * p2))+")"
p1=    
p2=p2+1
Else
p2=p2+1
End If
Loop
Text2.Text=res
End Sub
Function NotIn(m As Integer,n As Integer)As Boolean   '检查区间不相交
If    Then
NotIn= True
Else
NotIn= False
End If
End Function
请回答下列问题:
(1)对于给定区间(5,9)、(12,17)、(10,20)、(1,5)、(7,9)、(3,6)则选择的第2个区间是________________________________________。
(2)请在划线处填入合适的代码。
①_______________________________
②_______________________________
③_______________________________
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
领礼物。圣诞节到了,教室里放满了礼物,大家站在同一位置即原点(0,0)处,根据自己拿礼物的序号轮流去拿礼物,每个人只能拿离自己最近的礼物,每件礼物的位置用坐标(x,y)表示。如果有多个礼物离你的距离相等(精确到小数后二位)且最近,则这些礼物都归你所有。
程序运行时,在文本框Text1中输入共有礼物数n,单击“读取数据”按钮Command1,将从数据库gift. accdb中读取n个礼物的信息存储在相应的数组中,并显示在列表框List1中;在文本框Text2中输入轮到你拿礼物的序号(即第几个拿),单击“计算”按钮 Command2,则在列表框List2显示你获得的礼物信息,并在列表框list2最后一行显示获得的礼物总数。程序运行界面如图所示。
    
实现上述功能的VB程序代码如下,请回答下列问题:
Dim conn as New ADODB. Connection
Dim rs as New ADODB. Recordset
Dim bh(1 To 100) As string   '数组bh存储礼物的编号
Dim x(1 To 100) As Single,y(1 To 100) As single    '数组x、y分别存储礼物的横坐标和纵坐标
Dim dist(l To 100) As single     '数组dist存储礼物到原点的距离
Dim n As Integer      '变量n表示礼物数
Private Sub Command1_Click()
Dim i As Integer
'从数据库中读取n件礼物的编号、横坐标、纵坐标,并存储在相应的数组中'代码略,下面代码的功能是计算各礼物到原点的距离
For i=1 To n

dist(i)=    

Listl. AddItem bh(i)+""+Str(x(i))+""+Str(y (i))+""+Str(dist(i))

Next i
End Sub
Private Sub Command2_Click()
Dim xh As Integer, i As Integer,j As Integer, k As Integer
Dim templ As String, temp2 As Single, p As Single, s As Single
xh=Val(Text2. Text)
'将礼物按到原点的距离从小到大排序,代码略
i=0:j=1:s=0
Do While (i< xh) And (j<=n)

If dist(j)<>s Then

         
i=i+1

End if

j=j+1

Loop
u=0
j=j-1

Do While         

List2. AddItem bh(j)+Str(x(j))+Str(y(j))+Str(dist(j))

u=u+1

j=j+1

Loop
List2. AddItem"total:"+Str(u)
End sub
(1)请在程序画线处填入合适的语句:
画线①处应填入的语句为:_____________________________________________;
画线②处应填入的语句为:_____________________________________________;
画线③处应填入的语句为:_____________________________________________
(2)假设现共有14件礼物,礼物的信息如图所示,你轮到第10个拿礼物,则你获得的礼物数为___________。
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
某校教务处安排选考科目考场办法是这样的:依据上次的考试名次由小到大把考生安排到各考场(考场号从 1 开始编号),每个考场 35 人,7 行 5 列,S 形排列。为方便教务人员快速将每次考试每科考场座位表打印出来,技术组老师利用VB 编写了一个程序,相关信息、程序界面及代码如下,为实现上述功能,请回答以下问题:
(1)根据程序代码可以知道,安排考场的原始数据来自_______________数据库的_______________数据表。
(2)完善①②③处程序代码。

Dim xm (1 To 1000) As String, dayinkm (1 To 1000) As String
Dim zuhe(1 To 1000) As String,mc(0 To 1000) As Integer, n As Integer
Private Sub Command1_Click()
Dim conn As New ADODB. Connection  'conn 是数据库链接对象
Dim rs As New ADODB. Recordset   'rs 是数据记录集对象
conn. Open "Provider=Microsoft. Jet. OLEDB. 4. 0;Data Source=" & App. Path & "\xk. accdb" & ";"
Jet OLEDB:Database Password=""
strSQL = "SELECT∗FROM 2019xk"
' 考号、姓名信息存放在 xm 数组;7 选 3 选课组合存放 zuhe 数组;名次存放 mc 数组,代码略
Label3. Caption = "共有" + Str(n) + "人" 
' 学生总人数存放变量 n 中
End Sub
' 下面代码是:先按名次升序排序,再筛选要打印的学科到数组 xinkm
Private Sub Command2_Click()
Dim xk(1 To 7) As Integer,t As String
For i =_________
t1 = mc(i): t2 = xm(i): t3 = zuhe(i): j = i- 1
Do While t1 < mc(j)
mc(j + 1) = mc(j): xm(j + 1) = xm(j): zuhe (j + 1) = zuhe(j)
j = j - 1
Loop
mc(j + 1) = t1: xm(j + 1) = t2: zuhe(j + 1) = t3
Next i
'将排序后的数据输出到列表框 list1 中,代码略km = "物理化学生物政治历史地理技术":dykm =
Text1. Text
For i = 1 To 7
If__________Then kmh = i: Exit For
Next i
k = 1
For i = 1 To n
For j = 1 To 3
If dykm = Mid(zuhe(i), 2 ∗ (j - 1) + 1,2) Then
xk(kmh) = xk(kmh) + 1
dayinkm(k) = xm(i)
k = k + 1
End If
Next j
Next i
Label2. Caption = "选考" + dykm + "学科共有" +Str(xk(kmh)) + "人"
End Sub
'将数组 dayinkm 中的数据按考场 S 形输出
Private Sub Command3_Click()
Dim kc As Integer
Dim p As Integer, q As Integer
Dim i As Integer, num As Integer, ks As Inte⁃
ger
List2. Clear
List2. AddItem "讲台"
List2. AddItem "----------"
p = 7: q = 5: kc = Val(Text2. Text)
ks = q ∗ p ∗ (kc - 1)
For i = 1 To p
ks = ks + 1
s = " " + xinkm(ks)
For j = 1 To q - 1
If j Mod 2 = 1 Then
_________
Else
num = ks + p ∗ j
End If
If num > n Then
s = s + "  "
Else
s = s + "  " + xinkm(num)
End If
Next j
List2. AddItem s
List2. AddItem "----------"
Next i
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
查找最短26个字母字符串: 在文本框Text1中输入任意一串仅包含小写字母的字符串(长度n>=26),要求找到长度最小的一段区间,能够包含全部26个小写英文字母。小王设计了VB程序用于搜索最短字符串,单击“查找”按钮 Command1,若无解,则在标签 Label1中输出“无解!”,反之程序在标签 Labell中输出该最小区间的长度以及字符的开始位置,并在文本框Text2中输出相应的最短字符串,程序界面如图所示。
查找最短26个字母字符串的算法可描述为:
1)确定初始右边界: 从第1个字符开始,向右搜索到包含全部26个字母的子串,并因此而确定右边界,同时记录每个字母在子串中出现过的次数。
2)调整子串左边界: 若左边界有重复的字母则表明该子串可缩短,故左边界可右移1位,……直到找到一个符合条件的子串并记录,然后子串左边界再右移1位。
3)调整子串右边界: 子串右边界继续右移,在新子串符合条件后,记录并进行比较。重复2)各调整步骤,直至遍历完整个字符串,获得并输出满足条件的最小长度字符串。
             
实现上述功能的VB程序如下,请回答下列问题:
(1)对于字符串“ qbwcadsgeqbdatcy”,包括字母 abcde的最短字符串长度为___________(填数字)
(2)请在划线处填入合适的代码。
Const n=200
Dim i As Integer, k As Integer, length As Integer, L As Integer
Dim pos As Integer, sl As String, res As String
Dim f(1 To 26) As Integer    '数组f记录每个小写英文字母的出现次数
Dim s(1 To n)As Integer      '数组s记录每个输入字符在字母表中的位置
Private Sub Command1_ Click

res=" "

s1=Textl. Text

For i=1 To Len(s1)

s(i)= _____________
Next i
k=0: pos=1: length=n
For i=1 To 26
f(i)=0
Next i
For i=1 To Len(sl)
If f(s(i))=0 Then k=k+1
f(s(i))=f(s(i))+1
Do While___________
f(s(pos))=f(s(pos))-1
If______________Then
k=k-1
If i-pos+1<length Then
length=i-pos+1
res=Mid (sl, pos, length)
L=pos
End If
End If
pos=pos+1
Loop
Next i
If res<>""Then

Text2 Text=res

Labell. Caption="最短长度: "+Str( length)+"开始位置: "+Str(L)Else

Labell. Caption="无解!"

End if

End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
数组a中存储了n个学生的学号和成绩数据,其中奇数位置存储学号信息,偶数位置存储成绩信息,数组存储结构如下表所示:
1
2
3
4
5
6
……
2n-1
2n
学号
成绩
学号
成绩
学号
成绩
……
学号
成绩
第1个学生信息
第2个学生信息
第3个学生信息
……
第n个学生信息
 
小迪同学使用选择排序思想对上述n个同学按成绩进行降序排序(成绩相同的按学号升序排列),并依据成绩插入各位同学的名次信息,处理结束的数组a存储结构如下表所示:
1
2
3
4
5
6
7
8
9
……
3n-2
3n-1
3n
名次
学号
成绩
名次
学号
成绩
名次
学号
成绩
……
名次
学号
成绩
第1个学生信息
第2个学生信息
第3个学生信息
……
第n个学生信息
 
小迪同学使用VB编写了成绩处理程序,程序运行界面如下图所示:
      
实现上述功能的VB程序如下,请回答下列问题。
Const n=20
Dim a(1 To 3* n)As Integer
Private Sub Command1_ Click()

'读取数据,存储在数组a中,并显示于列表框List1中

'代码略

End Sub
Private Sub Command2_ Click()
'①改错
k=i
For j=l To i-l
If a(2*j)<a(2*k)Or           Then
k=j
End if

Next j

A(3*i=a(2*k)
A(3*i-1)=a(2*k-1)
            
A(2*k-1)=a(2*i-1)
Next i
List2. AddItem"第1名:学号+CStr(a(2))+",分数"+str(a(3))
A(1)=1
mc=1
For j=2 To n

If          Then mc=i

List2. AddItem"第"+Str(mc)+"名:学号"+CStr(a(3*i-1))+",分数"十Str(a(3*i))a(3*i-2)=mc

Next i

End sub
(1)已知窗体名称为Form1,要使程序加载时,窗体标题自动显示为“第15题程序”,则可在_____________(单选,填字母)事件过程中添加代码: Form1. Caption=“第15题程序”。
A.Form_ Click()B.Form_ Load()C.Form1_ Click()D.Forml_ Load()
(2)程序加框处的For循环语句有错,请改正。
(3)请将程序②③④划线处代码补充完整。
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
数组a和数组b中元素的个数分别为n1和n2,现在从a,b两个数组中选取最小的n1个数据并按升序排列保存到a数组中。示例1:a={1},b={5,3},则a={1};示例2:a={3,1},b={2,4},则a={1,2}。实现上述功能的VB程序段如下:
Private Sub Form _ Load( )
′数组a,b存储整数,代码略
End sub
Private Sub Command1_Click( )
Dim i As Integer,j As Integer, k As Integer, t As Integer, flag As Boolean
flag- True
For i=1To        
j=n2
 

  If b(j)< b(j-1) Then t=b(j: b(j)=b(j-1): b(j-1)=t

  j=j-1

  Loop
k=i
For j=n1Toi+1Step-1

If a(j)<a(k) then k-j

Next j
If a(k)<= b(1) And k <> i Then

t=a(k):a(k)=a(i): a(i)=t

flag=False

Elself       Then

t=a(i):a(i)=b(1):b(1)=t

flag=True

End If
Next i
For i=1 To nl
Listl AddItem Str(a(i))
Next i
End sub
请回答问题:
(1)要使程序运行时,清空列表框List1的内容,可在 Form Load事件过程中添加语句:_____(单选,填字母:
A.List1.Caption=""/B.List1.Clear/C.List1. Additem"")。
(2)请将程序代码①②处补充完整。
①_______________________
②_______________________
(3)程序代码方框处,flag为_______时,表示b数组该遍加工需要进行_______排序(选填:冒泡/选择)。
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
展开字符串。如果在输入的字符串中,含有类似于“c-g”或者“3-7”的字符子串,就把它当作一种简写,字符串展开输出时有如下规则:
(1)如果“-”号右边的字符按照ASCI码的顺序大于左边字符,输出时,用连续递增的字母或数字串替代其中的“-”号,例如:“c-g”输出为“cdefg”,“3-7”输出为“34567”。

(2)如果“-”号右边的字符按照ASCII码的顺序小于或等于左边字符,输出时,保留中间的“-”号,例如:“a-a”输出为“a-a”,“4-1”输出为“4-1”。
(3)如果“-”号右边的字符恰好是左边字符的后继,则删除中间的“-”号,例如“d-e”应输出为“de”,“3-4”应输出为“34”。
某同学按照上述算法,编写了VB程序,功能如下:在文本框Text 1中输入简写字符串,单击“展开”按钮Command 1,程序进行字符串展开处理并显示在文本框Text 2中。程序运行界面如图所示。
(1)如果输入的简写字符串为“abs-w-Y1234-5S-4z”,则展开后的字符串为___________________。
(2)实现上述功能的VB程序如下,请在画线处填入合适代码。
Private Sub Command1_Click()
Dim stl As String, st2 As String, i As Integer
st1=Text1. Text
n=Len(st1)
st2=""
For i=1 To n

If pos(stl, i)Then<> "-" Then

st2=st2-+pos(stl, i)

Else

If pos(stl, i-1)<pos(stl, i+1) Then
For j=Asc(pos(stl, i-1))+1 To Asc(pos(stl, i+1))-1
_______________
Next j
Else
st2=st2+"-"
End If

End If

Next i
Text2. Text=st2
End Sub
Function pos(s As String, x As Integer) As String'返回字符串s中x位置的字符
__________________
End Function
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
数学上把2,4,8,16等数称为2的幂次方。编写程序,实现如下功能:在文本框Text1中输入一个正整数n,单击“查找”按钮,找到一个2的幂次方,使其与n之差的绝对值最小,并在标签框 Label1中输出。如果找到两个同时满足条件的幂次方,则输出较小的。程序运行界面如图所示。
       
(1)要使程序运行时,标签框Labell的ForeColor属性值为vbRed,可在Form_Load事件处理过程中添加语句___________(单选,填字母:
A.Label1. ForeColor= vbRed/B.Labell. vbRed= ForeColor/C.Fore Color. Label1=vbRed)。
(2)实现上述功能的VB程序如下,请在画线处填入合适的代码。
Private Sub Command 1_ Click()

Dim n As Long, sum As Long, ans As Long

n= Val(Textl. Text)

sum=1

Do While sum <n

   ____________

Loop

If n =sum Then

ans=sum
ElseIf ___________Then
ans=sum/2
Else
ans =sum
End If
Label 1. Caption = Str(ans)
End Sub
(3)若文本框Text1中输入的内容为“24”,单击“查找”按钮,标签框 Label l中显示的内容是______________________。
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
回文数是从左向右读和从右向左读结果一样的数字串,例如:1和363都是回文数。编写VB程序,构造一个大于给定正整数n的最小回文数p。构造方法如下:
①根据数字串n的左半部分子串st,构造对称的右半部分,生成回文数p。
②若p>n,则p即为最小回文数,如:98712→98789。
③若p≤n,则需重新构造p,方法是:从右向左查找字符串st中第一个非“9”的字符,
若不存在,则形成“10…0”的回文数p,p的长度比n的长度多1位,如9999→10001。
若存在,则将第一个非“9”字符加1,并将该字符后面部分用字符“0”填充,最后构造对称的右半部分,生成回文数p,如98992→99099.如图所示,在文本框Text1中输入正整数n,单击“求解”按钮Command1,在文本框Text2中输出最小回文数。

实现上述功能的VB程序如下,请回答下列问题:
(1)如果n为6999,则p为__________。
(2)请在划线处填入合适的代码。
Private Sub Command1_Click()
Dim n As String,st As String,p As String
Dim k As Integer,i As Integer,j As Integer
n = Text1.Text
k = Len(n)
st = Mid(n,1,(k + 1)\2)
p = st
For i = k \2 To 1 Step -1
p = p + Mid(n,i,1)
Next i
If _____Then
i =(k + 1)\2
Do While i > 0
If Mid(st,i,1)= "9" Then _______
Else Exit Do
Loop
If i < 1 Then
p = "1"
For i = 2 To k
p = p + "0"
Next i
p = p + "1"
Else
p = Mid(st,1,i - 1)
p = p + Chr(Asc(Mid(st,i,1))+ 1)
For j = i + 1 To k - i
p = p + "0"
Next j
If ______Then p=p + Mid(p,i,1)
For j = i - 1 To 1 Step -1
p = p + Mid(p,j,1)
Next j
End If
End If
Text2.Text = p
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
下面是一个加密/解密程序。
加密的算法是:将原文中每个字符的ASCII码加上该字符在原文中的位置数(设字符在原文中是第n个字符,则其位置数是n被10除的余数,当余数为0时,其位置数为10。例如,原文字符串为“meetmeatsunset”,第一个字符“m”,其位置数为1,而“s”为第12个字符,其位置数是被10除的余数2,其余依次类推)作为密文字符的代码,再将密码字符逆序排列(例如ABCD,逆序排列为DCBA)即为密文。解密算法是加密算法的逆运算,运行效果如图所示。
(1)如图所示,如果原文中字母“g”后面添加字母“h”,按“加密”按钮后,字母“h”对应的密文为________。
   
(2)实现上述功能的VB程序如下,请在划线处填入合适代码。
Private Sub Command1_Click()    '加密
Dim enc As String, dec As String, i As Integer
Dim s As String, n As Integer
dec = Text1.Text
For i = 1 To Len(dec)
s =_______
n = i Mod 10
If n = 0 Then n = 10
enc = Chr(Asc(s) + n) & enc
Next i
Text2.Text = enc
End Sub
Private Sub Command2_Click()    '解密
Dim enc As String, dec As String, i As Integer
Dim n As Integer, s As String, p As Integer
enc = Text2.Text
n = Len(enc)
For i = 1 To n
s = Mid(enc, i, 1)
p =__________
If p = 0 Then_________
dec = Chr(Asc(s) - p) & dec
Next i
Text1.Text = dec
End sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
首页
上一页
下一页
尾页