C语言的题,有一个测试数据我一直过不了 ,.【问题描述】假设一个输入字符串中包含圆括号、方括号和花括号三种类型的括号,以及其它一些任意字符.编写程序,判别串中的括号是否正确匹配,

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 00:14:44
C语言的题,有一个测试数据我一直过不了 ,.【问题描述】假设一个输入字符串中包含圆括号、方括号和花括号三种类型的括号,以及其它一些任意字符.编写程序,判别串中的括号是否正确匹配,

C语言的题,有一个测试数据我一直过不了 ,.【问题描述】假设一个输入字符串中包含圆括号、方括号和花括号三种类型的括号,以及其它一些任意字符.编写程序,判别串中的括号是否正确匹配,
C语言的题,有一个测试数据我一直过不了 ,.
【问题描述】
假设一个输入字符串中包含圆括号、方括号和花括号三种类型的括号,以及其它一些任意字符.编写程序,判别串中的括号是否正确匹配,即:
1.各种左、右括号的个数要一致;
2.不能先出现右括号;
3.其它规则暂不考虑,例如:( ad [ ce ) ef ] 认为是正确的.
【输入形式】
从当前目录下correct.in文件中读入一行字符串.字符串最大长度80,不含空格.
【输出形式】
输出到当前目录下correct.out文件中.输出只有一个单词,如果括号匹配则输出“True”到文件中,否则输出“False”.在输出末尾要有一个回车符.
【输入样例】
设输入文件内容如下:
rhe+[35(fjej)w-wr3f[efe{feofds}]
【输出样例】
输出文件内容为:
False
我的算法:
#include
int main(){
\x05FILE *in,*out;
\x05char sum[81];
\x05int a=0,b=0,c=0,d=0,e=0,f=0,i;
\x05in=fopen("correct.in","r");
\x05out=fopen("correct.out","w");
\x05fscanf(in,"%s",sum);
\x05for(i=0;i

C语言的题,有一个测试数据我一直过不了 ,.【问题描述】假设一个输入字符串中包含圆括号、方括号和花括号三种类型的括号,以及其它一些任意字符.编写程序,判别串中的括号是否正确匹配,
这道题的意思是不是包含这样的一个意思:假如出现()()这种情况也属于false吧,只能是这种种类型的(())……建议可以试用一下goto语句,建立两层循环一对一对的找,例如:
int i,j,l,k=0;
for(i=0;i=0;j--)
{
if(sum[j]=='(')
{for(l=0;l>=j;l++)
{if(sum[l]==')');
printf("false");
else if(sum[j]=='[')
{for(l=0;l>=j;l++)
{if(sum[l]==']');
printf("false");}
else if(sum[j]=='{')
{for(l=0;l>=j;l++)
{if(sum[l]=='}');
printf("false");}
else continue;
}
for(i=79;i>=0;i--)
{
if(sum[i]==')')
k--;
else if(sum[i]==']')
k--;
else if(sum[i]=='}')
k--;
else continue;
}
if(k==0)
printf("true");
else
printf("false")
}