学进去-教育应平等而普惠
排序:
414道相关试题
用英文字母A~D数字字符0~9进行编码,编码规则如下表所示:

数字字符

0

1

7

8

9

二进制值

0

0

0

0

0

0

0

1

0

1

1

1

1

0

0

0

1

0

0

1

对应编码

A

A

A

B

B

D

C

A

C

B


例如,数字字符串“718”的编码为“BDABCA”。
用Python程序实现上述编码,功能如下:输入待编码的一串数字字符,输出编码结果,程序运行界面如下图所示。

实现上述功能的Python程序如下,请回答下列问题:
(1)运行该程序,若输入的数字字符串为“5736”,则输出的编码结果为_____________
(2)请在程序划线处填入合适的代码。
def dtob(x):
st="
for i in range(4):
r=x%2
_____________             
x=x//2
return st
code={'00':'A','01':'B','10':'C','11':'D'}
s=input('请输入数字字符串:')
result="
for i in range(len(s)):
_____________             
if '9'>=ch>='0':
ans=dtob(int(ch))
_____________             
else:
Break
if result!=":
print('编码结果为:',result)
else:
print('输入有误!')
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
某公司的货车从1号站点出发驶向n号站点(n<=100),给途径的站点运送货物。每个站点都有货物要送到后续的某一个站点。货车运送货物的费用取决于货车上当前的货物重量。货车从第i号站点出发到达i+1号站点的费用计算标准如下:

车上最重货物的重量*0.8+车上其余货物的总重量

已知每个站点所需运送的货物的重量和目标站点,小明编写了一个VB程序计算货车从1号站点到达第n号站点的货运费用总额,程序运行界面如图所示。


算法提示:为提高算法效率,小明使用数组d和数组q按货物送达目标站点的先后厢序的顺序记录相关信息。第x件送达站点的货物的序号为d(x),该货物送达目标站点时本上最重的货物的重量为q(x)。

若各个站点货物的送达站点和重量信息如图所示,货车到达各个站点时数组d和数组q的状态如下。

站点1出发


数组d:                  1
数组q:                  5

将第1件货物

信息保存


下一站费用:5*0.8=4

到达站点2

2、1

7、5

放货物2

最重重量为7

7*0.8+5=10.6

到达站点3

2、3、1

7、5、5

货物2下车

放货物3

最重重量为5

5*0.8+3=7

到达站点4

2、3、1、4

7、5、10、10

货物3下车

放货物4

最重重量为10

10*0.8+5=13


合计费用:4+10.6+7+13=34.6

(1)若有4个站点,货物送达站点顺序为4、3、4,重量分别为9、7、10,则费用合计_______
(2)请在划线处填入合适的代码。
Const n = 100
Dim f(n) As Integer, w(n) As Integer, q(n) As Integer, d(n) As Integer
’数组f保存送达站点,数组w保存货物重量
Dim sum As Integer, ans As Double, i As Integer, st As Integer,t As Integer
Private Sub Form_Load()
’读取1~n每个站点的送达站点和货物重量,依次存放在数组f和数组w中
End Sub
Private Sub Command1_Click()
   sum = 0: ans = 0: st = 1
   For i = 1 To n - 1
       ’装载第i站点的货物,更新数组d和数组q
        ____
t = w(i)
Do While f(d(k-1)) > f(i)
   d(k) = d(k – 1)
   q(k) = q(k – 1)
   If q(k – 1) > t Then t = q(k – 1)
   k = k – 1
Loop
d(k) = i
       q(k) = w(i)
       Do While _____      And k > =st
          q(k) = w(i)
          k = k – 1
Loop
’卸载货物
Do While f(d(st)) = i
   sum = sum – w(d(st))
   st = st + 1
Loop
’计算费用
sum = sum + w(i)
ans = ans + q(st) * 0.8 + _____     
   Next i
   Labell.Caption = “共需费用:” + Str(ans)
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
某城市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案:

