编写c/c++函数,验证一个字符串形式的表达式中的括号是否匹配,其中括号包括圆括号、方括号和花括号。

作者&投稿:堵兰 (若有异议请与网页底部的电邮联系)
C++ 数据结构 判断一个字符串中括号是否匹配~

思路是遇到左括号就入栈,碰到右括号就判断栈顶的元素是否匹配的左括号,不是的话就返回false,是的话就弹出栈顶元素,然后继续下一个字符。判断函数如下:
bool is_comm_stack(char const* src)
{
assert(src);
char ch;
char const* p=src;
stack s;
while(*p)
{
switch(*p)
{
case '(':
case '[':
case '{':
s.push (*p);
break;
case ')':
if(!s.empty())
{
if((ch=s.top())!='(')
return false;
else
{
s.pop();
break;
}
}
else
return false;
case ']':
if(!s.empty())
{
if((ch=s.top())!='[')
return false;
else
{
s.pop();
break;
}
}
else
return false;
case '}':
if(!s.empty())
{
if((ch=s.top())!='{')
return false;
else
{
s.pop();
break;
}
}
else
return false;
default:
break;


}
++p;
}
if(!s.empty())return false;
return true;
}

#include
#define MAX 100
int match(char *str)
{
char stack[MAX],*p=stack;
while(*str)
{
switch(*str)
{
case '(':
{
*p++=*str;
break;
}
case ')':
{
if(*--p!='(')
return 0;
break;
}
case '[':
{
*p++=*str;
break;
}
case ']':
{
if(*--p!='[')
return 0;
break;
}
case '{':
{
*p++=*str;
break;
}
case '}':
{
if(*--p!='{')
return 0;
break;
}
}
str++;
}
if(stack==p)
return 1;
else
return 0;
}

