天官赐福 电影 1987:就命啊谁能帮我看看这道题目,高级编程

来源:百度文库 编辑:高考问答 时间:2024/04/30 13:13:13
哪位高手帮小弟看看把,高级编程,什么语言都可以,写完保存为文本文档
题目是:括号匹配。假设算术表达式保存在一个字符串变量中,表达式中有三中括号:()、[]、{},它们可以按任意次序嵌套使用,
如(...[...(...{...(...)...}...)...]...),编程判断表达式中括号是否配对出现,若配对正确,则输出OK,否则输出ERROR.表达式由用户交互输入.
拜托了
请你们直接帮我做出来把!!
我是个菜鸟,根本不动什么是”堆栈”

貌似没有什么问题的,且貌似不需要堆栈呵呵,Try...

#include <stdio.h>
#define MAX 200
void main()
{
char str[MAX],*p;
int a=0,b=0,c=0;
printf("Input String:");
scanf("%s",str);
printf("\n");
p=str;
while(*p!='\0')
{
if(*p=='(')a++;
if(*p=='[')b++;
if(*p=='{')c++;
if(*p==')')a--;
if(*p==']')b--;
if(*p=='}')c--;
p++;
}
if(0==a&&0==b&&0==c)
printf("The string is OK\n");
else
printf("The string is ERROR\n");

}

只解决配对,不解决顺序呵呵,顺序也要考虑的话,...用栈吧~

我来回答
这个很简单。就是一个算术四则运算的题。你可以到处找到这个样的算法。

用一个堆栈,然后再做一个判定表,根据下个字符决定是压入栈还是弹出运算。

至于括号的问题,把所有的括号都当成圆括号就成了。

提示:首先你要确定输入了多少符号,如果单数则错,双数则继续判断,设总数为N,那么如果第1项与N项配对即可(n项与N+1-n项配对即可)。我用JAVA,当然要判断码值了。
流程:一:屏幕输入字符流。
二:判断字符串长度是否为偶
三:把字符串转换为字符数组。
四:比较码值,只要有不符就退出。
程序不难,一般的程序书都会有我说这几步相关的代码(都是基础),你要是想学程序就自己弄吧:)
不会的再问:)