CTSC'92

表达式求值

我们自己设计了一种名为STR的程序设计语言,定义如下:

一个STR程序::=<TSR指令序列><,>

<TSR指令序列>::=<TSR指令> | <TSR指令序列>

<TSR指令>::=<字符串1,字符串2>

字符串1::=字符串

字符串2::=字符串 | 空串

字符串::=除“,”“<”“>”以外的任何可显示ASC字符所组成的字符序列

空串::=(不包含任何字符)

其中::=读作“定义为”,| 读作“或”,表示或的关系。

STR指令完成字符替换操作,字符串2替换字符串1。

执行一个STR程序的流程如下:

1.事先输入一个待处理的字符串,这里称之为原串;

2.从STR程序开始处取第一条指令;

3.若该指令为<,>,则退出STR程序,否则做4;

4.若该指令中的字符串1在原串中不出现,则按顺序取下一条指令,并转3。否则做5;

5.将原串中的从左至右查找到的第二个(如有多个的话)字符串1替换成字符串2,(注意①在这一步如有多个可替换处,仅替换第一个;②替换后不留空格),被替换后的原串仍称原串。做完这一步后转2。

例如  输入待处理字符串abcabcd,用前面给出的包含七条指令的STR程序来处理,分步结果

如下:

abcabcd

使用<bc,a>      aaabcd

使用<aa,b>      babcd

使用<ba,a>      aad

使用<bc,a>      bd

使用<d,>        b

使用<b,finish>  finish

现有三个任务需你来做:

任务1:用你熟悉的程序设计语言编一个能够逐条解释执行任意一个STR程序的程序。STR程序放在有“.STR”为后缀的文本文件中。作为待处理的字符串(原串),用你所用的程序设计语言由键盘输入,要求将执行STR程序对原串进行处理的每一步都显示出来。格式为:

原串

使用<TSR指令>         变化后的原串

使用<TSR指令>         变化后的原串

·                         ·

·                         ·

注意:任务1要求编写一个对于任何一个STR程序都适用的通用的解释执行程序。

任务2:用STR语言编一个程序,完成如下功能:

对于形如

数字字符串1+数字字符串2=

的字符串(视为原串,其中数字字符串1和数字字符串2分别对应两个10进制正整数,)用你所编制的STR程序对原串做替换,使用程序结束时的原串恰为两个10进制正整数相加的结果。

例如   1990+123=视为原串,而所编的STR程序名为add10.str,应能对这个原串进行替换处理,最后使原串变为2113,恰为两数相加结果。将add10.str文件保留起来,用任务1的程序来检验add10.str能否正确实现任意的10进制正整数加法运算。

任务3:用你所熟悉的程序 设计语言编写一程序,该程序的功能为:如由键盘输入一个2…16的正整数n,程序会输出一个名为addn.str文件,该文件是一个STR程序,这个程序能够如任务2那样,完成任何一个n进制正整数加法运算。

CTSC'92

子串匹配

一种表达式的字义如下:

元素:=一个或多个小写英文字母组成的序列

包项:=元素 | (表达式)

连项:=包项 | 包项* | 包项#

或项:=连项 | 连项 + 或项

表达式:=或项 | 或项,表达式

其中,“:=”表示“定义为”;“ |”表示“或”关系;表达式是字符串的集合,

表达式1=                表达式1表示的集合元素

(表达式2)         与表达式相同

表达式2*            由表达式2的元素出现零次或多次而得

表达式2#            由表达式2的元素出现一次或多次而得

表达式2 + 表达式3         由表达式2的任一个元素与表达式3的任一元素顺接而得

表达式2 ,表达式3         由表达式2或表达式3的任一个元素

