您的位置:

c语言判断括号,c语言里的括号

本文目录一览:

C语言判断给定表达式的括号是否匹配

#include stdio.h

#include stdlib.h

int main(int argc, char *argv[])

{

char c;

int i=0,n;

int output[100];

int lefts=0,leftm=0,leftb=0;

int rights=0,rightm=0,rightb=0;

while((c=getchar())!='*')

{

if(c=='\n')

{

if(lefts == rights leftm == rightm leftb ==rightb)output[i]=1;

else output[i]=0;

lefts=0;

leftm=0;

leftb=0;

rights=0;

rightm=0;

rightb=0;

i++;

}

if(c == '(' )lefts++;

if(c == ')' )rights++;

if(c == '[' )leftm++;

if(c == ']' )rightm++;

if(c == '{' )leftb++;

if(c == '}' )rightb++;

}

n=i;

for(i=0;in;i++)

{

if(output[i]==1)printf("yes\n");

else printf("no\n");

}

system("pause");

return 0;

}

这是程序,当输入星号*就结束。不论是否一行只有它。有点不符合题意呃。你可以改改。

上面那个人写的为单行输入。且没有考虑中括号和大括号。

用C语言如何实现判断圆括号是否配对?

如果只有圆括号(没有[ ] 或 { }),不需要构造一个栈。因为用栈实现时,栈里装的都是一模一样的左括号 '(' ,因此我们只需定义一个 整型变量 来记录 栈中元素的个数 即可。具体代码如下:

#include stdio.h

int main (void)

{

char input = 0;

int num = 0; /* 不用栈,只记录栈中元素的个数,初始化为0 */

while (1 == scanf ("%c", input)) /* 读入字符串,每次读一个字符存入 input 中 */

{

if ('(' == input)

{

++num; /* 相当于把左括号压栈 */

}

if (')' == input)

{

--num; /* 相当于遇到右括号时弹栈 */

}

if (0 num)

{

printf ("括号不匹配\n");

return 0;

}

}

if (0 == num) /* 读完字符串后判断“栈”是否为空 */

{

printf ("括号匹配\n");

}

else

{

printf ("括号不匹配\n");

}

return 0;

}

C语言 判断括号()是否匹配

#includeiostream

using namespace std;

#define maxsize 100;

#define T 10;

struct sqstack{

char *base;

char *top;

int stacksize;

};

sqstack inistack(sqstack s){//初始化栈

s.base=new char[10];

if(!s.base)

cout"error";

s.top=s.base;

s.stacksize=maxsize;

return s;

}

sqstack push(sqstack s,char e){//进栈

if(s.top-s.base=s.stacksize){

s.base=new char[10];

if(!s.base)

cout"error";

s.top=s.base+s.stacksize;

s.stacksize+=T;

}

*s.top=e;

s.top++;

return s;

}

sqstack pop(sqstack s, char e){//出栈

e=*s.top;

-- s.top;

return s;

}

int main(){

char *base,*top;

int total;

cout"请输入字符个数:";

cintotal;

char a[total];

for(int i=0;itotal;i++){

cina[i];

}

sqstack s;

inistack(s);

for (int j=0;jtotal;j++){

if(a[j]=='(')

push(s,a[j]);

else if(a[j]==')')

pop(s,a[j]);

}

if(s.base==s.top)

cout"true";//匹配完后,如果栈为空,则括号匹配正确

else

cout"failed";

system("pause");

return 0;

}