充值活动已开启,快来参与吧 关闭充值活动
当前位置:手动组卷 /高中信息技术 /按知识点
选择知识点
最新上传 最多使用
  • 1. (2024·) 在计算机的操作系统中,经常需要给应用程序“分配内存”和“释放内存”。若有大小为1024B的内存,如1图所示:

    使用列表["+",5]表示申请连续5B的内存,使用列表[2,2]表示回收位置2开始连续2B的内存。若指令集表示为:order=[["+",5],[2,2],["+",8],[8,3]]。随着指令集被执行,1024B连续的内存块会被分割成若干个占用内存空闲内存。为方便起见,“占用内存”用1表示,“空闲内存”用0表示,故执行上述指令集后,内存占用情况如2图所示:

    若将空闲块用链表组织起来,就可以快速查找空闲块和删除空闲块。把连续的空闲块定义为一个节点,每个节点由[空闲块起点, 空闲块长度, 下一个空闲块位置]三部分内容构成。根据2图内存占用情况,创建的空闲块链表如3图所示:

    1. (1) 根据2图所示的内存占用情况,执行指令[4,4]后(连续空闲块要合并),内存中“空闲块”的数量变为个。
    2. (2) 根据内存占用情况列表allot,创建空闲块链表代码如下:

      def linkList(allot): #linkList函数功能:根据内存占用0/1列表allot,创建空闲块链表link

       link = [ [-1,-1,-1] ] #链表包含一个空头节点

       head = tail = 0 ; n = len( allot ) ; i = 0

       while i < n :

       if allot[ i ] == 0 :

       j = i + 1

       while j<n and allot[ j ] == 0: 

       j = j + 1

       link.append( [ i , j – i , -1 ] )

       link[ tail ][ 2 ] =     ▲

       tail = len( link ) - 1

                  

       else:

       i += 1

      return head , link

      请在▲处填入合适的代码

      若将加框处的代码修改为i = j,是否影响程序的执行结果(选填:是/否)。

    3. (3) 模拟上述内存操作的Python程序如下,请在划线处填入合适的代码。

      #通过文件读入内存分配表allot和指令集order,其代码略。

      head , link = linkList ( allot )

      for i in range( len( order ) ):

       if order[ i ][ 0 ] == " + ": #必须分配连续的空闲块,且由第一个满足空间大小的节点分配

       p = head ; q = link[ head ][ 2 ]

       while 

       p = q ; q = link[ q ][ 2 ]

       if  q == -1:

       print( "内存不足!" )

       else:

       if link[q][1] == order[i][1]: 

                      

       else:

       link[ q ][ 0 ] = link[ q ][ 0 ] + order[ i ][ 1 ]

       link[ q ][ 1 ] = link[ q ][ 1 ] - order[ i ][ 1 ]

       else:

       p = head ;  q = link[ head ][ 2 ]

       while q != -1 and link[ q ][ 0 ]<order[ i ][ 0 ]:

       p = q ; q = link[ q ][ 2 ]

       if link[ p ][ 0 ] + link[ p ][ 1 ] == order[ i ][ 0 ]: #前面节点合并

       link[ p ][ 1 ] = link[ p ][ 1 ] + order[ i ][ 1 ]

       else:

       link.append([ order[ i ][ 0 ] , order[ i ][ 1 ] , q]) #添加节点

       link[ p ][ 2 ] = len( link ) - 1

                  p = link[ p ][ 2 ]

         if q != -1 and : #后面节点合并

       link[ p ][ 1 ] = link[ p ][ 1 ] + link[ q ][ 1 ]

       link[ p ][ 2 ] = link[ q ][ 2 ]

  • 1. (2024高二下·嘉兴期中)  某网约旅游小巴士,核载乘客m人(不算司机),途径n个景点(编号从1到n),小巴士从1号景点向n号景点行驶,中途不改变方向。游客提供订单号,由3个数字组成分别是:乘客人数、上车景点编号、下车景点编号。如订单“2,1,5,”(数字之间用逗号“,”分隔,并以逗号结尾)表示2位乘客从1号景点上车5号景点下车。编写python程序,读取已经预约成功的订单信息,并判断新提交的订单能否预约成功。

    设m=12,n=10,如图a所示,是已经预约成功的5个订单对应的各景点车上人数。当输入新的订单号:“4,5,8,”,程序提示预约不成功,如图b所示。

    图a

    图b

    1. (1) 结合题意与图a,若输入订单号为“3,6,9,”,(选填:能/不能)预约成功。
    2. (2) 实现上述功能的python程序如下,请在划线处填写合适的代码。

      #定义函数,读取订单中的人数和上下车景点编号

      def order(s):

       num,start,end=0,0,0

       j,k=0,1

       for i in range(len(s)):

              

       if ch==",":

       tmp=int(s[j:i])

       j=i+1

       if k==1:

       num=tmp

       elif k==2:

       start=tmp

       elif k==3:

       end=tmp

                  

       return num,start,end

      #主程序

      #读取已预约成功订单,存入列表 lst,数据元素为订单号

      # 如 lst=["2,1,5,","1,3,7,","3,2,8,","2,4,7,","3,5,10,"]

      n=10 #站点数

      m=12 #巴士空座位总数

      count=[0]*(n+1)

      for i in lst: #处理预约成功订单

       num,start,end=order(i)

       for i in range():

       count[i]+=num

      s=input("请输入订单号:")#处理新订单

      a,b,c=order(s)

      if a*b*c!=0:

       if :

       print("预约不成功,请重新输入!")

       else:

       print("预约成功!")

      else:

       print("订单格式输入错误,请重新输入!")

      #更新预约成功订单,再次等待新订单,代码略

  • 1. (2024高二下·浙江期中)  某学生编写了一个程序来模拟答题卡中单项选择题的判分过程。实现方法是:使用“0”和“1”的组合来分别编码ABCD的填涂情况,具体方式如图a所示,例如,填涂结果“A”用“1000”编码。12道选择题以图b的方式进行排列。

    图 a

    图 b

    图 c

    编写程序:对给定的标准答案,生成并输出每道题的填涂信息,对应的选项、分值(答对得2分,答错或不答得0分),以及最后的总得分,输出结果如图c所示。请回答下列问题:

    1. (1) 若生成的填涂信息如下图所示,输入的标准答案为“ABCDCADCABAD”,则获得的总分为(填数值)。

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

      import random

      n = 12 # 定义题数

      da = "ABCDDABDAACA" # 存储标准答案

      def check(s, w, da): # 判断得分

          if :

              return 2

          else:

              return 0

      a=[[] for i in range(n)] # 存储每题 ABCD 选项的编码值

      ans = [""] * n # 存储模拟生成的填涂选项

      res = ""

      s=""

      total = 0

      for i in range(n): # 模拟生成每题选项对应的 4 位编码

          t = random.randint(0, 4) # 随机生成第 i+1 题的填涂情况

          for j in range(4):

              if :

                  a[i].append(1)

              else:

                  a[i].append(0)

      print("填涂卡情况:")

      num=1

      for i in range(n): # 打印填涂卡情况

          s = s + str(a[num-1])

          for j in range(4):

              if a[num-1][j] == 1:

                  

          res = res + str(num) + "" + s + "

          s = ""

          

          if (i+1) % 3 == 0 :

              print(res)

              res = ""

              num-=11

      print("题号  选项  分值")

      for i in range(n): # 输出每题的答案和得分

          if ans[i] != " " :

              df = check(ans[i], i, da)

              print(f"{i+1} {ans[i]} {df}")  #按格式要求输出

              total += df

          else:

              df = 0

              print(f"{i+1} 未填涂    {df}")

      print(f"该学生选择题得分:{total}分")

  • 1. (2024高二下·绍兴期中)  定义如下函数:

    def p(x):

         for i in range(2,x):

             if x%i==0:

        return False

     return True

    执行语句 print(p(5),p(6))后,输出的结果为(   )

    A . True False B . False True C . False False D . True True
  • 1. (2023高二上·浙江期中) 有如下程序段:

    def f(x):

        for i in b:

            if x==i:

                return True

        return False a=[2,0,9,3,10]

    b=[10,9,16,2,7]

    for i in a:

        if f(i):

            cnt+=1 print(cnt)

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

    A . 1 B . 2 C . 3 D . 4
  • 1. (2023高二上·浙江期中) 哥德巴赫猜想是任一大于2的偶数,都可表示成两个素数之和。其中素数也叫质数,是指除了1和本身外,不能被其它整数整除的数。
    1. (1) 10可以看成哪两个素数之和
    2. (2) 下列程序用来验证 4-1000 之间的偶数是否符合哥德巴赫猜想,请完成划线处的填空:

      def isprime(m):

          i=2

          while i<=int(m**0.5):

              if:

                  return False

              i+=1

          return True

      for i in range(4, 1001, 2):

          flag=False

          for j in range(2, i):

              if:

                  print(str(i)+"验证成功")

                  flag=True

                  break

          if:

              print(str(i)+"验证失败")

    3. (3) 上述程序使用了哪种算法(单选,填字母:A .枚举算法 B .解析算法)
  • 1. (2023高二上·浙江期中) GeoHash 是空间索引的一种方式,其基本原理是将地球理解为一个二维平面,通过把二维的空间经纬度数据编码为一个字符串,可以把平面递归分解成更小的子块,每个子块在一定经纬度范围内拥有相同的编码。以经纬度为(121.43737,31.192932)为例。

    第一步:将经纬度转换为二进制

    编码规则为:先将纬度范围(-90, 90)平分成两个区间(-90, 0)和(0, 90),如果目标维度位于前一个区间,则编码为 0,否则编码为 1,然后根据目标纬度所落的区间再平均分成两个区间进行编码,以此类推,直到精度满足要求,经度也用同样的算法。

    序号

    纬度范围

    划分区间0

    划分区间1

    31.192932所属区间

    1

    (-90,90)

    (-90,0)

    (0,90)

    1

    2

    (0,90)

    (0,45)

    (45,90)

    0

    3

    (0,45.0)

    (0,22.5)

    (22.5,45.0)

    1

    4

    (22.5,45.0)

    (22.5,33.75)

    (33.75,45.0)

    0

    5

    (22.5,33.75)

    (22.5,28.125)

    (28.125,33.75)

    1

    ……

    ……

    ……

    ……

    ……

    最后得到纬度的二进制编码为:101011000101110, 用同样的方式可以得到经度(121.43737)的二进制编码:110101100101101

    第二步:将经纬度的二进制编码合并,从偶数 0 开始,经度占偶数位,纬度占奇数位。经度

    110101100101101,纬度 101011000101110,得到的二进制编码为:111001100111100000110011110110

     

    索引

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    21

    22

    23

    24

    25

    26

    27

    28

    29

    经纬度

    1

    1

    1

    0

    0

    1

    1

    0

    0

    1

    1

    1

    0

    0

    1

    1

    1

    1

    0

    1

    1

    0

    第三步:将合并后的二进制数做 Base32 编码

    按照每 5 位一组,分成 6 组,每组计算其对应的十进制数值,按照 Base32 表进行编码。

    11100 11001 11100 00011 00111 10110 转换成十进制是 28 25 28 3 7 22,查表编码得到最终结果,wtw37q。

    林老师想编写一个 Python 程序,输入编码后的字符串,输出该编码对应的经纬度范围,运行结果如图 a 所示:

    图a

    1. (1) Python 程序如下,请在划线处完成填空。

      def qj(l,r,a):        #将二进制 a 转成对应的经纬度范围#该代码省略

      def find(c):        #在 base32 表中查找对应的十进制数

          for i in :

              if base32[i]==c:

                  return i base32="0123456789bcdefghjkmnpqrstuvwxyz" s=input("请输入编码:")

      res="" jd=[]

      wd=[]

      for i in range(len(s)):

         

          ans=""

          j=0

          while:

              ans=

              n=n//2

              j+=1

          res=res+ans

      for i in range(len(res)):

          if i%2==0:

              jd+=res[i]

          else:

              wd+=res[i]

      print("经度对应的二进制:",jd,"纬度对应的二进制:",wd)

      print("经度范围:",qj(-180,180,jd),"纬度范围:",qj(-90,90,wd))

    2. (2) 若经纬度编码是 wm3,那么对应的经度二进制是
  • 1. (2023高二上·江苏会考) 请在横线处填写正确的代码。

    已知斐波拉契数列1,1,2,3,5,8,1321……其定义如下:

    f(a)=

    求斐波拉奖数列第n项的值。

    def f(n):   #定义递归函数

        if n==1 n==2:

            return 1

        else:

            return

    n=int(input("请输入正整数n的值:"))

    print()   #打印结果

  • 1. (2023高二上·江苏会考) 请在横线处填写正确的代码。

    实现功能:输入一个年份,输出该年份是否是闰年,是则输出“YES”,否则输出“NO”。

    def rn():

        if(num%400==0 or num%4==0 num%100!=0):

            return "YES"

        

        return "NO"

    year=(input("请输入年份:"))

    print(

  • 1. (2023高二上·江苏会考) 请在横线处填写正确的代码

    一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1,即n!=1*2*3*...*(n-1)*n。

    n!= 现求n!。

    def f(n):   #定义递归函数f(n)

        if n==0 or n==1:

            return 1   #定义当n为0时函数返回值为1

        else:

            return    #递归定义n≥1时的通项公式

    =int(input("请输入n:"))   #从键盘上输入n的值

    print("n!的值为:", )   #输出结果

1 2 3 4 5 下一页 共55页