在搭乘一次地铁后可以获得一张面额为本次地铁价格的优惠券,有效期为60分钟,在有效期内可以使用这张优惠券,免费搭乘一次票价不超过这张优惠券的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于60分钟。搭乘地铁获得的优惠券可以累积,即可以连续搭乘若干次地铁后再连续使用优惠券搭乘公交车,但每次搭乘公交车只能使用一张优惠券。搭乘公交车时,如没有合适的优惠券,则自己全额支付;如果有多张优惠券满足条件,则优先消耗获得最早的优惠券。

小叶同学根据优惠政策,编写了计算优惠后需要支付费用的程序,同时将乘车记录按时间先后顺序逐行显示。在Text1里输入乘车记录的数量n,Text2里输入n组数据,每组乘车记录有3个数据,依次是车型(1表示地铁、2表示公交)、开始乘车时间、乘车票价。每个数据以逗号结尾。不会有两次乘车记录出现在同一分钟。数组d存储乘车记录的结构如图a所示:

第1条乘车记录

第2条乘车记录

……

数组中的位置

1

2

3

4

5

6

……

对应的值

2

200

3

1

3

7

……

车型

开始时间

票价

车型

开始时间

票价

……


程序界面如图b所示:
图b
(1)在VB表达式Val(Text1.Text)中,Val、Text1、Text依次表示________(单选,填字母:A.方法名、属性名、事件名/B.函数名、对象名、方法名/C.函数名、对象名、属性名)。
(2)实现上述功能的程序如下,请在划线处填入合适的代码。
(3)程序中加框处代码有误,请改正。
Dim yh(1 To 100)As Integer,flag(1 To 100)As Boolean,dt As Integer
Dim d(1 To 100)As Integer’存储乘车的记录
Private Sub Command1_Click()
   Dim i As Integer,j As Integer,k As Integer
   Dim sum As Integer,n As Integer,c As String,s As String
   n=Val(Text1.Text):s=Text2.Text:j=1:k=1
   For i=1 To Len(s)
     c=Mid(s,i,1)
     If c="," Then
       ___
       j=i+1:k=k+1
     End If
   Next i
   For i=1 To n-1
     For j=3*n-1 To ___Step-3
If d(j)<d(j-3)Then
   temp=d(j+1):d(j+1)=d(j-2):d(j-2)=temp
   temp1=d(j):d(j)=d(j-3):d(j-3)=temp1
          temp2=d(j-1):d(j-1)=d(j-4):d(j-4)=temp2
       End If
     Next j
   Next i
’按行输出乘车记录,代码略
   dt=0
   For i=1 To k-1 Step 3’yh(dt)存储第dt张优惠券的乘车记录在数组d中的起始位置
        If d(i)=1 Then dt=dt+1:yh(dt)=i
     Next i
     sum=d(3)
     For i=2 To n
       For j=1 To dt
          If yh(j)\3<i Then
             If(d((i-1)*3+1)=2)And(d((i-1)*3+2)-d(yh(j)+1)<=60)And flag(j)=False And()Then___
                  flag(j)=True:Exit For
             End If
          End If
        Next j
        If j=dt+1 Then sum=sum+d(3*i)
     Next i
     Label1.Caption=Text1.Text+"次乘车支付的总费用是:"Str(sum)
   End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
小王基于冒泡排序算法编写了一个VB程序,实现数据分段排序。功能如下:在文本框Text1中输入产生的数据个数,单击“产生原始数据”按钮Command1,随机产生若干个不重复的整数依次存储在数组a中,并显示在文本框Text2中。在文本框Text3中输入每段数据的元素个数及排序的次序(0表示升序,1表示降序),数据之间用空格隔开,提取数据后,依次存储在数组b中。单击“排序”按钮Command2,根据要求输出数据排序的结果。部分运行界面如图所示。

