4.3 运用选择结构描述问题求解过程 知识点题库

编写VB程序,实现如下功能:在文本框Text1中输入二进制数,单击“转换”命令按钮Command1,在文本框Text2中输出对应的十六进制数。程序运行界面如图所示,请回答下列问题:

  1. (1) 如果输入的二进制数为“1101010”,则得到的结果为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Private Function bw(x As Integer, y As String) As String

    '函数bw功能:若二进制位数不足,通过在前面添"0"使得位数为4的倍数

      Dim r As Integer, i As Integer

      r = x Mod 4

      If r <> 0 Then

        For i = 1 To 4 - r

          y = "0" + y

        Next i

        x = Len(y)

      End If

      bw =

    End Function

    Private Sub Command1_Click()

      Dim m As String, n As Integer, i As Integer, a As Integer

      Dim s As Integer, s1 As String, j As Integer

      m = Text1.Text

      n = Len(m)

      Text2.Text = ""

      m =       '调整m的位数为4的倍数

      For i = 1 To n - 3 Step 4

        s = 0

        For j = i To i + 3

          a = Val(Mid(m, j, 1))

          s =

        Next j

        If s >= 10 Then

          s1 = Chr(Asc("A") + s - 10)

        Else

          s1 = CStr(s)      '函数CStr类似于Str,但无前导空格

        End If

        Text2.Text = Text2.Text + s1

      Next i

    End Sub

有如下VB程序:

a=2

b=a+5

If a Mod b=2 Then

  a=a+2

  b=a+b

End If

b=b+2

Text1.Text=Str(b)

该程序运行后,文本框Text1上显示的内容为

下列程序执行后,变量s的值是(  )

s=1

For i=1 To 20

  If i Mod 5=0 Then

  s=s+i

  End If

Next i

A . 50 B . 51 C . 31 D . 30
编写寻找最长等差数列程序时,先随机生成n(n=20)个互不相同的整数,并降序排列后显示在List1中,找出由连续的数组元素构成的最长等差数列,并将其输出在列表框List2中(若长度相等,则输出靠前的一组),程序运行界面如图所示。

实现上述功能的VB程序如下。

Dim a(1 To 20)As Integer

Dim n As Integer

Private Sub Command1_Click( )

‘随机生成20个互不相同的整数,存储在数组a中,n记录了整数的个数,代码略

End Sub

Private Sub Command2_Click( )

  Dim t,max,w As Integer

  Dim i,c As Integer

  max=1:w=1

  i=2:t=2

     ①   

  Do While i<n

      If a(i+1)-a(i)=c Then

        t=t+1

        If t>max Then

          max=t

             ②   

        End If

      Else

        t=2

        c=a(i+1)-a(i)

      End If

      i=i+1

Loop

If max>2 Then

For i=   ③   To w

        List2. AddItem Str(a(i))

    Next i

Else

    List2. AddItem"没有找到等差数列"

End If

End Sub

以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③

