微盘c语言删除多余括号,C语言删除多余的括号。怎么办?

这是一个C语言程序,用于解析包含括号、加号和减号的数学表达式。程序检查并处理括号的嵌套,并忽略特定模式的括号。代码已在TC2.0环境下通过测试,能够正确处理多数情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

KKYBB

2013.01.14

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:40%    等级:2

已帮助:5218人

"#include"stdio.h"

void main()

{char a[100]={0};

int i,j,z,m=0,n=0,k=0,b[100]={0};

gets(a);

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

{j=1;

b[0]=1;

for(;a[j]=='(';k++,j++) b[j]=1;

if(a[j]=='+'||a[j]=='-') goto next1;

z=1;

while(n!=m+k+1)

{if(a[j]=='(') m++;

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

{

n++;

if(n==m+z)

b[j]=1,z++;

}

j++;

}

}

i=0;

next1: for(;a[i];i++)

{

if(a[i]=='+'&&a[i+1]=='(')

{j=i+2;

b[i+1]=1;

for(k=0;a[j]=='(';k++,j++) b[j]=1;

if(a[j]=='+'||a[j]=='-') {i=j;for(;k+1>0;k--) b[j-k-1]=0;goto next1;}

m=0;n=0;

z=1;

while(n!=m+k+1)

{if(a[j]=='(') m++;

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

{

n++;

if(n==m+z)

b[j]=1,z++;

}

j++;

}

}

}

for(i=0;a[i];i++)

if(a[i]=='-'&&a[i+1]=='(')

{

for(k=0;a[i+2]=='(';i++,k++);

if(a[i+3]==')')

{for(j=1;j

{b[i+2-j]=1;b[i+2+j]=1;}

}

}

for(i=0;a[i];i++)

if(b[i]==0)

printf("%c",a[i]);

}

全自己编的哦,TC2.0里运行过,是对的,有啥不懂再问我。

改了,去掉了你说的漏洞,但a+(-b+c)的情形没写进去,其余问题目前还没发现。

又改了,去掉了a+(-b+c)的漏洞。"

02分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值