int main()
{
char str[MAX];
gets(str);
if(match(str))
{
printf("match
");
}
else
{
printf("not match
");
}
return 0;
}

C的话,大概的思路是 用数组接收字符串,按顺序提取出各种括号(if语句),左边的放一起,右边的放一起(可以用栈存储,要是没学过用数组也行),然后就开始匹配(用个循环,左右两边要匹配,要是有一组不成功则直接return),当然,你可以自己在开始循环之前设定一些筛选条件,例如两边总数不一样肯定就不匹配了,直接return掉……可以自己试试

数据结构的程序吧!要用自己写的栈


拼音c的写法
拼音c的写法是由一笔写成,向左写半圆,写成的c占四线格的中格,注意要留出一个缺口,不要封住。一、简述 C(大写),是英文字母顺数第三个,俄语字母顺数第19个。例如:英语单词cloud和“苏联”的俄语缩写СССР的第一个字母就是c。在中文中c指拼音字母,读法为呲(cī)。二、发音方式 1、“...

c的正确写法
c的正确写法由一笔写成,向左写半圆,写成的c占四线格的中格,注意要留出一个缺口,不要封住。

c的大小写怎么写?
字母c,反过来的是ɔ,可以用QQ拼音输入法打出来,方法如下:1、把电脑输入法切换到QQ拼音输入法;2、再把鼠标光标放在QQ拼音输入法状态栏里面的任意位置,然后单击鼠标右键;3、在弹出来的页面,点击“符号输入”;4、再点击“特殊符号”;5、接着点击左边的“英文音标”,右边第一行倒数第二个...

c字怎么写
c字怎么写:c由一笔写成,向左写半圆,写成的c占四线格的中格,注意要留出一个缺口,不要封住。拓展知识:一、字母的起源 1、字母C的产生可能是由于一个投掷棒的符号,像在古埃及的象形文字里,并很早出现在闪族的书面当中-大约是在公元前1500年的西奈半岛。2、大约在公元前1000年,在比布鲁斯(古...

c怎么写?
字母的书写格式:(1)应按照字母的笔顺和字母在三格中应占的位置书写。(2)每个字母都应稍向右倾斜,约为5°,斜度要一致。(3)大写字母都应一样高,占上面两格,但不顶第一线。(4)小写字母a,c,e,m,n,o,r,s,u,v,w,x,z写在中间的一格里,上下抵线,但都不出格。(5)...

c大写怎么写四线格
大写字母C应占上面两格,顶第一线。书写单词时,字母与字母之间的间隔要均匀、适当,不要凑得过紧,也不要离得太远。

如何用C语言编写一个简单的程序!
打印,输出运行。05 输出的效果就是这样了,一个简单的c语言程序就写好了 特别提示 所有的输入都要在英文半角的情况下输入,不然程序会不能识别,会报错。

大写的C怎么写?
大写的c 这样写:C

c的大写字母怎么写
c的大写字母:C

C语言这么厉害,它自身又是用什么语言写的?编写过程被称为自举
当然,如果在C语言之前,已经出现了别的高级语言,例如Pascal,那就可以用Pascal来写一个C语言的编译器。第一个Pascal的编译器据说使用Fortran写的。而作为第一个高级语言的Fortran,它的编译器应该是汇编语言写的。关于编译器,这里边有个有趣的传说:传说Unix 发明人之一的 Ken Thompson在贝尔实验室,...

连山壮族瑶族自治县15575239751: C++编写一个判断输入的两个数是否相等的函数模板,并使用不同类型的数据测试该函数模板. -
田梁氨酚: #include<iostream.h> #include<math.h> //C++编写一个判断输入的两个数是否相等的函数模板,并使用不同类型的数据测试该函数模板. template<class S,class T>//相等返回1,不相等返回0 int equal(S x,T y) { if(fabs(x-y)<10e-6) return 1; else ...

连山壮族瑶族自治县15575239751: 编写一个C++函数 -
田梁氨酚: #include using namespace std; void InsertFun(char* pstr, char ch) { int nLen = strlen(pstr); char* pTemp = new char(nLen * 2 + 1); for (int i = 0; i{ pTemp[2 * i] = pstr[i]; pTemp[2 * i + 1] = ch; } pTemp[2 * nLen - 1] = '\0'; cout } int main() { char pstr[1000...

连山壮族瑶族自治县15575239751: 用C++编写“设计一个函数ifAprime()来验证一个自然数是否是素数,并用主函数调用它实现1到100(包含1和100 -
田梁氨酚: 楼主 第一个是判断素数的#include#include#include using namespace std; int main() { int m,i=2; bool flag=true; cin>>m; for(i;i { if(m%i==0) {flag=false;break;} }if(flag) cout else cout system("pause"); return 0; } 第二个是输出前n个素数(n#...

连山壮族瑶族自治县15575239751: C++编写一个函数 -
田梁氨酚: #include <stdio.h>// n个元素以2个一组进行处理,有n/2组// 2个元素之间比较1次,取当前最大最小值各比较一次// 一共3次,所以最多执行3n/2次比较 void minmax(int* a, int n, int* min, int* max) { int tmin, tmax; if(n & 1) *min = *max = a[--n]; else ...

连山壮族瑶族自治县15575239751: 编写C语言程序,用一个递归函数验证数字回文,是则返回1,不是返回0
田梁氨酚: pow函数使用double进行运算的,我曾经pow(10, 2)结果是99,精度不够,你最好自己写个整数的乘方函数

连山壮族瑶族自治县15575239751: 编写一个判断素数的函数,并在主函数中调用,验证函数的正确性,以C语言的方式编写 -
田梁氨酚: #include<stdio.h> #include<math.h> void main() { int ss(int d[]); int d[100] for(int j=0;j<100;j++) scanf("%d",&a); ss(d); } int ss(int d[]) {int a,i,j,k=1,s=0; for(int j=0;j<100;j++) { i=sqrt(d[j]); for(j=2;j<=i;j++) if(d[j]%j==0) {k=0;break;} if(k) s=s+d[j]; } printf("%d",s); }

连山壮族瑶族自治县15575239751: C语言编写一个函数,验证一个数是不是素数?请高手帮忙!!! -
田梁氨酚: int prime(int n) {int flag=1,i;for(i=2;i

连山壮族瑶族自治县15575239751: 用C++写一个函数验证哥德巴赫猜想 -
田梁氨酚: 呵呵...正好写过... #include#includeusing namespace std; bool prime(long x); void main() { long i,d,j,k; bool bk,bj; cout<<"请输入一个足够大的偶数"<>d; i = d / 2; for ( j = 3; j <= i; j++) { k = d - j; bk = prime(k); bj = prime(j); if (bk && bj) { cout<<<"="<<<"+"<<

连山壮族瑶族自治县15575239751: 【C++】编写函数
田梁氨酚:find(s[x],b);改为 find(s,b); 源程序修改如下: #include <iostream> using namespace std; int find(char a[],char ch) {int i=0; for(i=0;a[i]!='\0';i++) if (a[i]==ch) break; return i; } void main() {int x; char s[80],b; cout<<"请输入字符串:"; cin>>s; cout<...

连山壮族瑶族自治县15575239751: 急求C++代码!!!!!!!!!!! -
田梁氨酚: 好辛苦才写完的,记得多加分啊..#include#include#include#include using namespace std;//f函数验证是...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网