2024年5月27日发(作者:)

括号的匹配(表达式的合法性检查)

【问题描述】

假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号

构成,以―@‖作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,

若匹配,则返回―YES‖;否则返回―NO‖。假设表达式长度小于255,左圆括号少于20个。

编程求一个后缀表达式的值

【问题描述】

从键盘读入一个后缀表达式(字符串),只含有0-9组成的运算数及加(+)、减(—)、

乘(*)、除(/)四种运算符。每个运算数之间用一个空格隔开,不需要判断给你的表达式

是否合法。以@作为结束标志。

比如,16–9*(4+3)转换成后缀表达式为:

16□9□4□3□+*–,在字符数组A中的形式为:

栈中的变化情况:

运行结果:-47

模拟计算机处理算术表达式过程。从键盘上输入算术表达式串(只含+、-、×、÷运算

符,允许含括号),输出算术表达式的值。设输入的表达式串是合法的。

提示:建立两个栈,一个是操作数栈(number),一个是运算符栈(symbol),根据运算符的

优先级对两个栈进行相应的操作。

1、表达式括号匹配()

【问题描述】

假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号

构成,以―@‖作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,

若匹配,则返回―YES‖;否则返回―NO‖。表达式长度小于255,左圆括号少于20个。

【输入文件】

输入文件包括一行数据,即表达式,

【输出文件】

输出文件包括一行,即―YES‖ 或―NO‖。

【样例输入1】

2*(x+y)/(1-x)@

【样例输出1】

YES

【样例输入2】

(25+x)*(a*(a+b+b)@

【样例输出2】

NO

2、括弧匹配检验()

【问题描述】

假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]

())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误的匹配。

现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?

输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出

―OK‖ ,不匹配就输出―Wrong‖。

输入一个字符串:[([][])],输出:OK

【输入格式】

输入仅一行字符(字符个数小于255)

【输出格式】

匹配就输出 ―OK‖ ,不匹配就输出―Wrong‖。

【输入样例】

[(])

【输出样例】

Wrong

3、字符串匹配问题()

【问题描述】

字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配。如果括号有互

相包含的形式,从内到外必须是<>,(),[],{},例如。输入: [()] 输出:YES,而输入([]), ([])

都应该输出NO。

【输入格式】

文件的第一行为一个整数n,表示以下有多少个由括好组成的字符串。接下来的n

行,每行都是一个由括号组成的长度不超过255的字符串。

【输出格式】

在输出文件中有N行,每行都是YES或NO。

【输入样例】

5

{}{}<><>()()[][]

{{}}{{}}<<>><<>>(())(())[[]][[]]

{{}}{{}}<<>><<>>(())(())[[]][[]]

{<>}{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]

><}{{[]}<<<>><<>>>((<>))(())[[(<>)]][[]]