题目描述:对输入的一段c或者c++代码(只要求其中一种),检查各种括号是否配对。 5

题目描述:对输入的一段c或者c++代码(只要求其中一种),检查各种括号是否配对,以及配对的情况。基本要求:对于输入的一段代码,能够检查其中的括号(例如{}/[]/())是... 题目描述:对输入的一段c或者c++代码(只要求其中一种),检查各种括号是否配对,以及配对的情况。
基本要求:对于输入的一段代码,能够检查其中的括号(例如{}/[]/())是否配对,如果配对,输出正确的提示信息,如果不配对,则能够将没有配对的括号的位置打印出来。
提高要求:(1) 若代码中有注释,能够自动忽略注释内容;
(2) 任意输入一个括号的位置,能够打印出与之配对的括号的位置。
设计提示:这段代码可以输入到文本文件中,然后利用所学的高级语言程序设计知识对文件(对象)进行操作,具体程序可利用堆栈来递归实现。
展开
 我来答
匿名用户
2014-12-04
展开全部
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define M 20
#define ElemType char

typedef struct
{
ElemType stack[M];
int top;
}stacknode;

void init(stacknode *st);
void push(stacknode *st,ElemType x);
void pop(stacknode *st);

void init(stacknode *st)
{
st->top=0;
}

void push(stacknode *st,ElemType x)
{
if(st->top==M)
printf("The stack is overflow!\n");
else
{
st->top=st->top+1;
st->stack[st->top]=x;
}
}

void pop(stacknode *st)
{
if(st->top>0)
st->top--;
else
printf("Stack is Empty!\n");
}

int main()
{
char s[M];
int i;
stacknode *sp;
printf("Create a empty stack!\n");
sp=(stacknode *)malloc(sizeof(stacknode));
init(sp);
printf("Input a expression:\n");
gets(s);
for(i=0;i<strlen(s);i++)
{
if(s[i]=='(')
push(sp,s[i]);
if(s[i]==')')
pop(sp);
}
if(sp->top==0)
printf("'('match')'!\n");
else
printf("'('not match')'!\n");
return 0;
}
追问
这个好像不输出不匹配括号的位置啊。
追答
亲,给处理一下这个问题呗,给个采纳可好,谢谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式