循环结构语句及程序实现 知识点题库

下列VB程序段的功能为:生成n个不重复的随机整数,保存在数组a中,并升序排列。

Const n = 6

Dim a(1 To n) As Integer, f(1 To 10) As Boolean

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

′f数组各元素的初值置为False,代码略

For i = 1 To

   t = Int(1+Rnd * 10)

   If Not f(t) Then

      a(i) = t : f(t) = True

      For j =

         If a(j) < a(j-1) Then

            tmp = a(j): a(j) = a(j-1): a(j-1) = tmp

         End If

      Next j

   Else

   

   End If

Next i

上述程序段3个方框处的表达式分别为(  )

A . n-1,2 to i,i = i-1 B . N,i to 2 Step -1,i = i-1 C . n-1,2 to i,t = Int(1+Rnd * 10) D . N,i to 2 Step -1,t = Int(1+Rnd * 10)
下列VB程序段的功能为;根据文本框Text1中各字符的大小关系,计算各字符按升序排列的序号,并将序号保存在数组y中。如文本框内容为“2011”,程序运行后y(1)~y(4)各元素的值分别为“4,1,2,3”。

s=Text1.Text

n=Len(s)

For i=1 To n

    y(i)=1

Next i

For i=1 To

    For j=  To n

      If  Then

          y(j)=y(j)+1

      Else

          y(i)=y(i)+1

      End If

    Next j

Next i

上述程序段3个方框处的表达式分别为(  )

A . ⑴n         ⑵1         ⑶Mid(s,j,1)>=Mid(s,i,1) B . ⑴n         ⑵1         ⑶Mid(s,j,1)>Mid(s,i,1) C . ⑴n-1       ⑵i+1       ⑶Mid(s,j,1)>=Mid(s,i,1) D . ⑴n-1       ⑵i+1       ⑶Mid(s,j,1)>Mid(s,i,1)
一小球从100米高度自由落下,与地面碰撞时能量损失一半。假设小球每次与地面碰撞后反弹回到原来一半的高度(小球在运动过程中视为质点,且不计空气阻力),则经过5次落地共经过了287.5米。编写Python程序,实现计算小球从m米高处落下,在n次地面碰撞后经过的总路程。

height = 0

m = float(input("输入起始高度:"))

n = int(input("输入次数: "))

for i in range(1,n):

    if i= 1:

        height+=m

    else:

                       

    m/=2

print("总路程:" +str(height))

  1. (1) height变量的功能是
  2. (2) 程序中划线①处应填入的代码是 。
  3. (3) 程序调试如图所示,计算结果出错,该如何修改程序?

    输入起始高度:100

    输入次数:5

    总高度:275. 0

“百鸡百钱”问题是一个有名的数学问题,出自《张丘建算经》。其内容是:公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱,用100文钱买100只鸡,其中公鸡、母鸡和小鸡都必须要有,问公鸡、母鸡和小鸡各多少只?

运行程序,运行结果如图所示。

图片_x0020_100004

请在空格处填写正确的代码,使程序完善实现以下功能。

money=100         #一共100文钱

num=100           #一共100只鸡

cock_price=5       #公鸡价格5文

hen_price=3        #母鸡价格3文

threechick_price=1             #3只小鸡1文

for cock_num in range(1,):          #公鸡只数可能为1-20

    for hen_num in range(1,):       #母鸡只数可能为1-33

        for chick_num in range(1,101): #(3小鸡)只数可能为1-100

            money1=cock_num*cock_price+hen_num*hen_price+chick_num/threechick_price

            num1=cock_num+hen_num+chick_num

            if money1==money and num1==num:

                print (cock_num,hen_num,)

input("运行完毕,请按回车键退出...")

有以下程序段:

sum=1

for i in range(1, 5):

    sum=sum*i

print(sum, i)

程序的运行结果为(      )。

A . 24   5 B . 120    5 C . 24   4 D . 120   4
若一个正整数从左向右读与从右向左读都一样, 我们就将其称之为“回文数”。设计一个在列表框List中显示100 500之间的所有回文数的程序,实现该功能的VB程序段如下:

For k=100 To 500

    x=k

    z =0

    Do While x> 0

        

        

        

    Loop

    If z=k Then

        List1.AddItem Str(k)

    End If

