c语言编程检查括号是否配对,【C/C++】C源程序括号匹配检查

这些题目都是大一刚入学时学习C语言的课后作业,在OJ上看到还保留着,就都整理下发出来吧......(只有题和代码)

【问题描述】

编写程序,检查给定的C源程序文件中花括号是否匹配,规定花括号的总个数不超过50个。花括号匹配规则:

1)文件中左花括号“{”个数与右花括号“}”个数相等;

2)从文件中头开始顺序查找右花括号“}”的个数,在任何时候均不超过所遇到的左花括号“{”个数。

注意:

1)源程序注释中(/* … */)花括号应被忽略,不参与匹配。

2)源程序中的字符串常量不会出现花括号。

【输入形式】

要检查的C源程序文件名为input.c,在当前目录下。

【输出形式】

若花括号匹配,则向控制台输出1,并在新的一行上输出相应的花括号串;若不匹配,则向控制台输出0,同时在新的一行上输出相应的花括号串。

【样例输入】

假如当前目录下input.c文件的内容为:

include

main()

{

int a,b,i,sum1,sum2;

/{input}/

scanf("%d%d",&a,&b);

sum1=sum2=0;

for(i=a;i<=b;i++)

{

if(i%2==0)

{

sum1+=i;

}

else

{

sum2+=i;

}

}

/output}/

printf("Sum1=%d, Sum2=%d",sum1,sum2);

}

【样例输出】

1

{{{}{}}}

【样例说明】

源程序input.c中的花括号符合匹配规则,所以先输出1。然后依次输出所有出现的花括号,但注意注释中的花括号不参与匹配,也不输出。

【评分标准】

该题要求检查花括号是否匹配,共有5个测试点。上传C语言文件名为example1c.c。

【代码】

#include//it's a easy problem.

#include

int main()

{

char word;

FILE *fp;

fp = fopen("input.c","r");

char cont[51]= {};

int i = 0;

int m = 0;

int n = 0;

int numl = 0;

int numr = 0;

while(fscanf(fp,"%c",&word) != EOF)

{

if(m == 0)

{

if(word == '/')

{

m = 1;

}

}

else if(m == 1)

{

if(word == '/')

{

m = 0;

}

}

if(m == 0)

{

if(word == '{')

{

numl += 1;

cont[i++]='{';

}

else if(word == '}')

{

numr += 1;

cont[i++]='}';

}

}

if(numr > numl)

{

n = 1;

}

}

if(n == 1)

{

printf("0\n");

for(i=0;cont[i] != '\0';i++)

{

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

}

}

else

{

if(numl == numr)

{

printf("1\n");

for(i=0;cont[i] != '\0';i++)

{

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

}

}

else

{

printf("0\n");

for(i=0;cont[i] != '\0';i++)

{

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

}

}

}

return 0;

}

PS:由于当时刚学C语言,很多代码显得很稚嫩...需要的人见谅...

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值