C语言的题,有一个测试数据我一直过不了 ,.【问题描述】假设一个输入字符串中包含圆括号、方括号和花括号三种类型的括号,以及其它一些任意字符.编写程序,判别串中的括号是否正确匹配,
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/05 14:32:05
![C语言的题,有一个测试数据我一直过不了 ,.【问题描述】假设一个输入字符串中包含圆括号、方括号和花括号三种类型的括号,以及其它一些任意字符.编写程序,判别串中的括号是否正确匹配,](/uploads/image/z/5167786-58-6.jpg?t=C%E8%AF%AD%E8%A8%80%E7%9A%84%E9%A2%98%2C%E6%9C%89%E4%B8%80%E4%B8%AA%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%E6%88%91%E4%B8%80%E7%9B%B4%E8%BF%87%E4%B8%8D%E4%BA%86+%2C.%E3%80%90%E9%97%AE%E9%A2%98%E6%8F%8F%E8%BF%B0%E3%80%91%E5%81%87%E8%AE%BE%E4%B8%80%E4%B8%AA%E8%BE%93%E5%85%A5%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E5%8C%85%E5%90%AB%E5%9C%86%E6%8B%AC%E5%8F%B7%E3%80%81%E6%96%B9%E6%8B%AC%E5%8F%B7%E5%92%8C%E8%8A%B1%E6%8B%AC%E5%8F%B7%E4%B8%89%E7%A7%8D%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%8B%AC%E5%8F%B7%2C%E4%BB%A5%E5%8F%8A%E5%85%B6%E5%AE%83%E4%B8%80%E4%BA%9B%E4%BB%BB%E6%84%8F%E5%AD%97%E7%AC%A6.%E7%BC%96%E5%86%99%E7%A8%8B%E5%BA%8F%2C%E5%88%A4%E5%88%AB%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%8B%AC%E5%8F%B7%E6%98%AF%E5%90%A6%E6%AD%A3%E7%A1%AE%E5%8C%B9%E9%85%8D%2C)
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")
}