用python解决问题。【问题描述】 编写一个程序,用于对C源程序进行括号匹配检查,并将检查结果输出到文件中。 程序应检查输入源程序中左右大括号、小括号的个数是否相等,并且符合C语言语法规定的括号嵌套规则,不得交叉嵌套。输入文件最长不超过500个字符。 本程序只检查括号是否匹配,不用对输入源程序中的其它语法成份进行检查。 【输入文件】 输入文件为当前目录下的check.in,是一段任意的C程序。 【输出文件】 输出文件为当前目录下的check.out。该文件只有一行,是一个单词"True"或"False"。如果没有括号匹配错误则输出"True",否则输出"False"。
时间: 2024-01-22 16:18:12 浏览: 74
以下是用Python编写的程序实现对C源程序进行括号匹配检查,并将检查结果输出到文件中。
```python
# 打开输入文件
with open('check.in', 'r') as f:
source_code = f.read()
# 检查括号是否匹配
stack = []
for c in source_code:
if c in ['(', '[', '{']:
stack.append(c)
elif c in [')', ']', '}']:
if not stack:
with open('check.out', 'w') as f:
f.write('False')
exit()
else:
top = stack.pop()
if (c == ')' and top != '(') or (c == ']' and top != '[') or (c == '}' and top != '{'):
with open('check.out', 'w') as f:
f.write('False')
exit()
if stack:
with open('check.out', 'w') as f:
f.write('False')
else:
with open('check.out', 'w') as f:
f.write('True')
```
程序首先打开输入文件,读取C源程序的内容。然后,程序使用一个栈来存储左括号,遍历源程序中的每个字符。如果遇到左括号,就将其入栈;如果遇到右括号,就从栈中取出一个左括号进行匹配。如果栈为空,或者取出的左括号与当前右括号不匹配,则说明括号不匹配,程序输出False并结束。如果遍历完所有字符后,栈不为空,则说明括号不匹配,程序输出False并结束。否则,程序输出True。
阅读全文