C语言写一算法,对输入的表达式中括号匹配情况检查。匹配的括号需要成对出现,且不嵌套。

任务描述
写一算法,对输入的表达式中括号匹配情况检查。匹配的括号需要成对出现,且不嵌套。

输入
第1行为一个整数t(1≤t≤10),表示接下来有t 个测试数据。 第2行输入被检查的表达式。

输出
括号是否匹配。

输入举例
4
([{}()])
([({}))
[(})({})
([{})]
输出举例
Match!
Not match!
Not match!
Not match!

c
0

1个回答

// Q714224.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int main()
{
    int n;
    char input[200];
    char stack[200];
    scanf("%d", &n);
    int *result = (int *)malloc(sizeof(int) * n);
    for (int i = 0 ; i < n; i++)
    {
        scanf("%s", input);
        int pos = 0;
        for (int j = 0; j < strlen(input) && pos >= 0; j++)
        {
            if (input[j] == '(' || input[j] == '[' || input[j] == '{')
            {
                stack[pos++] = input[j];
            }
            else if ((input[j] == ')' || input[j] == ']' || input[j] == '}') && pos > 0)
            {
                if ((stack[pos - 1] == '(' && input[j] == ')') || 
                    (stack[pos - 1] == '[' && input[j] == ']') ||
                    (stack[pos - 1] == '{' && input[j] == '}'))
                    pos--;
                else
                {
                    pos = -1;
                    break;
                }
            }
            else
            {
                pos = -1;
                break;
            }
        }
        result[i] = (pos == 0);
    }
    for (int i = 0; i < n; i++)
    {
        if (result[i]) printf("Match!\n"); else printf("Not match!\n");
    }
    return 0;
}


图片说明

如果问题得到解决,请点我回答左上角的采纳和向上的箭头,谢谢

1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
京东的一道笔试题 编写一个算法检查表达式中括号是否配对
 答案来自https://bbs.csdn.net/topics/392052204 #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;malloc.h&amp;gt; #include&amp;lt;string.h&amp;gt; #define STACK_INIT_SIZE 10 #define STACK_GROW_SIZE 5 #define ELEMTYPE char #...
表达式括号匹配 一个表达式中包括变量、常量、操作符、圆括号,圆括号可以嵌套, 编写程序判断表达式中的括号是否正确匹配。输入任意一个表达式,判断其中括号是否匹配,匹配, 输出OK, 不匹配,输出NO。(表达式的长度小于50)
一个表达式中包括变量、常量、操作符、圆括号,圆括号可以嵌套, 编写程序判断表达式中的括号是否正确匹配。输入任意一个表达式,判断其中括号是否匹配,匹配, 输出OK, 不匹配,输出NO。(表达式的长度小于50)
用C语言检查输入括号是否匹配
检查括号是不是正确匹配输入 用压栈出栈检验括号是否正确输入,打印结果
检查一个算术表达式中的括号是否正确匹配。
设计算法: 检查存储在单链表中的算术表达式 s 所包含的括号—— “(” 与 “)” 、 “[” 与 “]” 、 “{” 与 “}”是否正确匹配; 1、 创建单链表 s,通过用户逐个字符输入,完成 s 的初始化。 2、 编写程序实现函数 Check,并输出检查结果。 3、 为增强程序的可读性,对程序中较难理解的语句要有准确、清晰的注释。 由教师随机给出测试数据,程序能够反馈括号是否匹配,如果不匹配,指出第一个不匹配所在位置
【c语言】判断一个文件里的括号是不是匹配
#include &amp;lt;stdio.h&amp;gt; int main(int argc,char **argv) {     int left=0,right=0; //文件描述符指向要检查的文件     FILE *fd;     char p; //命令行判断     if(argc &amp;lt; 2){         fprintf(stderr,&quot;Us....\n&quot;);         r...
C语言-括号匹配的检验
使用下面代码前,需要引入基本算法。另外数据结构的基本算法已经更新,新增了“队列”的基本算法。 基本算法地址:https://www.orbpi.cn/article/shujujiegoujibensuanfaluru.html 问题描述 假设表达式中允许有两种括号:圆括号和方括号,其嵌套的顺序随意,即(()[ ])或[([ ] [ ])]等为正确格式,[( ])或(((]均为不正确的格式。检验括...
常见算法题:判断表达式括号是否匹配
题目:设计一个算法,判断用户输入的表达式中括号是否匹配,表达式中可能含有圆括号、中括号和大括号。思路:建立一个顺序栈,当表达式中有左括号时将其入栈,当出现右括号时,将栈顶元素出栈,检查与当前右括号是否匹配。最后如果栈为空则表示该表达式中的括号是匹配的。代码:#include<iostream> #include<string> using namespace std; #define MaxSize
【算法】C#实现判断括号互相嵌套的正确性问题
      //{[{}]([])}或[{()[]}]等为正确格式,而{[( ])}或({[()})等均为不正确的格式。        public bool IsBracketMatch(string str)        {            Stack&amp;lt;char&amp;gt; stack = new Stack&amp;lt;char&amp;gt;();            for (int i ...
算法13:检查一个表达式中的括号是否合法,括号包括 {, [, (, ), ], }
算法分析考查栈的应用。遍历表达式,如果是左括号,进栈;如果是右括号,则与栈顶元素比较,匹配则出栈,否则不合法。遍历完表达式,如果是空栈,则说明表达式是合法的。c++代码bool JudgeExpression(const char* expression,int length) { bool isLegal = false; stack<char> bracketsStack;
作业2_括号匹配检测(C语言班)
2、假设一个算术表达式中可以包含三种括号:园括号“(”和“)”、方括号“[”和“]”、花括号“{”和“}”,且这三种括号可按任意的次序嵌套使用。编写判别给定表达式中所含括号是否正确配对出现的算法(已知表达式已存入数据元素为字符的顺序表中)。要求:顺序栈存储;实现顺序栈的基本操作;调用基本操作完成。
输入一个表达式,表达式中包括三种括号“()”、“[]”和“{}”,判断该表达式的括号是否匹配。
输入一个表达式,表达式中包括三种括号“()”、“[]”和“{}”,判断该表达式的括号是否匹配。 #include #include #define N 20 #define SIZE 20 #define MORE 10 typedef struct{ char *base; int top; int stacksize; }SqStack; void InitStack(S
判断表达式中的括号是否匹配
设有算术表达式,其中包含有大括号“{ "" }"  中括号"[" "]" 小括号 "(" ")" 试编写一个函数,判断表达式中的括号是否匹配? 方法一:利用栈 方法二:首尾各一个指针,在向中间移动的过程中判断 方法三:递归 不好理解的递归实现: #include #include #define FAIL   -1 #define SUCCESS 0 char *nex
【C语言】验证花括号成对出现
题目要求 编写一个程序,它从标准输入(终端)读取C源代码,并验证所有的花括号都正确的成对出现。 注意:你不必担心注释内部、字符串常量内部和字符常量形式的花括号。 算法分析 我们先判断左花括号的数量是否相等。 如果左右花括号数量不等,肯定不成对! 如果左右花括号数量相等,一定就成对吗??? 好像也不一定。 我们来举例分析一下,左右花括号相等时可能会出现的情况: 1.{{{{{}}}
判断表达式括号是否匹配,C语言堆栈实现
#include #include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT  10 typedef struct Sq{ char *base; char *top; int stacksize; }SqStack; void InitStack(SqStack *s) { s->base
利用栈判断输入的表达式中括号是否配对
解题思路:        在表达式括号配对时返回true,否则返回false。设置一个链栈st,扫描表达式exp,遇到左括号时进栈,遇到右括号时若栈顶为左括号,则出栈,否则返回false。当表达式扫描完毕,栈为空时返回true,否则返回false。算法如下: #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;iostream&amp;gt; #include&amp;lt;string...
检查一个算术表达式中的括号是否匹配
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXSIZE 20typedef struct{ char data[MAXSIZE]; int top; }SeqStack;SeqStack * initSeqStack(){ SeqStack * s = (SeqStack *)mal
判断一个字符串中括号是否匹配
从键盘读入一个字符串,其中只含有() {} [ ] ,判断该字符串中的每种括号是否成对出现。 提示:可借助栈来实现,括号必须配对出现,如()[ ]{},这是匹配的括号,如([{])},这是不匹配的括号(中间无空格)。 输入描述: 输入一个字符串(中间不包含空格) 输出描述: 匹配输出yes,否则输出no 输入样例: (([{}])) 输出样例: yes 思路:
小编程题之检测字符串表达式中括号是否配对
如题,就直接拍照吧
判断给定表达式中的括号是否匹配
判断给定表达式中的括号是否匹配,表达式中的合法括号为”(“, “)”, “[", "]“, “{“, ”}”,这三个括号可以按照任意的次序嵌套使用。
判别给定表达式中所含括号是否正确配对出现的算法
假设一个算术表达式中可以包含三种括号:圆括号"(" 和 ")",方括号"["和"]"和花括号"{"和"}",且这三种括号可按任意的 次序嵌套使用(如:…[…{…}…[…]…]…[…]…(…)…)。编写判别给定表达 式中所含括号是否正确配对出现的算法(已知表达式已存入数据元素 为字符的顺序表中)。   实现下列函数: Status MatchCheck(SqList exp);
判断字符串中的括号是否匹配-C语言
判断字符串中的括号是否匹配-C语言递归实现: 先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配…… #include <stdio.h> #include <stdlib.h> #include <string.h>// 在start与end中搜索匹配 int fun(char *str, int start, int end) { char chLeft;
[Java]利用栈判断括号是否完整配对
利用栈实现判断字符串中的括号是否都是配对的。 主要算法是依次读取字符串中的每一个字符,如果是左括号则将左括号压入栈中,如果是右括号则从栈中弹出最上面的字符,若两者不是同种括号或栈内已经没有字符就返回false,循环完成后返回true。 package com.example; /** * Created by XiaFF on 2014/11/18. * */ public c
用顺序栈判断表达式中括号是否匹配正确
《数据结构,算法及应用》 zhangxianchao P80 13题
利用栈判断输入的表达式中的括号是否匹配(假设只含有左、右括号)
利用栈判断输入的表达式中的括号是否匹配(假设只含有左、右括号) bool Match(char exp[],int n) {   int i=0;   char e;   bool match=true;   SqStack *st;   InitStack(st);//初始化栈    while(i   {     if(exp[i]=='(')//当前字符为左括号,将其
C语言实现检查括号匹配
从头到尾扫描字符串,对不同种类的括号,遇到开括号就入栈,遇到闭括号则检查是否与栈顶开括号类型相同,相同则出栈,否则报错括号不匹配。 #include &quot;stdafx.h&quot; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;string.h&amp;gt; // 在start与end中搜索匹配 int fun(cha...
算法设计-利用栈判别表达式中的括弧是否配对
假设一个算术表达式中包括()、[]、{}三种类型的括弧,编写一个判别表达式中括弧是否正确配对的函数correct(exp,tag);其中:exp为字符串类型的变量(可理解为每个字符占用一个数组元素),表示被判别的表示式。         tag为布尔型变量。思路:用栈st进行判定,遇到(、[、{时入栈,当遇到)、]、}时,检查当前栈顶元素是否是对应的(、[、{,若是则退栈,否则返回表示不配对。当整...
带优先级且不允许连续嵌套的括号匹配
题目描述:输入一个字符串比如{[(2+3)(1-3)] + 4}(14-3),分析它的括号使用是否正确 括号有三种,小括号(),中括号[],大括号{} 正确的括号使用必须满足以下条件(和数学上定义一致): 1) 左右括号必须匹配 2) 每一种类型括号只能和同一类型的括号匹配,即(和)匹配 [和]匹配 {和}匹配 3) 括号有优先级,小括号在最内层,中括号必须嵌套在小括号外面,大括号必
利用Java的Stack实现括号匹配,包括是否成对出现以及是否正确嵌套。 例如:( ) , { } , [ ] , ( { } [ ] )为正确嵌套,) } , ( { ) } , ( {
import java.util.Scanner; import java.util.Stack; public class SymbolMatch { public static void main(String[] args) { Stack&amp;lt;Character&amp;gt; stack = new Stack&amp;lt;Character&amp;gt;(); ...
js关于判断算式中括号匹配的问题
学习前端有段时间了,一直没有学习过算法。在我的心中一直觉得没学习过算法的程序员不是一个合格的程序员。于是就翻看数据结构与算法这本书,看到栈的时候,提到一个有趣的 问题:如何验证一个算式中的括号否匹配。一开始很纠结,以为只要是括号成对出现,不论怎样排列都是要判断出来。例如:{(})这种括号,一直钻到这个牛角尖中出不来。 后来仔细一想是算式中,有哪个算式会有这么奇葩的括号组合。瞬间被自己的傻给折服啦
c语言栈实现括号匹配
在文字处理软件或编译程序设计时,常常需要检查一个字符串或一个表达式中的括号是否相匹配? 匹配思想:从左至右扫描一个字符串(或表达式),则每个右括号将与最近遇到的那个左括号相匹配。则可以在从左至右扫描过程中把所遇到的左括号存放到堆栈中。每当遇到一个右括号时,就将它与栈顶的左括号(如果存在)相匹配,同时从栈顶删除该左括号。 算法思想:设置一个栈,当读到左括号时,左括号进栈。当读到右括号时,则从栈中弹
C++实现算术表达式的括号匹配
C++ 实现算术表达式的括号匹配
数据结构习题——7表达式括号匹配
time_limit 3000MS memory_limit 10000KB description 假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”、方括号“[”和“]”和花括号“{”和“}”,且这三种括号可按任意的次序嵌套使用(如:…[…{…}…[…]…]…[…]…(…)...
判断括号是否匹配——堆栈
Algorithm 1.有效的括号 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: fa...
如何判断一个字符串中的括号是否匹配
描述:给定一个包含"(",")","[","]"的字符串,如果判断这个字符串中的括号是否正确匹配,匹配输出YES,否则输出NO; INPUT: [(S)a] OUTPUT:YES 代码实现一:基于括号数量统计的方法 #include #include #include using namespace std; bool match(char* str); int
一道算法面试题:括号匹配问题
转载出处:http://mp.weixin.qq.com/s/PNhMY7FOFsXROeyohWts2w还记得有一次笔试题,有一道括号匹配的算法题,当时没有学习数据结构和算法,思路很模糊,后来了解一些数据结构之后就有思路了,今天将解法写出来。问题描述给定一个字符串,里边可能包含“()”、&quot;{}&quot;、“[]”三种括号,请编写程序检查该字符串的括号是否成对出现。输出:true:代表括号成对出现并且嵌套...
Java - - 判断表达式中的括号是否正确配对
1. 算法思路1.1 把表达式转换为字符串数组,String biaoda = "(((1+(2)-6))";// 表达式 char biao[] = biaoda.toCharArray();// 将字符串转化成字符数组1.2 设置一个计数器,左括号+1,右括号-1,表达式中计算完毕后,如果为0表示配对 int top = 0;// 计数,左括号 1,右括号 -1,最后总和0则匹配
C程序括号匹配检查
【问题描述】 编写一程序检查C源程序文件中{}、()等括号是否匹配,并输出第一个检测到的不匹配的括号及所对应括号所在的行号(程序中只有一个括号不匹配)。 注意: 1.     除了括号可能不匹配外,输入的C源程序无其它语法错误; 2.     字符常量、字符串常量及注释中括号不应被处理,注释包括单行注释//和多行/* */注释 3. 字符和字符串常量中不包含特殊的转义字符(\',\")
表达式的括号匹配
Description假设一个算术表达式中可以包含三种括号:圆括号“( ”和“ )”、方括号“ [ ”和“ ] ”和花括号“{”和“}”,且这三种括号可按任意的次序嵌套使用(如:…[…{…}…[…]…]…[…]…(…)…)。编写判别给定表达式中所含括号是否正确配对出现的程序(已知表达式已存入数据元素为字符的顺序表中)。Input输入算术表达式,换行结束。Output若给定表达式中所含括号正确配对,...
判断括号是否匹配的java方法
验证需要判断一个字符串里括号是否成对出现,发现正则满足不了,只能用java方法,网上找了下,没有合适的,自己参考简单的例子改造了个,希望对大家有用。 public class ValidatorMethod { public boolean isMatch(String s) { Stack sc=new Stack(); char...
栈应用:判断字符串中括号是否成对出现
练习题目利用栈先将后出的特性,判断字符串中的数字表达式括号是否成对匹配,如果没有给出错误位置信息提示。代码实现代码思路很简单,如果是左括号将左括号 就入栈,遇到右括号 栈中的左括号出栈。如果该出栈的时候,栈空 肯定匹配错误。还有就是表达式遍历完毕,我们的栈 如果是全部匹配成功 ,栈肯定为空,不为空 匹配错误!这里我们使用之前写的顺序栈,不清楚的可以看:线性表:顺序栈算法实现。#define _CR...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 人工智能匹配课程 java需要学习哪些算法