例:若表达式为  ((c)*+(ae)#)*+f

则           cccccaeaeaef

aeaeaeaeaeaeaeaeaef

aef

aecccaeccaef

f

都是该表达式所表示的集合中的元素。

要求编程完成这种表达式的匹配功能。由键盘输入一个表达式,并在一个名为LH.TXT的

文本文件中查找第一次匹配到的字串,并输出该子串及其位置。

该文件可认为是一个长的字符串,所谓子串位置指该子串第一个字符位置。

例:若LH.TXT内容为

abcacbbccaeaefdlkfisdalljghiersdag

输入表达式为   ((c)*+(ae)#)*+f

则输出子串为    ccaeaef

子串位置为      8

CTSC'92

称重

有6个物体分别用1-6编号,其中5个重量相同。现在有一架台秤,1次能称出放在上

面的若干物体的总重。要求编一个程序,让计算机打出一种称法,只在称3次就可以知道

每个物体的重量。具体使用时由操作者默想6个物体各自的重量,而每次由计算机用编号提问若干物体的总重量,操作者由键盘回答。如此3次后程序应能输出每个物体的重量。

CTSC'92

根据前、中序遍历求后序遍历

给定一棵二叉树的前序遍历和中序遍历序列,用你所熟悉的程序设计语言生成该二叉树,并将其后序遍历打印出来。为便于编程,二叉树的结点用单个大写英文字母表示,且结点互不重复。比如,输入前序遍历序列为DBACPMZX,中序遍历序列为ABCDMPXA,应生成的二叉树结构如下图所示:

D

/  \

B    P

/ \  / \

A  C  M  Z

/

X

应输出的后序遍历序列为ACBMXZPD

注意:你的程序应能鉴别任何的错误输入。

CTSC1992题目相关推荐

  1. LeetCode简单题之完成一半题目

    题目 有 N 位扣友参加了微软与力扣举办了「以扣会友」线下活动.主办方提供了 2N 道题目,整型数组 questions 中每个数字对应了每道题目所涉及的知识点类型. 若每位扣友选择不同的一题,请返回 ...

  2. 阿里巴巴Web前端面试的一道JS题目,求解答!!!

    题目大概是这种: function outer(){return inner;var inner = "a";function inner(){};inner = 9; } ale ...

  3. 个人作业1——四则运算题目生成程序

    需求分析: 1.控制运算表达式的题目数量,根据键盘输入数字提供对应数量表达式 2.运算符个数不能超过三个 3.能够自动生成四则运算 4.随机生成分数运算或整数运算 5.程序判断对错并给出正确答案 6. ...

  4. 九度oj 题目1411:转圈

    题目描述: 在一个有向图有n个顶点(编号从1到n),给一个起点s,问从起点出发,至少经过一条边,回到起点的最短距离. 输入: 输入包括多组,每组输入第一行包括三个整数n,m,s(1<=n< ...

  5. 题目1000:计算a+b

    题目描述: 求整数a,b的和. 输入: 测试案例有多行,每行为a,b的值. 输出: 输出多行,对应a+b的结果. 样例输入: 1 2 4 5 6 9 样例输出: 3 9 15 #include< ...

  6. 题目1460:Oil Deposit

    题目描述: The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. ...

  7. 2014百度面试题目---“求比指定整数大且最小的不重复数”解答

    题目:给定任意一个正整数,求比这个数大且最小的"不重复数","不重复数"的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数. 代码: #incl ...

  8. virtual hust 2013.6.20 数论基础题目 D - Just the Facts

    题目:Just the Facts 思路:枚举10000素数内,各因子出现的次数,然后取模为10.因为0是由2和5构成的,所以2和5的幂单独讨论,同时由于2的幂肯定大于5的,所以我们最后要算的再乘上2 ...

  9. [Quiz]竞赛题目 Word Trace

    一.竞赛题目  Problem Statement   You are given a String[] grid representing a rectangular grid of letters ...

最新文章

  1. python 在内网windows环境下pip三方包
  2. LINUX DHCP搭建
  3. php劫持代码,利用php来嗅探劫持服务器数据
  4. kubernetes精华问答 | Swarm和K8S的共同点有哪些?
  5. 小米正式开源 Istio 管理面板 Naftis
  6. Android 系统(216)---Android坐标分析过程
  7. 中正平和的机器人学笔记——2. 机械臂逆运动学(附MATAB代码)
  8. 基于华为eNSP的企业网络规划
  9. 程序员前景一片灰暗?网友:不行找个班上吧
  10. 常见逻辑谬误 -推断不当
  11. 极坐标t1t2几何意义_关于极坐标
  12. 论语之泰伯第八、子罕第九、乡党第十
  13. 网页游戏外挂资料(转)
  14. adjacent_find 的使用
  15. 第2篇,到底什么是互联网思维?
  16. 为什么有的人职场上混得如鱼得水,有的人却混得狼狈不堪呀?
  17. nacos 一直访问本地地址
  18. 道指mt4代码_MT4产品代码
  19. Discuz论坛简单搭建
  20. 分享一个麻将听牌算法(带癞子)(Lua)

热门文章

  1. 【慢慢】V6.03.1 读书笔记 css字体
  2. 火山引擎MARS-APM Plus x 飞书 |降低线上OOM,提高App性能稳定性
  3. html h1标签什么意思,什么是html h1标签?html h1标签使用方法的详细介绍
  4. CSS之字体效果(含渐变和阴影效果)
  5. Chrome插件crx安装程序包无效CRX_HEADER_INVALID
  6. Windows编程的mfc编程浅述
  7. 每年14PB数据存储需求,海量交通安全数据如何安放?
  8. Rendering-Camera from Real to Unreal(1)-真实相机
  9. 网站建设如何突破同质化竞争的桎梏?
  10. 怎么用谷歌浏览器查看页面的URL地址