编写一个C++程序,该程序能够接收用户输入的一段C语言代码,并检查以下符号是否正确配对: 注释符号:/* 与 */ 圆括号:( 与 ) 花括号:{ 与 } 方括号:[ 与 ] 如果输入的C语言代码中,以上符号都已正确配对,输出YES,反之输出NO
时间: 2024-10-18 20:19:43 浏览: 24
为了编写一个C++程序来检查C语言代码中的符号配对,我们可以使用栈数据结构来辅助检查。栈是一种后进先出(LIFO)的数据结构,非常适合处理这种需要匹配的场景。下面是一个简单的示例程序,它通过读取用户输入并逐行解析来完成这个任务:
```cpp
#include <iostream>
#include <stack>
#include <string>
bool check_brackets(const std::string& code) {
const char* open_chars = "([{<";
const char* close_chars = ")]}>";
std::stack<char> brackets;
for (const char c : code) {
if (open_chars.find(c) != std::string::npos) { // 找到开放字符
brackets.push(c);
} else if (close_chars.find(c) != std::string::npos) { // 找到关闭字符
if (brackets.empty() || open_chars[brackets.top()] != c) { // 如果栈为空或者当前字符不是对应的开启字符,返回false
return false;
}
brackets.pop(); // 否则,移除匹配的开括号
}
}
// 检查栈是否为空,如果没有未匹配的开括号,则返回true
return brackets.empty();
}
int main() {
std::string input;
std::cout << "请输入C语言代码:" << std::endl;
getline(std::cin, input);
if (check_brackets(input)) {
std::cout << "YES" << std::endl;
} else {
std::cout << "NO" << std::endl;
}
return 0;
}
```
阅读全文