(1)若在文本框Text1中输入“10”,文本框Text2中显示“29 25 95 52 50 38 46 51 23 44”,在文本框Text3中输入“3 1 4 0 3 0”,则排序后数据序列为_____(单选,填字母)。
A. 25 29 95 52 50 46 38 51 44 23             B. 95 29 25 38 46 50 52 23 44 51
C. 95 29 25 38 46 50 52 51 44 23                    D. 23 25 29 38 44 46 50 51 52 95
(2)请在划线处填入合适的代码。
Dim a(1 To 100) As Integer
Dim b(1 To 100) As Integer
Dim n As Integer
Function sort(x As Integer, m As Integer, k As Integer) As Integer
Dim r As Integer, t As Integer
Dim i As Integer, j As Integer
If k = 0 Then k = -1
For i = 1 To m - 1
       For j = x To x + m - 1 - i
             If   __________   Then
                    t = a(j)
                    a(j) = a(j + 1)
                    a(j + 1) = t
             End If
       Next j
Next i
sort = x + m
End Function
Private Sub Command1_Click()
n = Val(Text1.Text)
'产生n个不重复的随机整数依次存储在数组元素a(1)到a(n)中,并显示在文本框Text2
代码略
End Sub
Private Sub Command2_Click()
Dim y As Integer, d As Integer, c As Integer
Dim st As String, s As Integer
y = 1
st = Text3.Text
For i = 1 To Len(st)
       ch = Mid(st, i, 1)
       If ch >= "0" And ch <= "9" Then
             __________
       Else
             If y Mod 2 = 1 Then s = s + b(y)
             y = y + 1
       End If
Next i
If s <> n Then
       MsgBox ("排序数据量与数据总量不相等")
Else
       c = 1
       d = 1
       Do While d <= n
             d = __________
             c = c + 1
       Loop
       For i = 1 To n
             Text4.Text = Text4.Text + Str(a(i))
       Next i
End If
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
某影厅共 12 排,每排 10 座。座位编号以排号+座号来命名,如第 10 排 3 座,编号命名为 103。该影厅的最佳观影区为方框内的座位,即第 5 排 3 座~第 10 排 8 座的矩形位置。0 表示该座位可选,非 0 表示已售(1 表示系统推荐,2 表示手工选择)。
座位推荐算法:
1)只推荐最佳观影区的座位,从前往后,优先选择最中间的位置,若找到最中间位置,则推荐,否则继续寻找下一排,以此类推;
2)购票数为 1 时,推荐单个靠中间的位置,大于 1 时,只推荐连续的座位;
3)若在最佳观影区内未找到可以推荐的座位时,系统将提示手工选择。
编写 VB 程序,模拟电影院选座。在文本框 Text1 中输入购票数,单击“选座”按钮Command1,在标签 Label2 中显示机选座位。程序运行界面如图所示。

(1)该影厅空座情况不变如上图所示,若购票数由 2 改为 1,则推荐的座位编号为____
(2)实现上述功能的 VB 程序如下,请在划线处填写合适的代码。

Const C = 10: Const R = 12       '每排 10 座,共 12 排


Dim zw(1 To C * R) As Integer, kzw(1 To C * R) As Integer       '座位,空座位Private Sub Form_Load()
'读取影厅座位数据存入数组 zw,并将座位信息显示在列表框 List1 中,代码略End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
Dim x As Integer, min As Integer, start As Integer Dim m As Integer, n As Integer, ans As String
m = Val(Text1.Text)       '购票数,确保数值在座位数以内
n = 0       '空座位的个数

For i = 5 To 10       '统计最佳观影区中的空座位编号

For j = 3 To 8

If zw((i - 1) * C + j) = 0 Then

n = n + 1

kzw(n) =_____

End If

Next j


Next i
min = C: start = 0: k = 1
Do While k + m - 1 <= n
If kzw(k) + m - 1 = kzw(k + m - 1) Then
x = Abs(C \ 2 - (kzw(k) + kzw(k + m - 1)) \ 2 Mod C)
If x < min Then

min = x


start = k       '记录满足座位条件的起始空位号
If min = 0 Then Exit Do       'Exit Do 表示退出循环

End If


End If
_____
Loop
ans = ""
If start = 0 Then

ans = "未能推荐座位,请手工选座"

Else


