10个数冒泡排序流程图_【代码调试】10月浙南联盟

听别人解释不如自己调试一下!复制,粘贴,调试,就是这么简单!

1. 下列表达式的值与其它三个选项不同的是(    )

A.Len("浙C-2020V")  B.Sqr(4)^3      C.5678 mod 1000\100     D.mid("2020/8/8",6,1)

【答案】D

2. 某算法的部分流程图如图所示。执行这部分流程,若输入i的值为5,则输出r的值为(    )

7a64efc18f699c8cd8ba748b36377fcf.png

A.11        B.9     C.7     D.5

【答案】B

3. 有如下VB程序段:

s="20210606"c1=6n=0For i=1 To Len(s)    c=Val(Mid(s,i,1))    if cnext i

运行该程序段后,n的值为(    ) 

A.0     B.2     C.6     D.8

【答案】B

4. 给定正整数n(1≤n≤26),要得到中间以"A"开始,两边各递增n-1个字符的对称字符串s,例如n=5, 则s="EDCBABCDE"。实现该功能的VB程序段如下:

n = Val(Text1.Text)s = ""For i = 2 * n - 1 To 1 Step -1    If i <= n Then        s = Chr(Asc("A") + n - i) + s    Else        s = Chr(Asc("A") + i - n) + s    End IfNext iText2.Text = s

5. 有如下VB程序段:

Dim a(1 To 6) As IntegerRandomizeFor i = 1 To 6    x = Int(Rnd() * 10) + 1    If i Mod 2 <> x Mod 2 Then        a(i) = x    Else        a(7 - i) = x    End IfNext i

执行程序后a数组各元素的值不可能是(    )

A.8,7,0,0,6,5       B.0,9,8,3,6,3       C.6,7,2,3,2,0       D.2,9,4,7,10,3

【答案】A

6. 有如下VB程序段:

Dim a(1 To 6) As IntegerFor i = 1 To 6    a(i) = Int(Rnd() * 9 + 1)Next iConst n = 6k = Int(Rnd() * 3)For i = 1 To 2    For j = 1 To n - i - k        If a(j) > a(j + 1) Then            t = a(j): a(j) = a(j + 1): a(j + 1) = t        End If    Next jNext i

执行上述程序段后,下列选项中,a(1)到a(6)各元素的值不可能是(    )

A.2,1,4,5,5,8       B.5,6,7,7,9,1       C.1,7,6,7,6,5       D.8,5,1,2,8,8

【答案】C

7. 有一组原来按升序排列的正整数,第p个至第q个数据(p和q的值分别由文本框Text1和Text2输入,且p)的区间被打乱,其他数据的位置不变,小陈首先依据冒泡排序的思想对该区间中的数据进行升序排序使得整组数据恢复升序排列,然后依据对分查找的思想在该组数据中查找满足[k1,k2](k1和k2的值分别由文本框Text3和Text4输入,且k1)范围的数据个数并显示在标签Labe11中。相关示例如下(其中p=4,q=7,k1=70,k2=80)。

99993983a504efc554906cfc400b409e.png

Private Sub Command1_Click()    Const n = 10    Dim a(1 To n) As Integer, k As Integer    Dim i As Integer, j As Integer, k1 As Integer, k2 As Integer    Dim p As Integer, q As Integer    Dim b As Integer    '查找满足条件的第一个数据所在数组元素的下标    a(1) = 55: a(2) = 70: a(3) = 70: a(4) = 78: a(5) = 71: a(6) = 79: a(7) = 75: a(8) = 80: a(9) = 80: a(10) = 90    p = Val(Text1.Text)    q = Val(Text2.Text)    For i = p To q - 1        For j = q To i + 1 Step -1            If a(j) < a(j - 1) Then                k = a(j): a(j) = a(j - 1): a(j - 1) = k            End If        Next j    Next i    k1 = Val(Text3.Text)    k2 = Val(Text4.Text)    i = 1: j = n    Do While i <= j        m = (i + j) \ 2        If a(m) < k1 Then            i = m + 1        Else            j = m - 1        End If    Loop    b = i    i = 1: j = n    Do While i <= j        m = (i + j) \ 2        If a(m) <= k2 Then            i = m + 1        Else            j = m - 1        End If    Loop    Label1.Caption = Str(j - b + 1)End Sub