编写一个Python程序,实现功能:输入一个三位数,将该三位数各位上的数字重新排列得到一个新的三位数,求这些三位数中最大的三位数和最小的三位数。如输入123 ,输出最大数321、最小数123。
某市公共自行车24小时内租车收费标准为:每次1小时内免费,超时后按1元/小时收取(超时不足1小时按1小时计),24小时内最高限额为10元。
  1. (1) 若用变量pay存储租车费用,用变量time存储租车时间,根据题中的收费标准,租车费用pay与租车时间time之间的关系可用数学公式描述为
  2. (2) 公共自行车租车费用pay的计算可用解析算法,具体描述如下,请补充完善。

    ①给定24小时内的租赁起始时间和结束时间:输入租赁开始的时间和结束的时间。注:时间的输入格式为hh:mm:ss,如10:23:11。

    ②计算租车时间time:计算租车起始时间和结束时间的时间差time。

    ③计算租车费用pay:若time小于等于1,则pay为0;若,则pay为time;若time大于10, 则pay为10。

  3. (3) 编写程序。用变量stime、etime、time、pay分别存储租车开始时间、租车结束时间、租车时间和租车费用。计算公共自行车租赁费用的某Python程序如下,请在划线处填入相应代码,实现程序功能。

    Stime=input('租车开始时间:')

    etime=input('租车结束时间:')

    #stime.split(":")[0]切出的是租车开始时间的时

    #stimespli(":")[1]切出的是租车开始时间的分

    #stime.split(":")[2]切出的是租车开始时间的秒

    if int(etime. split(":")[0])>=int(stime.split(":")[0]):

    time=int(etime. split(":")[0])-int(stime.spilt(":")[0])

    if int(etime.split(":")[1]>int (stime.split(":"))[1):

        time=time+1

    elif int (etime.split(":")[1])= int(stime.split(":")[1]) and int(etime.split(":")[2]>= int(stime.split(":")[2]):

        time= time+1

    if time<=1:

        pay=0

    elif

        pay=time

    else:

         

    print(pay)

  4. (4) 完善该程序后,运行程序,输入租车开始时间为“9:40:6”,租车结束时间为“15:35:32”,则程序运行结果为
x的范围为(0 255),下列选项中,与语句"n=x\128"功能相同的是(    )
A . n=0 If x> 128 Then n= 1 B . n=0 If x<128 Then n=1 C . n= 1 If x<128 Then n=0 D . n=1 If x>128 Then n=0
编写VB程序,实现两位数a与b相乘的运算,其算法如下:

1)将被乘数a转换为二进制数;

2)将转换后的二进制数中每个数码乘以对应的权值,再乘以乘数b;

3)最后将各乘积相加,得到a与b相乘的结果。

图a显示了13与11相乘的过程:

 

在文本框Text1中依次输入被乘数与乘数(输入的字符仅限于数字字符、“*”及“/”,每两个乘数间用“/”分隔,并以“/”结尾),单击“计算”按钮Command1后,将计算结果

依次显示在文本框Text2中。程序运行界面如图b所示。

  1. (1) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Private Sub Command1_Click()

        Dim a As Integer, b As Integer, qz As Integer, sum As Integer

        Dim tx As String, c As String, tmp As String

            tx = Text1.Text: tmp=""

            n = Len(tx):sum = 0

            For i = 1 To n

                c = Mid(tx, i, 1)

                If c >= "0" And c <= "9" Then

                   

                ElseIf c = "*" Then

                    a = Val(tmp): tmp = ""

                Else

                    b = Val(tmp): tmp = ""

                End If

                If  Then

                qz = 1

                Do While a > 0

                    x = a Mod 2

                   

                    qz = qz * 2

                    a = a \ 2

                Loop

                s = s & Str(sum)

                a = 0: b = 0: sum = 0

            End If

        Next i

        Text2.Text = s

    End Sub

  2. (2) 程序中加框处代码有错,请改正。
  3. (3) 若文本框Text1中输入内容的结束符缺失(输入内容为13*10/15*20/16*20),单击“计算”按钮后,则上图中文本框Text2中显示内容为:
一个三角形的三边长分别是a、b、c,那么它的面积为 ,其中p= 。输入这三个数字,计算三角形的面积,四舍五入精确到1位小数。保证能构成三角形,0≤a,b,c≤1000,每个边长输入时不超过2位小数。
为统计某股票一年内共200个交易日收盘价中连续20个交易日的最大波动值(即连续20个交易日内的最高收盘价-最低收盘价)。数组元素a(1)~a(200)按时间先后顺序分别存储200个交易日的收盘价。编写如下VB程序实现上述功能:

max = 0

For p =

    amin = a(p): amax = a(p)

    i = p + 1: j = p + 19

    Do While

        If a(i) > a(j) Then

            If a(i) > amax Then amax = a(i)

            If a(j) < amin Then amin = a(j)

        Else

            If a(i) < amin Then amin = a(i)

            If a(j) > amax Then amax = a(j)

        End If

        i = i + 1: j = j - 1

    Loop

    If  Then max = amax - amin

Next p

Text1.Text = "最大波动值为:" + Str(max)

上述程序段3个方框处的语句分别为(    )

A . ①1 To 181 ②i <= j ③max < amax - amin B . ①1 To 181 ②i < j ③max > amax - amin C . ①1 To 180 Step 20 ②i <= j ③max < amax - amin D . ①1 To 180 Step 20 ②i < j ③max > amax - amin
小轩的绿色出行花费:某著名旅游城市H市为了鼓励大家采用公共交通方式绿色出行,推出了一种地铁换乘公交车的优惠方案,方案具体细则如下:

①在搭乘一次地铁后可以获得一张优惠票,有效期为45分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于45分钟,即:t_bus-t_ subway <=45

②搭乘地铁获得的优惠票可以累积,即可以连续搭乘若干次地铁后再连续使用优惠票搭乘公交车。

③搭乘公交车时,如果可以使用优惠票一定会使用优惠票;如果有多张优惠票满足条件,则优先消耗获得最早的优惠票。

小轩同学编写了VB程序计算最近公共交通出行的费用,程序运行时,在文本框Text1中输人小轩的公共交通出行记录(各数之间以逗号分隔),单击“获取数据”按钮Command1将数据按顺序存储在数组a中并在List1中显示。其中第i条出行记录乘坐的交通工具存储在数组元素a(3*i-2)中,0代表地铁,1代表公交车;第i条记录乘车的票价存储在数组元素a(3*i-1)中;第i条记录开始乘车的时间(距0时刻的分钟数)存储在数组元素a(3* i)中。如小轩最近6条乘车记录的数据为0,5,1,0,20,16,0,7,23,1,18,31,1,4,38,1,7,68在数组a中的存储结构如下表所示。

a(1)

a(2)

a(3)

a(4)

a(5)

a(6)

……

a(16)

a(17)

a(18)

0

5

1

0

20

16

……

1

7

68

单击“计算”按钮Command2,则在标签Label2中显示小轩同学的公共交通出行总费用。程序运行界面如图所示。

  1. (1) 若小轩的出行数据如上表所示,则小轩此次出行总花费为。(填数字)
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适代码。

    Const maxn= 1005

    Dima(1 To 3 * maxn) As Integer

    Dim ticket(1 To 3 * maxn) As Integer

    Dim i,n,k,x,y,cost As Integer

    Dim tail,head As Integer

    Dim s As String

    Dim found As Boolean

    Private Sub Command1_Click()

        s= Text1.Text

        k= 1

        For i=1 To L en(s)

            c= Mid(s,i,1)

            If c="," Then k=k+1 Else

        Next i

        '将各条出行数据输出在列表框List1中,代码略

    End Sub

    Private Sub Command2_ Click()

        head=1:tail= 1

        For i=1 To k\ 3

            If a(3 * i-2)=0 Then

                cost= cost+a(3 * i-1)

                ticket(3 * tail)=a(3 * i)+45

                

                tail= tail+1

            Else

                Do While head < tail And ticket(3 * head) < < a(3 * i)

                    head= head+1

                Loop

                

                If found= False Then cost=cost+a(3 * i-1)

            End If

        Next i

        Label2.Caption= Str( cost)

    End Sub

    Function pd(x As Integer, y As Integer) As Boolean

        pd= False

        For j=x Toy

            If ticket(3 * j-1) >=a(3 * i-1) And ticket(3 * j-2)=0 Then

                pd=True

    ticket(3 * j-2)=1

                Exit Function

            End If

        Next j

    End Function

星星设计了10*10的矩阵,如下图所示:

实现此功能的VB程序段如下,已知程序中两处标记①的位置表达式相同,程序中①、②两处表达式为(  )
Dim a(1 To 100) As Sting

For i= 1 To 10

    For j=1 To 10

        If i=j Or i Mod 10=0 Or i Mod 10= 1

        Then

            a(  ①  )="●"

        Else

            a(  ①  )="○"

        EndIf

    Next j

Next i

For i= 1 To 100

    s=s+ a(i)

    If   ②   Then

        List1.Addltem s

    End If

Next i

A . ①(j-1)*10+i                     ②i mod 10=1 B . ①(i-1)*10+ j                    ②i mod 10=1 C . ①(j-1)*10+ i                   ②i mod 10=0 D . ①(i- 1)*10+j                    ②i mod 10=0
用一个6*5矩阵表示地图,分别用a数组元素表示,第1行从左到右为a(1)到a(6),依次类推,右下角为a(30)。其中数字0表示不通,数字1表示畅通。现在要从左上角到右下角寻找一条畅通的路径。线路规则如下:

l  路线每个点只能向右或向下

l  任何一个岔口优先向右走,右侧不通再向下走