For i = kzw(start) To_____
'CStr 函数把表达式转换为字符串,不产生前置空格

ans = ans + "第" + CStr(i \ C + 1) + "排" + CStr(i Mod C) + "座 "

Next i


End If Label2.Caption = ans
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
某校举办技术学科统测,参加统测的每个学生有班级序号、姓名(字母缩写)和统测的技术成绩。现需整理统测数据,要求是:先按班级序号从小到大排列;然后,同一班级的学生按技术成绩从大到小排列。按上述要求,编写一个VB程序,功能如下:在列表框List中显示整理前的数据,单击“整理”按钮Commandl1,整理结果显示在列表框List2中,程序运行界面如图所示。

(1)将数组元素d(1)到d(640)分为16段,如果每段恰好包含40个元素,采用选择法排序算法分别对每段中的元素进行排序,整个排序过程中,数组元素之间的比较次数是_______(单选,填字母:A.640×639/2次/B.16×40×39/2次/C.40×16×15/2次)。
(2)请在划线处填入合适的代码。

Const n=640 '参加统测总学生数

Const nc =16 '班级数


Dim class(1 To n) As Integer, sname(1 To n)As String, score(1 To n) As Integer
Dim b( To nc) As Integer        '存储每个班级的参加统测人数

Dim c(1 To nc) As Integer

Dim d(1 To n)As Integer

Private Sub Form_Load()


'本过程读取每个参加统测学生的班级序号、姓名和统测成绩分别存储在数组class,sname和 score中并在List1中显示,代码略
     End Sub

Private Sub Command1_Click()


         Dim i As Integer,j As Integer,k As Integer

For i = 1 To nc

b(i) = 0

Next i

For i = 1 To n           '统计每个班级统测人数

______      

Next i

k = 1


         For i = 1 To nc

c(i) = k


             k = k + b(i)

Next i

For i = 1 To n

k = class(i)

_______       

c(k) = c(k) + 1

Next i

For i = 1 To nc        '对各班级按统测成绩进行排序

Call px________       ,c(i)-1))

Next i


         For i = 1 To n
      List2.AddItem " " & class(d(i)) & " "& sname (d(i)) & " " & score(d(i))
        Next i

End Sub

Private Sub px(head As Integer, tail As Integer)

Dim i As Integer, j As Integer, t As Integer

For i = head To tail - 1

     For j = tail To i + 1 Step -1

        If ________        Then

           t = d(j): d(j) = d(j - 1): d(j - 1) = t

        End If

      Next j

Next i

End Sub

类型:操作题
难度系数:困难0.15
收藏
纠错
详情
【加试题】用一个6*5矩阵表示地图,分别用a数组元素表示,第1行从左到右为a(1)到a(6),依次类推,右下角为a(30)。其中数字0表示不通,数字1I表示畅通。现在要从左上角到右下角寻找一条畅通的路径。线路规则如F:
•路线每个位置只能向右或向下
•任何一个岔口优先向右走,右侧不通再向下走
•一条路线中每个位置只能走一次,不能重复
算法思路:探路过程中,记录每个位置坐标到数组lu;遇到岔路口(向右向下都通),则记录路口坐标到数组cha;遇到前方无路时,需要返回到上一个路口,标记路口右侧不通;当前方无路,岔路口数组也退回到0,说明整体不通,否则根据规则走到右下角为止,最后输出整体线路坐标。
实现算法的程序如下,运行结果如图所示。
回答下列问题:
(1)根据规则,如图迷宫矩阵正确路线的第6个位置是a数组的第_________个元素(填数字)

(2)在程序划线处填上合适代码,使程序完整。
Dim a(1 To 50) As Integer
Private Sub Command1_Click()
Dim i As Integer,j As Integer,pos As Integer

Dim cha(1 To 10)As Integer'记录一条路线中各个岔路口

Dim lu(1 To 10) As Integer’记录路线经过的位置

pos=1:j=0:lu(1)=1:i=1

Do While i <=9‘第1个和最后1个固定,中间有9个需要路过的路径点

