|试卷下载
搜索
    上传资料 赚现金
    第三单元 特殊的线性表 练习及参考答案
    立即下载
    加入资料篮
    第三单元 特殊的线性表 练习及参考答案01
    第三单元 特殊的线性表 练习及参考答案02
    第三单元 特殊的线性表 练习及参考答案03
    还剩7页未读, 继续阅读
    下载需要10学贝 1学贝=0.1元
    使用下载券免费下载
    加入资料篮
    立即下载

    高中信息技术沪教版(2019)选修1 数据与数据结构第三单元 特殊的线性表本章综合与测试精品随堂练习题

    展开
    这是一份高中信息技术沪教版(2019)选修1 数据与数据结构第三单元 特殊的线性表本章综合与测试精品随堂练习题,共10页。试卷主要包含了四方向迷官问题求解等内容,欢迎下载使用。

    第三单元练习及参考答案

    1.假设有如下功能的演唱会门票预订系统:

    按先到者先订的规则进行预订

    当门票都预订完后,允许在队伍中等待退票

    请画出算法流程图并编程实现排队预订及等候退票功能

    参考答案

    流程图如下所示;

      

     

    参考代码如下所示:

    #/usr/bin/python

    #-*-coding:utf-8-*-

     

    total_tickets=3  #假设总票数为3

    user_in_the_queue=[]  #定义排队队列,用列表模拟

     

    def get_ticket(user_name,amount)

    #如果还有票,返回购票数

    #否则继续排队

      global total_ tickets

      global user_in_the_queue

      left=total_tickets-amount

      if left>-1:

        print( user_name, "get",amount, " tickets successfully)

        total_tickets=total_tickets -amount

        return

    else:

    print( user_name, "can not get",amount, "tickets, wait in the queue")

    user_in_the_queue.append(user_name)

     

    def get_return_ticket( user_name, amount):

        global user_in_the_queue

        first_user_in_the_queue=user_in_the_queue[len(user_in_the_queue)-1]

        if first_user_in_the_queue ==user_name:

            get_ticket( user_name, amount)

    else:

    print( user_name, "can not get ticket first, user in the queue now)

        user_in_the__queue.append( user_name)

     

     

    def main():

    user_name_a ="BoyA

    user_name_b ="BoyB

    user_name_c ="BoyC

    get_ticket(user_name_a, 3)

    get_ticket(user_name_b, 3)

      return_ticket(3)

      get_return_ticket(user_name_c, 1)

      get_return_ticket(user_name_b, 3)

     

     

    def return_ticket(amount):

      global total_tickets

      total_tickets=total_tickets+amount

    if _name_==_main_'

    main()

    2.四方向迷官问题求解:假设有8X8的迷官如下所示(迷官用二维数组存放,可查阅资料了解二维数组)1表示障碍不能通行,0表示通道可以通行。求解方法为:从人口开始出发沿着某一个方向向前试探,若能够通行,则继续试探前行:如果遇到障碍,马上原路返回,并在该路口做上记号,换另一个方向继续试探前行;重复上述步骤直到到达迷官的出口后结束。由于迷官错综复杂,靠人力来搜索迷官的所有通路是很费时、费力的一件事,因此可以借助计算机编程来完成

    入口00100010

    00100010

    00001100

    01110000

    00010000

    01000100

    01110110

    00001000出口

    画出求解迷官问题中,栈的变化过程。

    设计解四方向迷宫问题的算法并编程实现

    提示:在编程时,为避免考虑第一行不能朝上走、第一列不能朝左走,最后一列不能朝右走,最下一行不能朝下走,可以在迷官外围设置一圈围墙,这样所有的位置都可考虑四个方向,围墙等同于障碍(1表示),如下所示。

    1111111111

    1001000101

    1001000101

    1000011001

    1011100001

    1000100001

    1010001001

    1011101101

    1000010001

    1111111111

    参考答案:

      

     

    参考代码如下所示

    #-*-coding:utf-8-*-

    #/usr/bin/python

     

    import sys

    sys.setrecursionlimit(91832)  #set the maximum depth as 10000

     

    Maze=[

    [1,1,1,1,1,1,1,1,1,1],

    [0,0,0,1,0,0,0,1,0,1],

    [1,0,0,1,0,0,0,1,0,1],

    [1,0,0,0,0,1,1,0,0,1],

    [1,0,1,1,1,0,0,0,0,1],

    [1,0,0,0,1,0,0,0,0,1],

    [1,0,1,0,0,0,1,0,0,1],

    [1,0,1,1,1,0,1,1,0,1],

    [1,0,0,0,0,1,0,0,0,0],

    [1,1,1,1,1,1,1,1,1,1]

    ]

    used=[[ 0 for i in range(10)] for i in range(10)]  #use用于记录已走过的坐标,防止重走,同时便于回溯

    dx=[ ]

    dy=[ ]

    def movel(i,srex,srey,dstx,dsty)#i表示第几步,当前坐标和终点坐标

     print(i, srex, srey, dstx, dsty)

       if srex==dstx and srey==dsty:

         print(run away!)

    dx append( srex)   

    dy append( srey)

          return True

     

    if maze[srex+1][ srey]==0 and used[ sex+1][srcy]==0:

     print("down"srcx+1srcy)

     dx.append( srcx)

     dy.append( srcy)

     srcx +=1

     used[srcx][srcy]=1

     move( i+1srcx, srcy, dstx, dsty)

     used[srcx][srcy]=0

    dx. pop()

      dy. pop()

     

    if maze[srcx][srcy+1]==0 and used[ srcx][ srcy+1]==0:

     print("right"srcx, srcy+1)

     dy.append( srcx)

     dy.append( srcy)

    srcy + =1

     used[ srcx][srcy]=1

     move(i+1srcx, srcy, dstx, dsty)

     used[ srcx][srcy]=0

     dx. pop();

     dy.pop();

     

     

    if maze[ srcx][ srcy-1]==0 and used[ srcx][ srcy-1==0:

        print("left",srcx,srcy+1)

    dy.append( srcx)

    dy.append( srcy)

        srcy-=1

    used[ srcx][srcy]=1

    move( i+1srcx, srcy, dstx, dsty)

        dx. pop()

        dy. pop()

     

    if maze[srcx-1][srcy]==0 and used[srcx-1][srcy]==0:

       print("up"srcx, srcy+1)

       dx.append(srcx)

       dy.append(srcy)

       srcx-= 1

       used[ srcx][srcy]=1

    used[ srcx][srcy]=1

       move(i+1srcx, srcy, dstx, dsty)

           used[ srcx][srcy]=0

       dx. pop()

       dy.pop()

     

    def main():

    move(1,1,0,8,9)  #move(1,1,0,8,9)

        for i in range(len(dx)):

    print('The{}step is({},{}).fomat(i+1,dx[i],dy[i]))

     

    If _name_=='_main_'

    main()

    3.统计英文短文中某单词出现的次数 (3)假设有一篇英文短文,请画出算法流程图并编程实现以下操作:

    统计英文短文中某单词出现的次数。

    在英文短文中查找并替换某单词。

    参考答案:

    采用递归的方式实现,流程图如下所示:

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    参考代码如下所示:

    #/usr/bin/python

    #coding=utf-8

     

    def main()

    english_paragraph="Hello,world.This is a new world for you."  #红色部分是编者假设的短文内容

    find_word="word"  #红色部分是编者假设的查找字符

    replaced_word="you"   #红色部分是编者假设的精换的字符

     

    find(english_paragraph,find_word) #查找字符

    print("\r\n===========================\r\n)

    replace(english_paragraph,replaced_word,find_word)  #精换字符

     

    def alphabet_in_control_list(alphabet)

    control_list=[" ",,,.,"\","\]

    if alphabet in control_list:

    return True

    return False

     

    def find(english_paragraph,find_word)

    WillFind="

    Total=0

    for alphabet in english_paragraph

    if alphabet_in_control_list(alphabet)

    if WillFind==find_word;

    Total=Total+1

    WillFind=””

    else:

    WillFind=WillFind+alphabet

     

    print("find"find_word,"in paragraph,total:"Total,".")

     

    def replace(english_paragraph,replaced_word,find_word)

    Will Find= “”

    Replaced Paragraph=""

    for alphabet in english_paragraph:

    if alphabet_in_control_list(alphabet):

    if Will Find==find_word;

    Replaced Paragraph=Replaced Paragraph+replaced_word+alphabet

    else:  

    Replaced Paragraph=Replaced Paragraph+Will Find+alphabet

    Will Find=””

    else:

    Will Find=Will Find+alphabet

    print("replaced result"Replaced Paragraph)

    if _name_=='_main_':

    main()

     

     

     

    相关试卷

    高中信息技术沪教版 (2019)选修1 数据与数据结构1.问题分析课后复习题: 这是一份高中信息技术沪教版 (2019)选修1 数据与数据结构1.问题分析课后复习题,共60页。PPT课件主要包含了第三章房间篇,◇物业服务等内容,欢迎下载使用。

    2019CSP-j普及组a卷试题及参考答案: 这是一份2019CSP-j普及组a卷试题及参考答案,共10页。

    高中沪教版(2019)第三单元 网络安全基础本章综合与测试精品综合训练题: 这是一份高中沪教版(2019)第三单元 网络安全基础本章综合与测试精品综合训练题,共2页。

    免费资料下载额度不足,请先充值

    每充值一元即可获得5份免费资料下载额度

    今日免费资料下载份数已用完,请明天再来。

    充值学贝或者加入云校通,全网资料任意下。

    提示

    您所在的“深圳市第一中学”云校通为试用账号,试用账号每位老师每日最多可下载 10 份资料 (今日还可下载 0 份),请取消部分资料后重试或选择从个人账户扣费下载。

    您所在的“深深圳市第一中学”云校通为试用账号,试用账号每位老师每日最多可下载10份资料,您的当日额度已用完,请明天再来,或选择从个人账户扣费下载。

    您所在的“深圳市第一中学”云校通余额已不足,请提醒校管理员续费或选择从个人账户扣费下载。

    重新选择
    明天再来
    个人账户下载
    下载确认
    您当前为教习网VIP用户,下载已享8.5折优惠
    您当前为云校通用户,下载免费
    下载需要:
    本次下载:免费
    账户余额:0 学贝
    首次下载后60天内可免费重复下载
    立即下载
    即将下载:资料
    资料售价:学贝 账户剩余:学贝
    选择教习网的4大理由
    • 更专业
      地区版本全覆盖, 同步最新教材, 公开课⾸选;1200+名校合作, 5600+⼀线名师供稿
    • 更丰富
      涵盖课件/教案/试卷/素材等各种教学资源;900万+优选资源 ⽇更新5000+
    • 更便捷
      课件/教案/试卷配套, 打包下载;手机/电脑随时随地浏览;⽆⽔印, 下载即可⽤
    • 真低价
      超⾼性价⽐, 让优质资源普惠更多师⽣
    VIP权益介绍
    • 充值学贝下载 本单免费 90%的用户选择
    • 扫码直接下载
    元开通VIP,立享充值加送10%学贝及全站85折下载
    您当前为VIP用户,已享全站下载85折优惠,充值学贝可获10%赠送
      充值到账1学贝=0.1元
      0学贝
      本次充值学贝
      0学贝
      VIP充值赠送
      0学贝
      下载消耗
      0学贝
      资料原价
      100学贝
      VIP下载优惠
      0学贝
      0学贝
      下载后剩余学贝永久有效
      0学贝
      • 微信
      • 支付宝
      支付:¥
      元开通VIP,立享充值加送10%学贝及全站85折下载
      您当前为VIP用户,已享全站下载85折优惠,充值学贝可获10%赠送
      扫码支付0直接下载
      • 微信
      • 支付宝
      微信扫码支付
      充值学贝下载,立省60% 充值学贝下载,本次下载免费
        下载成功

        Ctrl + Shift + J 查看文件保存位置

        若下载不成功,可重新下载,或查看 资料下载帮助

        本资源来自成套资源

        更多精品资料

        正在打包资料,请稍候…

        预计需要约10秒钟,请勿关闭页面

        服务器繁忙,打包失败

        请联系右侧的在线客服解决

        单次下载文件已超2GB,请分批下载

        请单份下载或分批下载

        支付后60天内可免费重复下载

        我知道了
        正在提交订单

        欢迎来到教习网

        • 900万优选资源,让备课更轻松
        • 600万优选试题,支持自由组卷
        • 高质量可编辑,日均更新2000+
        • 百万教师选择,专业更值得信赖
        微信扫码注册
        qrcode
        二维码已过期
        刷新

        微信扫码,快速注册

        还可免费领教师专享福利「樊登读书VIP」

        手机号注册
        手机号码

        手机号格式错误

        手机验证码 获取验证码

        手机验证码已经成功发送,5分钟内有效

        设置密码

        6-20个字符,数字、字母或符号

        注册即视为同意教习网「注册协议」「隐私条款」
        QQ注册
        手机号注册
        微信注册

        注册成功

        下载确认

        下载需要:0 张下载券

        账户可用:0 张下载券

        立即下载
        账户可用下载券不足,请取消部分资料或者使用学贝继续下载 学贝支付

        如何免费获得下载券?

        加入教习网教师福利群,群内会不定期免费赠送下载券及各种教学资源, 立即入群

        即将下载

        第三单元 特殊的线性表 练习及参考答案
        该资料来自成套资源,打包下载更省心 该专辑正在参与特惠活动,低至4折起
        [共10份]
        浏览全套
          立即下载(共1份)
          返回
          顶部
          Baidu
          map