8. 有一批货物,已知每件货物的重量和货架号,机器人在可承受的载量范围内,每趟按货物顺序连续装载尽量多的货物,并将各货物送到其货架号相应的货架上。如图a所示,货架构成是环形结构,货架是按顺时针方向从1到10进行编号,第10号货架(即图中A处)不装货物,机器人在A处装载货物。

每趟装载货物后,机器人按所装载货物的倒序配送货物,配送过程中尽可能走更短的路线,例如:某趟机器人所装载货物的货架号依次为:3,1,7,9,则机器人按倒序配送货物的路线如图a中带箭头虚线所示,配送完成后回到A处继续下一趟配送任务。

现要求在限定配送趟数内完成任务时,计算机器人所能承受装载的最大重量至少为多少?机器人完成所有趟数的配送任务并回到A点的总行程是多少?

小李编写VB程序实现上述功能:在列表框List1中按货物顺序显示其重量和货架号,在文本框Text1中输入机器人送货趟数,单击“结果”按钮Command1后,标签Labe13和Labe14中分别显示要求机器人可承受的最大载重最小值和送货总行程。程序运行界面如图b所示。

示例解读:第一趟货架号为8,第二趟货架号为3,1,7,9,第三趟货架号为9,2,第四趟货架号为3,第二趟的货物重量之和为20,其余趟的货物重量之和均小于20。每一趟,机器人在货架的运动路线要求最短。以第二趟为例,货架号为3,1,7,9,必需先放了9,才能放7,才能放1,才能放3,顺序不能颠倒,路线:A逆→9逆→7顺→1顺→3逆→A,这样运动路线最短。第一趟最短路线为4,第二趟最短路线为12,第三趟最短路线为6,第四趟最短路线为6,4+12+6+6=28。

63fcb635a2d275b321188012752b1437.png

Const num = 8 '货物数量Const shelf = 10 '货架数量,1-9号货架可供存储货物,第10号货架用作机器人装货点Dim g(1 To num) As Integer '各货物的重量Dim s(1 To num) As Integer '各货物的货架号Private Sub Form_Load()    g(1) = 19: g(2) = 4: g(3) = 2: g(4) = 6: g(5) = 8: g(6) = 13: g(7) = 6: g(8) = 16    s(1) = 8: s(2) = 3: s(3) = 1: s(4) = 7: s(5) = 9: s(6) = 9: s(7) = 2: s(8) = 3    For i = 1 To num        List1.AddItem Str(g(i)) + vbTab + Str(s(i))    Next iEnd SubPrivate Sub Command1_Click()    Dim i As Integer, j As Integer, n As Integer, max As Integer, total As Integer    Dim head As Integer, tail As Integer, dis As Integer, part As Integer    max = g(1)    total = g(1)    For i = 2 To num        If g(i) > max Then max = g(i)        total = total + g(i)    Next i    n = 0    For i = max To total        part = 0: n = 0: head = 1: dis = 0        For j = 1 To num            part = part + g(j)            If part > i Then                n = n + 1: j = j - 1: tail = j                dis = dis + tran(head, tail)                part = 0: head = tail + 1            End If        Next j        If part > 0 Then            n = n + 1            tail = num            dis = dis + tran(head, tail)        End If        If n <= Val(Text1.Text) Then Exit For    Next i    Label3.Caption = "机器人可承受的最大载量至少为:" + Str(i)    Label4.Caption = "机器人完成各趟任务的总行程为:" + Str(dis)End SubFunction tran(p As Integer, q As Integer) As Integer '计算机器人每趟按装货倒序配送并回到A处的行程    Dim temp As Integer, t1 As Integer, t2 As Integer, k As Integer    temp = 0: t2 = shelf    For i = q To p Step -1        t1 = t2: t2 = s(i)        k = (t2 - t1 + shelf) Mod shelf        If k > (shelf + 1) \ 2 Then k = shelf - k        temp = temp + k    Next i    If t2 <= shelf \ 2 Then temp = temp + t2 Else temp = temp + shelf - t2    tran = tempEnd Function
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值