l  一条路线中每个点只能走一次,不能重复

算法思路:探路过程中,记录每个坐标到数组lu;遇到岔路口(向右向下都通),则记录路口坐标到数组cha;遇到前方无路时,需要返回到上一个路口,标记路口右侧坐标为0;当前方无路,岔路口数组也退回到0,说明整体不通,否则根据规则走到右下为止,最后输出整体线路坐标。

实现算法的程序如下,运行结果如图所示。

回答下列问题:

  1. (1) 根据规则,如图迷宫矩阵正确路线的第6个点是a数组的第个元素(填数字)
  2. (2) 在程序划线处填上合适代码,使程序完整。

    Dim a(1 To 50) As Integer

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer, zb As Integer

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

        Dim lu(1 To 10) As Integer        ‘记录路线经过的坐标

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

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

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

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

                    j = j + 1

                    

                End If

                zb = zb + 1

                i = i + 1

                lu(i) = zb

            ElseIf zb + 6 <= 30 And a(zb + 6) = 1 Then    ‘向下畅通

                zb = zb + 6

                i = i + 1

                lu(i) = zb

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

                If j = 0 Then Exit Do

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

                        

                    Loop

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

                    

                    j = j - 1

                End If

            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()

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

    End Sub

小安需要在一个n*n(4<=n<=10)的房间里使用黑白两种地砖铺设房间,要求相邻的两块地砖颜色都不同。房间里会随机产生m(m<=10)根柱子,如果最后黑白两种地砖使用的数量相同,就认为可以铺满整个房间。小安将a数组元素值设置为0、1和2三种,当数组a的值为0时显示“□”,代表白地砖,为1时显示“■”,代表黑地砖,为2时显示“○”,代表柱子。最后,小安还求出了任意两根柱子之间的最大面积,单位长度为1(当两个柱子在同一行或同一列,认为面积为0,面积求法如图b所示)。

图a

图b

程序运行界面如图a所示。实现上述功能的VB代码如下:

Dim n As Integer, m As Integer

Dim a(1 To 100) As Integer

Dim b(1 To 10) As Integer 'b数组存储柱子位置

Dim f(3) As Integer, i As Integer 'f数组存储三种类型的个数

Private Sub Command1_Click()

    n = Val(Text1.Text):m = Val(Text2.Text)

    k = 0

    For i = 1 To m

        b(i) = Int((Rnd * n ^ 2) + 1)

        a(b(i)) = 2

        For j = 1 To i - 1

            If b(i) = b(j) Then

                   ①   

                Exit For

            End If

        Next j

    Next i

    '将房间设置为黑白两种颜色交错,白黑以0、1代替

    For i = 1 To n * n

        

        If a(i) = 0 And k = 1 Then

            s = s + "■": a(i) = k

        ElseIf a(i) = 0 And k = 0 Then

            s = s + "□": a(i) = k

        Else

            s = s + "○"

            f(k) = f(k) - 1

            f(2) = f(2) + 1

        End If

            ②  

        If i Mod n = 0 Then

            List1.AddItem s

            s = ""

        End If

    Next i

    '对b数组的数值按升序进行排序,代码略

    For i = 1 To m - 1

        s = search(i)

        If s > smax Then smax = s

    Next i

    '对f(0)和f(1)的相等情况进行判断,并输出最后结果,代码略

End Sub

Function search(i As Integer) As Integer

    Dim x1 As Integer, x2 As Integer

    Dim y1 As Integer, y2 As Integer

    x1 = (b(i) - 1) \ n + 1

    y1 = (b(i) - 1) Mod n + 1

    For j = i + 1 To m

        x2 = (b(j) - 1) \ n + 1

        y2 = (b(j) - 1) Mod n + 1

        If    ③   Then s = 0

        s = (x2 - x1) * (y2 - y1)

        If s > search Then search = s

    Next j

End Function

  1. (1) 请在划线处填入合适代码。

     ② ③ 

  2. (2) 实线框处的语句改为k = 1 - k,对程序运行结果(填:有/无)影响?
一张骨牌由上下两行共四个格子构成,每个格子有一个1到6之间的数字。现在一共有5张骨牌,从左到右排成一排,定义每张骨牌的差值为:骨牌第一行的数字和减去第二行的数字和;5张骨牌的差值为:每张骨牌的差值和的绝对值。

