漂亮的网站单页,网上广告设计培训,做网站一般用什么软件,杭州网站建设设计本题实现求表达式中括号是否匹配。只需判断表达式中括号#xff08;本题中只会出现三种括号#xff0c;分别是小括号#xff0c;中括号和大括号#xff09;是否匹配#xff0c;表达式中可以有其他值也可没有。
函数接口定义#xff1a;
int match (char *exp);
其中 …本题实现求表达式中括号是否匹配。只需判断表达式中括号本题中只会出现三种括号分别是小括号中括号和大括号是否匹配表达式中可以有其他值也可没有。
函数接口定义
int match (char *exp);
其中 exp 为需判断括号是否正确的表达式返回值为1或0如果为1则表示括号匹配0表示不匹配。
裁判测试程序样例
#include stdio.h
#define N 20
int match (char *exp);int main()
{char s[N];int flag;scanf(%s,s);flagmatch(s);if(flag)printf(%s match,s);elseprintf(%s not match,s);return 0;
}/* 请在这里填写答案 */
输入样例1
{[2*(32)-7]}/4输出样例1
{[2*(32)-7]}/4 match输入样例2
{[()]}输出样例2
{[()]} match
代码
#include stdio.h
#include stdlib.h#define N 20int match(char *exp);int main() {char s[N];int flag;scanf(%s, s);flag match(s);if (flag)printf(%s match\n, s);elseprintf(%s not match\n, s);return 0;
}int match(char *exp) {char stack[N]; // 使用数组模拟栈int top -1; // 栈顶位置while (*exp) { // 遍历表达式if (*exp ( || *exp [ || *exp {) {// 遇到左括号入栈if (top N - 1) { // 检查栈是否已满stack[top] *exp;} else {return 0; // 栈满无法入栈}} else if (*exp )) {// 遇到右小括号检查栈顶是否为左小括号if (top 0 stack[top] () {top--; // 匹配成功出栈} else {return 0; // 不匹配}} else if (*exp ]) {// 遇到右中括号检查栈顶是否为左中括号if (top 0 stack[top] [) {top--; // 匹配成功出栈} else {return 0; // 不匹配}} else if (*exp }) {// 遇到右大括号检查栈顶是否为左大括号if (top 0 stack[top] {) {top--; // 匹配成功出栈} else {return 0; // 不匹配}}exp; // 移动到下一个字符}if (top -1)// 表达式遍历结束检查栈是否为空{return 1;// 如果栈为空则所有括号匹配否则不匹配}elsereturn 0;}注意
1.如果是左括号就入栈如果是右括号就判断栈顶是否是左括号匹配成功就使栈顶出栈
2.最后要判断栈顶如果栈为空则所有括号匹配成功