If pos Mod 6<>0 And a(pos+1)=1 Then' 向右畅通

If pos+6 <=30 and a(pos+6)=1 Then‘记录岔路口

j=j+1

_____________

End If

pos=pos+1

i=i+1

1u(i)=pos

Else If pos+6 <=30 And a(pos+6)=1 Then’向下畅通

pos=pos+6

i=i+1

lu(i)=pos

Else’坐标退回到上一个岔路口

If j=0 Then Exit Do

Do While lu(i)<>cha(j)

_____________

Loop

a(cha(j)+1)=0’标记此路口右侧不可用

_____________

j=j-1

End If;

Loop

If j=0 Then

Text1.Text="没有畅通道路"

Else

For i=1 To 10

Text1.Text=Text1.Text+Str(lu(i))

Next i

End If

End Sub

Private Sub Form_Load()

‘生成图形矩阵的数组a各个元素,并在列表框显示,代码略

End Sub

类型:操作题
难度系数:困难0.15
收藏
纠错
详情
某校举行学生篮球比赛,整场比赛分为4节,A、B两队得分分别用正负数来区分,每次进攻可能得1分、2分、3分.整场得分情况如下(每次得分用逗号间隔):
“11,12,13,1—2,13,……4—2,4—3,4—2,4—2,”,每组第1位数表示第几节,后续的数表示得分.如“3—2”表示第3节B队得2分,“31”表示第3节A队得1分。
编写VB程序,统计出AB两队中连续进攻得分次数最多的节次、队伍以及次数(若次数相同取第1个).运行程序,在标签Label1中显示结果,程序界面如图所示。

(1)观察程序运行界面,统计第1节中连续进攻得分次数最多的队伍及次数______
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码.
Const n = 200
Dim c(1 To n) As String
Private Sub Command1_Click()
Dim a(1 To n) As Integer, b(1 To n) As String
Dim i As Integer, k As Integer, imax As Integer, m As Integer, pos As Integer, P As
String, s As String, ch As String, t As String
s = Text1.Text: k=1
For i= 1 To Len(s) ’获取数据

ch = Mid(s, i, 1)

If ch < >“,” Then

t=t+ch

Else

a(k) = Va1 (Mid(t, 1, 1))

b(k) =___

c(a(k)) = c(a(k)) + b(k)

t= “” :k=k+1

End If


Next i
imax=0:pos=0
For i=1 To 4

m = cs(i)

If ___ Then imax = m: pos= i


Next i
If imax > 0 Then p = “A” Else p= “B”
Label1. Caption = “连续进攻得分次数最多的队伍是” + p + “队的第” + Str(pos) + “节,次数为” + str(bs(inmax))
End Sub
Function cs(a As Integer) As Integer ’统计每节连续进攻得分最多的次数

Dim sa As String, mark As Integer, maxd As Integer, cnt As Integer, i As Integer

maxd=0:mark=0:cnt=0:i=1

Do While i <= Len(c(a))

sa = Mid(c(a), i, 1)

If sa = “-” Then

If mark = 1 Then

If Abs(cnt) > Abs (maxd) Then maxd = cnt

cnt = -1

Else

___

End If

i=i+2

mark = -1

Else

If mark = -1Then

If Abs(cnt) > Abs (maxd) Then maxd = cnt

cnt=1

Else

cnt=cnt+1

End If

i=i+1

mark = 1

End If

Loop

If Abs(cnt) > Abs (maxd) Then maxd = cnt

cs = maxd


End Function
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
有2k个同学参加比赛,每天安排若干场比赛,且每位同学每天仅参加一场比赛,试给出一种赛程安排表,使得2k-1天内任意两个同学都至少比赛过一场。
按照比赛要求,可以设置赛程表为n行n-1列的二维表,其中第i行第j列的元素表示和第i个选手在第j天进行比赛的同学编号。
若k=1,则赛程表如下:

若k=2,则赛程表如下:

观察两个表不难发现:
①第二个表的左上角和右下角与第一个表相同;
②第二个表的左下角和右上角相同,恰好是第一个表各元素值加2。
因此可以通过第一个表来构造第二个表。同理可得,当n=2k 个同学的比赛日程表,可以通过n=2k-1 个同学的比赛日程表构造得到。
请回答下列问题:
(1)若k=3,则和第5个选手在第7天进行比赛的同学编号为________
(2)补充①、②、③处代码实现上述功能。
Private Sub Command1_Click()
Dim a(1 To 10000) As Integer
Dim n As Long, tmp As Long, i As Integer, j As Integer, t As Integer
a(1) = 1 : n = 1
k = Val(Text1.Text)
For t = 1 To k
       ________        
       n = n * 2
       For i = tmp + 1 To n                    
             For j = 1 To tmp
                    ________        
             Next j
       Next i
       For i = ________                            
             For j = tmp + 1 To n
                    a((i - 1) * 2 ^ k + j) = a((i + tmp - 1) * 2 ^ k + (j + tmp) Mod n)
             Next j
       Next i
       For i = tmp + 1 To n               
             For j = tmp + 1 To n
                    a((i - 1) * 2 ^ k + j) = a((i - tmp - 1) * 2 ^ k + j - tmp)
             Next j
       Next i
Next t
For i = 1 To n
       st = ""
       For j = 1 To n
             st = st + Str(a((i - 1) * 2 ^ k + j))
       Next j
       List1.AddItem st
Next i
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
学校有2个选考技术的班级,张老师在每个阶段都会格外关注成绩第二好的那个同学,以激励他上进。每次测验结束后,张老师总是先把两个选考班的分数分别统计和录入,然后分别按从低到高进行排序,最后合并汇总两个有序的选考班成绩。操作过程如下图所示:

请回答下列问题:
(1)实现两个选考班分别排序的事件处理过程名为________
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
(3)程序中加框处代码有错,请改正。
Dim g1(201) As Integer, g2(201) As Integer
Dim xh(201) As Integer, xh2(201) As Integer
Const num = 101          '选考总人数
Dim n, m As Integer       'g1人数为n,g2人数为m
Private Sub Cd1_Click()             '合并汇总
nu = num
Do While m >= 1
       Do While ___________
             t = g1(nu): g1(nu) = g1(n): g1(n) = t
             xh2(nu) = xh(2 * n - 1) : n = n – 1 : nu = nu - 1
       Loop
       t = g1(nu): g1(nu) = g2(m): g2(m) = g2(nu)
       xh2(nu) = xh(2 * m) : nu = nu – 1 : m = m - 1
Loop
'处理学号
For i = 1 To n
       ___________
Next i
'显示合并结果
For i = 1 To num
       List3.AddItem xh2(i) & "     " & g1(i)
Next i
'选出成绩第二好的同学
mxgrade = g1(num)
For i = num - 1 To 1 Step -1
       If g1(i) <> mxgrade Then Exit For
Next i
If i<>0 Then

Label1.Caption = "学号为:" & xh2(i) & "的同学,本次测试成绩第二,分数为:" & g1(i)


End If
End Sub
Private Sub Command2_Click()
For i = 1 To num \ 2
       '对g1同学的成绩进行排序
       For j = 1 To num \ 2 - i + 1 * (num Mod 2)
             If _______ Then
                    t = g1(j): g1(j) = g1(j + 1): g1(j + 1) = t
                    t = xh(2 * j - 1): xh(2 * j - 1) = xh(2 * j + 1): xh(2 * j + 1) = t
             End If
Next j
'对g2同学的成绩进行排序,代码略
Next i
'在列表框中输出g1和g2学生的学号及其对应的成绩,代码略
End Sub
Private Sub Form_Load()
'代码略,从数据库中导入所有选考学生数据,共num个人,并做如下处理:
'1.学号为奇数的同学录入g1班级,共n人
'2.学号为偶数的同学录入g2班级,共m人
End Sub
类型:操作题
难度系数:困难0.15
收藏
纠错
详情
首页
上一页
下一页
尾页