如图a中,5张骨牌的差值为:|(3+3-4-4)+(6+3-2-5)+(2+3-4-5)+(1+5-3-3)+(1+1-1-1)|=4。

每张骨牌都可以顺时针旋转90度,效果如图b所示。现在最多可以选择其中一张骨牌进行旋转,使得旋转后的骨牌差值变小。求一种旋转方案,并输出骨牌差值的最小值。

图a

图b

编写VB程序,实现上述功能。运行程序,在文本框Text1中依次输入5张骨牌上的数字,单击“计算”按钮Command1,在文本框Text2、Text3、Text4中输出结果。程序运行界面如图b所示。

  1. (1) 若图a中第1张骨牌的数字修改为,1、2、6、6,则骨牌差值的最小值为
  2. (2) 实现上述功能的VB程序如下,请在划线处填入合适的代码。

    Dim a(1 To 20) As Integer     ‘依次存储5张骨牌上的数字

    Dim d(1 To 5) As Integer       ‘依次存储5张骨牌,上下两行的差值

    Const n = 5

    Private Sub Form_Load()

    '从文本框Text1读取5张骨牌上的数字,依次存入数组a

    'a(1)~a(4)依次存储第一张骨牌从左到右从上到下四个数字

    'a(5)到a(20)依次类推

    '代码略

    End Sub

    Private Sub Command1_Click()

        Dim i As Integer, up As Integer, down As Integer, t As Integer, k As Integer

        Dim id As Integer, times As Integer, x As Integer, ans As Integer

        For i = 1 To n

            up = a(4 * i - 3) + a(4 * i - 2)

            down = a(4 * i - 1) + a(4 * i)

            d(i) = up - down

            t = t + d(i)

        Next i

        id = 0 : times = 0

        ans =

        If ans <> 0 Then

            k = 1

            Do While k <= n

                For x = 1 To 3

                    temp =

                    If temp < ans Then

                        ans = temp

                        id = k

                        

                    End If

                    If temp = 0 Then Exit Do

                Next x

                k = k + 1

            Loop

        End If

        Text2.Text = CStr(id)

        Text3.Text = CStr(times)

        Text4.Text = CStr(ans)

    End Sub

    Function turn(ByVal k As Integer, ByVal x As Integer) As Integer

        ‘求将第k张骨牌,顺时针旋转x次后,上下两行的差值,代码略

    End Function

有如下VB程序段:

s1 = "algorithm"

If Len(s1) Mod 2 = 1 Then

  i = Len(s1) \ 2: j = Len(s1) \ 2 + 2

  s2 = Mid(s1, i + 1, 1)

Else

  i = Len(s1) \ 2: j = Len(s1) \ 2 + 1

End If

Do While i >= 1

  If Mid(s1, i, 1) > Mid(s1, j, 1) Then

    s2 = Mid(s1, i, 1) + s2

  Else

    s2 = s2 + Mid(s1, j, 1)

  End If

  i = i - 1: j = j + 1

Loop

Label1.Caption = s2

执行该程序段后,标签Label1上显示的内容是(   )

A . lortm B . rotlm C . mltor D . lormt
找英文单词并统计每个单词的字母数量设计一个VB程序,程序实现功能如下:在文本框Text1中输入文章信息,点击“统计”按钮Command1,依次在列表框List1 中显示连续的字符,最后一行显示每个连续字母的数量,数字之间用“,”隔开。

程序界面如图所示,实现上述功能的VB代码如下,请回答下列问题:

  1. (1) 代码中的AddItem属于( 单选,填字母:A .属性名/B .方法名/C .对象名)。
  2. (2) 请在划线处填上合适的代码。

    Private Sub Command1_Click()

        Dim s As String, ans As String

        Dim ch As String, n As Integer

        Dim i As Integer

        s= Text1.Text

        ans =““: n=0

        For i=1 To Len(s)

           

            If ch>= "A" And ch<= "Z" Or ch>>="a" And ch<=" z" Then

                n=n+1

            ElseIf n > 0 Then

                ans=ans+Str(n) + ","

                List1.AddItem

                n=0

            End If

        Next i

        List1.AddItem"连续字母的数量依次为:"+ans

    End Sub

  3. (3) 若在文本框Text1中输入的内容为“Summer vacation is comming”(不带双引号),运行程序后,ans的值为