Next k

上述程序段中方框处可选语句为:

①x=x\10   ②y=xMod10

③z=z+10*y   ④z=10*z+y

则(1)(2)(3)处语句依次为(    )

A . ①②③ B . ②①③ C . ①②④ D . ②①④
“百鸡百钱”问题是一个有名的数学问题,出自《张丘建算经》。其内容是:公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱,用100文钱买100只鸡,其中公鸡、母鸡和小鸡都必须要有,问公鸡、母鸡和小鸡各多少只?

打开文件“考生文件夹\644\百鸡百钱.py”,完善程序实现以下功能并保存。

⑴请不要更改源程序的结构,删除原题里的①、②、③。填写正确的代码,使程序完善。

⑵运行程序,运行结果如图所示。

# 请不要更改源程序的结构,删除原题里的①、②、③。填写正确的代码,使程序完善

money=100                #一共100文钱

num=100                  #一共100只鸡

cock_price=5             #公鸡价格5文

hen_price=3              #母鸡价格3文

threechick_price=1       #3只小鸡1文

for cock_num in range(1,money//cock_price+1):          #公鸡只数可能为1-20

    for hen_num in range(1, ①):           #母鸡只数可能为1-33

        for chick_num in range(1, ②):       #(3小鸡)只数可能为1-100

            money1=cock_num*cock_price+hen_num*hen_price+chick_num*threechick_price

            num1=cock_num+hen_num+chick_num*3

            if money1==money and num1==num:

                print (cock_num,hen_num,③)             #(③小鸡数)

input("运行完毕,请按回车键退出...")

星星设计了10*10的矩阵,如图所示,实现此功能的VB程序段如下,已知程序中两处标记①的位置表达式相同,程序中①、②两处表达式为(  )

Dim a(1 To 100)As String

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(  ①  ) ="O"

        End lf

    Next j

Next i

For i= 1 To 100

    s=s +a(i)

    lf   ②   Then

        List1.Addltem s

        s = ""

    End lf

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
有如下Python程序,程序执行,输入数据k之后输出的结果不正确的是( )

L=[8, 10, 9, 14, 13, 4, 9, 13, 10]

k=int(input('请输入 k 值:'))

j=0

for i in range(8):

  if L[i]<=k:

    L[j]=L[i]

    j=j+1

print(L[:j])

A . k=8 输出:[8,4] B . k=9 输出:[8,9,4,9] C . k=10 输出:[8,10,9,4,9,10] D . k=13 输出:[8,10,9,13,4,9,13]
下面的程序是求100以内奇数和s的值,请将程序补充完整。

Private Sub Command1_Click( )

    Dim s As Single

    Dim i As Single

    s = _

    For i = 1 To 100 Step

       

    Next

    Print

End Sub

某中学的政教处公布的早操和课间操点名缺勤扣分规则为:每天各班初始10分,考勤时每缺少1人扣0.5分。每天及时公布各班的两操得分情况及最高得分,同时还公布获得最高分的班级以表扬先进。为了实现这一功能,政教处李老师编写了Python程序。代码及运行界面如下。

(图-1是输入数据文件“dianming.txt”,该文件有三列数据,第一列表示班级编号,第二列表示实际早操到岗人数,第三列表示实际课间操到岗人数;图-2 是程序运行后的结果)

班级

1班

2班

3班

4班

5班

6班

7班

8班

9班

10班

早操应到人数

38

39

41

40

39

38

42

38

38

39

课间操应到人数

40

40

43

41

40

40

42

38

39

40

Python代码如下:

dic = {1:[38,40],2:[39,40],3:[41,43],4:[40,41],5:[39,40],

6:[38,40],7:[42,42],8:[38,38],9:[38,39],10:[39,40]}

defen = [0]*10

f = open("dianming.txt")        #打开dianming.txt 文件作为输入

lines = f.readlines()

for line in lines:

  x,y,z = map(int,line.split())       #将每行数据以空格为分隔符分离并转换为整型存入相应的变量x、y、z

  defen[x-1] =     ①    

print(x,"班今日两操得分:",defen[x-1])

mxfenshu = max(defen)

print("今日最高得分:",mxfenshu)

print("获得最高分的班级有:" ,end=" ")

for i in range(10):

  if      ②        :

    print(i+1,"班",end="/")

  1. (1) 如果“dianming.txt”文件中的点名数据没有按照班级升序排序,该程序是否能正确计算各班级得分。(填字母,A .是/ B .否)
  2. (2) 根据题意,请在划线处填入合适的语句或表达式
  3. (3) 3班的班主任反映该班课间操人数是44 人,则可以通过下列哪些语句进行修正         (多选)
    A . dic[3]=[41,44] B . dic[3,2]=[44] C . dic[3,1]=[44] D . dic[3][1]=44
有百位和个位未知的4位整数“3*9*”,能同时被37与12整除。以下VB程序段的功能是:在满足条件的所有数中,将最小一个4位数的百位与个位依次显示在文本框Text1中。

i = 0: flag = False

Do While i <= 9 And Not flag

    For j = 0 To 9

        

        

            

            flag = True

            Exit For

        End If

    Next j

    i = i + 1

Loop

方框中的代码由以下三部分组成:

①If s Mod 12 = 0 And s Mod 37= 0 Then

②s = 3 * 1000 + i * 100 + 9 * 10 + j

③Text1.Text = Str(i) + Str(j)

下列选项中代码顺序正确的是(    )

A . ②①③ B . ②③① C . ①②③ D . ①③②
有如下VB程序段:

s=Text1.Text

ans=0

    

Text2.Text=Str(ans)

若Text1中输入的内容为“10”则Text2中输出的内容为“2”,划线处代码不正确的是(    )

A.

for =1 To Len(s)

    t=Val (Mid(s,i, 1))

    ans=ans+t*2^ (L.en(s)-i)

next i

B.

for i=1 To Len(s)

    t=Val (Mid(s, i, 1))

    ans=ans*2+t

next i

C.

for i=Len(s) To 1 step -1

    t=Val (Mid(s, i, 1))

    ans=ans+t*2^ (i-1)

next i

D.

for i=1 To Len(s)

    t=Val (Mid(s, Len(s)-i+1,1))

    ans=ans+t*2^ (i-1)

next i

A . A B . B C . C D . D
有如下Python程序段:

s1="192637"

s2="playground"

s3=""

for i in s1:

    s3 = s2[int(i)] + s3

print(s3)

执行该程序段后,输出的结果是(      )

A . ldaoyu B . pnlrao C . oarlnp D . uyoadl
答题卡一般采用2B铅笔填涂,填涂好的答题卡经过扫描后得到如图所示的数字化图像,从一个像素点的灰度值>132判断是否被填涂开始,进而判断一个信息点是否被填涂。利用如下的Python程序可以识别并统计填涂好的答题卡中的答案:
  1. (1) 答题卡通常使用红色,如使用黑色印刷,对答案识别(有/无)影响。

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

    from PIL import Image

    x_start = 11       # 起始点坐标

    y_start = 92    

    fill_width= 24       信息点宽度

    fill_height= 10         # 信息点高度

    space_width = 15       间隔宽度

    space_height = 12         # 间隔高度

    ans_cnt = 5            # 题目个数

    def bw_judge(R, G, B):         # bw_judge用于判断一个像素的填涂情况

    Gray_scale = 0.299 * R + 0.587 * G + 0.114 * B

    return Gray_scale < 132

    def fill_judge(x, y):            # fill_judge 用于判断信息点的填涂情况

    count = 0

    for i in range(x, x + fill_width):

      for j in range( ):

      R, G, B = pixels[i, j]

      if bw_judge(R, G, B) == True:

        count = count + 1

        if count >= fill_width * fill_height * 0.64:

          return True

          total_width  = fill_width + space_width

          total_height = fill_height + space_height

          image = Image.open ("card.bmp")

          pixels = image.load()

          ans = ""

          item=[‘A’,’B’,’C’,’D’]

          list=[]

          for col in range(ans_cnt):

            x =

            for row in range(4):

              y = y_start + total_height * row

              if fill_judge(x, y) == True:

                    

                list.append(ans)

                ans=""

    print(list)

输入一个正整数(n>=3),判断该正整数是否为素数(质数),要判断一个数n是否为素数,最简单的方法是统计2到n-1之间的所有能整除n的整数个数,若能整除n的整数的个数大于0,则n不是素数

n=int(input(“n=”))

s=0

for i in range(2, n):

  if n%i==0:

    s=

  if :

    print(n,“是素数”)

  else:

    print(n,“不是素数”)

用Python编辑器打开“Y:\91下的文件“求奇数的和.py”,进行以下操作并保存结果。

①请填空完善该程序,实现功能:求1到100之间所奇数的和。

注:程序修改时,请把下划线及序号删除;不能删除注释语句。

s=0        #s中存放1-100之间所有奇数的和

for i in range(, 100, ):

    s =

print(s)

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

解决下列问题,适合采用循环结构算法的是(    )
A . 判断一个整数是否为偶数 B . 输入一个圆的半径,计算其面积和周长 C . 输入10000个数值,计算平均值 D . 输入一个正方形面积,求边长
疫情期间学校实行错时吃饭,中午吃饭时间(文本框Text1)按照高三、高一、高二的顺序依次下课去食堂,年级之间间隔5分钟(文本框Text2),已知每个年级同学数按500人整计算,每分钟进入食堂的人数按100人次计算,5批次可以全部进入食堂。食堂共设置了15个打菜窗口,每个打菜窗口的绝对等待时间依次为“0秒,10秒,20秒,……,(n-1)*10秒”n表示该窗口第n位排队打菜同学。每个窗口最多容纳排队人数=1500/15=100人。

现在设计一个VB程序,计算三个年级每一个批次进入食堂排队打菜完需要的相对等待时间平均值(输出到标签Label1,单位:分钟),以及抽样调查:在文本框Text3中输入某年级第n位进入食堂的同学,排队打到饭菜需要的时间(单位分钟,取整)并输出到标签Label2中。程序运行界面如第16题图所示。

  1. (1) 如图所示,将食堂打菜窗口增加到20个,则平均排队打菜时间将(单选:A .增大/B .减小)。
  2. (2) 实现上述功能的部分VB程序如下,请在划线处填入合适的代码。

    Const n= 1500:Const nj = "

    Dim d(1 To 3 * 5) As Integer, cw(1 To 100) As Integer, w(1 To n) As Integer

    Private Sub Command1_Click()

        Dim i As Integer, j As Integer, t(1 To 3) As Integer

        Dim k As Integer, sum As Long, aver As Integer

        t(1) = TtoM(Text1.Text):k = Val(Text2.Text)

        For i = 1 To 3

            If i > 1 Then t(i) =      '三个年级的午餐时间

            For j = 1 To 5

                d((i -1) * 5 + j) = t(i) + j -1   '记录三个年级每个批次进入食堂的时间点

            Next j

        Next i

        List1.Clear

        For i = 1 To 15

        '输出三个年级每个批次进入食堂的时间点,代码略

        Next i

        For j = 1 To n

            If j Mod 15 = 1 Then

                i = (j -1) \15 + 1

                cw(i) = (i -1) * 10     '每个打菜窗口的等待时间(单位:秒)

            End If

            w(j) = cw(i) -() * 60    '每位同学打菜等待时间

            sum = sum + w(j)

        Next j

        aver = sum \n \60

        Label1.Caption = "平均排队打菜时间:" + Str(aver) + "分钟" 

    End Sub

    Private Sub Command2_Click()

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

        s = Text3.Text

        i = 1

        Do While i <= 3

            If Then j = (i -1) * 500 + Val(Mid(s, 4)): Exit Do

            i = i + 1

        Loop

        Label2.Caption = s+"进入食堂的同学大约" +Str(w(j)\60)+ "分钟左右打到饭菜。"

    End Sub

    Function TtoM(t As String) As Integer

        '将时间转换为绝对数值,例如t="12:01"→TtoM=721,代码略

    End Function

    Function MtoT(m As Integer) As String

        '将时间绝对数值转换为时间格式,代码略

    End Function

有如下程序:

a = input('输入小写字母组成的字符:')

for i in a:

  n = ord(i)+1                           #(字符a的ASCII码为97)

  h = ''

  for j in range(8):

    h = str(abs(n%2- 1))+h

    n = n//2

print(h, end=' ')

若输入小写字母“ab ”得到的结果是 (    )

A . 0011101 0011100 B . 1100010 0011100 C . 10011101 10011100 D . 00011101 00011100
最近更新