小李编写VB程序,功能如下:单击“生成数组”按钮Command1,则随机生成13个取值范围是1~13的正整数,分别存储到数组a中,对数组的元素进行升序排列,并在标签label1中显示;再单击“连续数”按钮Command2,则在排序后的数组a中查找连续个数最多(忽略重复数值)的一组数值(即连续数),若有两组连续数个数一样多,则取数值小的一组,将连续数显示在标签label2中。运行界面如图所示。

若实现上述功能的程序如下,请在划线处填写合适代码。

Dim a(1 To 13) As Integer

Dim n As Integer

Private Sub Command1_ Click( )

    Dim i As Integer, s As String, j As String

    Randomize

    n=13

    For i=1 To n

        a(i) = Int(Rnd * 13)+1

    Next i

    For i=1 To n-1

        For j=i+1 To n

            If a(j) < a(i) Then

                t=a(j)::a(i)=t

            End If

        Next j

    Next i

    s=“”

    For i=1 To n

        s = s+ Str(a(i))

        If  Then s=s+“,”

    Next i

    Label1. Caption =s

End Sub

Private Sub Command2_ Click( )

    Dim i As Integer, j As Integer

    Dim t As Integer, k As Integer

    Dim max As Integer    '存储连续数个数最大值

    Dim begin As Integer     '存储连续数开始的数值

    k= 1

    max=1

    For i=2 To 13

        If a(i)=a(i-1)+1 Or a(i)=a(i-1) Then

            If  Then k=k+1

            If k > max Then

                max= k

                begin =

            End If

        Else

            k=1

        End If

    Next i

    s=" "

    For j=begin To begin+max-1

        s =s+ Str(j)

    Next j

    Label2. Caption = s

End Sub

有如下程序段,功能为判断a、b、c三条线段能否构成三角形。

a=int(input("请输入线段a的长度:"))

b=int(input("请输入线段b的长度:"))

c=int(input("请输入线段c的长度:"))

if             :

print("可以构成三角形")

else:

print("不可以构成三角形")

为实现上述程序功能,则划线处应填入的表达式是(     )

A . not (a + b <= c or a + c <= b or b + c <= a) B . a + b > c and a + c > b and b + c > a C . not (a + b <= c and a + c <= b and b + c <= a) D . a + b > c or a + c > b or b + c > a
用python编辑器打开“Y:\111”下的文件“值班.py”,进行以下操作并保存结果。
  1. (1) 请填空完善该程序,实现功能:某医院内科有a,b,c,d,e,f,g七位医生,他们在一星期内每天值一次班,排班的要求为:

    1)a医生值班儿比C医生晚一天

    2)D医生值班儿比e医生晚两天

    3)B医生值班儿笔记医生早三天

    4)F医生值班儿日在BC医生值班日之间,且在星期四。打印出每个医生的值班表。

    某医院内科有a,b,c,d,e,f,g七位医生,他们在一星期内每天值一次班,根据排班要求打印出值班表。

    # 用列表结构列出Monday~Sunday

    days=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday",]

    for a in range(7):

      for b in range(7):

        if a!=b:

          for c in range(7):

            if(c!=a)and(c!=b):

              for d in range(7):

                if(d!=a)and(d!=b)and(d!=c):

                  for e in range(7):

                    if(e!=a)and(e!=b)and(e!=c)and(e!=d):

                      for f in range(7):

                        if(f!=a)and(f!=b)and(f!=c)and(f!=d)and(f!=e):

                          for g in range(7):

                            if(g!=a)and(g!=b)and(g!=c)and(g!=d)and(g!=e)and(g!=f):

                            #用条件表达式表示出符合要求的排班

                            if(a==c+1)and(d==)and(b==g-3)and(f>b)and(f<c)and():

                            #打印输出每个医生的排班结果

                          print("a医生:",,'\n')

                      print("b医生:",days[b],'\n')

                  print("c医生:",days[c],'\n')

              print("d医生:",days[d],'\n')

          print("e医生:",days[e],'\n')

        print("f医生:",days[f],'\n')

    print("g医生:",days[g],'\n')

    编写完成后原名保存并关闭应用软件。

最近更新