请编写程序检查C语言源程序中下列符号是否配对:/* 与 */、(与)、[与]、{与}。

输入格式:
输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。

输出格式:
首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-?。

题目思路:看到符号匹配问题,直接考虑到使用栈解决,可以使用C++里的< stack > 模板,(如果不懂STACK模板可以去自学一下)。上代码。

#include<iostream>
#include<stack>using namespace std;
char t;
stack<char> st;bool deal(stack<char>& st);  //注意,这里一定需要‘&’,否则在main里st是没有元素的
int main()
{if (deal(st))cout << "YES" << endl;else{if (st.empty()){switch (t){case ')':cout << "NO\n?-)" << endl; break;case ']':cout << "NO\n?-]" << endl; break;case '}':cout << "NO\n?-}" << endl; break;case'*':cout << "NO\n?-*/" << endl; break;}}else{switch (st.top()){case '(': cout << "NO\n(-?" << endl; break;case '{': cout << "NO\n{-?" << endl; break;case '[': cout << "NO\n[-?" << endl; break;case '*': cout << "NO\n/*-?" << endl; break;}}}return 0;
}bool deal(stack<char>& st)
{char c[101];bool flag = true;while (cin >> c){if (c[0] == '.' && c[1] == '\0') break;for (int i = 0; c[i] != '\0'; i++){if (c[i] == '/' && c[i + 1] == '*'){st.push(c[i]);st.push(c[i + 1]);i++;          }else if (c[i] == '{' || c[i] == '[' || c[i] == '(')st.push(c[i]);else if (c[i] == '*' && c[i + 1] == '/'){if (!st.empty() && st.top() == '*'){st.pop();if (!st.empty() && st.top() == '/')st.pop();else{flag = false;t = c[i];break;}}else{flag = false;t = c[i];break;}}else if (c[i] == ')'){if (!st.empty() && st.top() == '(')st.pop();else{flag = false;t = c[i];break;}}else if (c[i] == '}'){if (!st.empty() && st.top() == '{')st.pop();else{flag = false;t = c[i];break;}}else if (c[i] == ']'){if (!st.empty() && st.top() == '[')st.pop();else{flag = false;t = c[i];break;}}}}if (st.empty() && flag)return true;   else return false;
}

习题3.8 符号配对 (20 分)相关推荐

  1. 习题3.8 符号配对 (20分)

    请编写程序检查C语言源程序中下列符号是否配对:/*与*/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对 ...

  2. 习题3.8 符号配对 (20分) c语言

    请编写程序检查C语言源程序中下列符号是否配对:/与/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对的符 ...

  3. 7-5 符号配对 (20 分)

    请编写程序检查C语言源程序中下列符号是否配对:/与/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对的符 ...

  4. 7-2 符号配对 (20 分) c语言版

    题目 请编写程序检查C语言源程序中下列符号是否配对:/与/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配 ...

  5. 7-6 符号配对 (20 分)(C语言版)

    请编写程序检查C语言源程序中下列符号是否配对:/与/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对的符 ...

  6. *chap3 7-3 符号配对 (20 分)

    请编写程序检查C语言源程序中下列符号是否配对:/*与*/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对 ...

  7. 习题3.8 符号配对 (20 分)【满分】【c语言】

    习题3.8 符号配对 (20 分) 请编写程序检查C语言源程序中下列符号是否配对:/与/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标 ...

  8. 习题1.8 二分查找 (20 分)

    习题1.8 二分查找 (20 分) 本题要求实现二分查找算法. 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下 ...

  9. 习题2.1 简单计算器 (20 分)

    习题2.1 简单计算器 (20 分) 模拟简单运算器的工作.假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算. 输入格式: 输入在一行中给出一个四则运 ...

  10. PTA习题7-1 选择法排序 (20 分)

    习题7-1 选择法排序 (20 分) 本题要求将给定的n个整数从大到小排序后输出. 输入格式: 在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格. 输入样例: 4 5 1 7 ...

最新文章

  1. QT程序启动加载流程简介
  2. 用Git向gitHub上传项目
  3. POJ 1057 File Mapping 最详细的解题报告
  4. HDU 1251 统计难题(Trie模版题)
  5. Linux里面nginx显示Hello,Nginx得知——Hello World模
  6. OA系统身份认证的设计
  7. 使用Java语言借助Quartz jar包实现定时器的方法
  8. 使用bat命令批量命名图片名称的方法及解决bat格式中文乱码的问题(如:图片.jpg)
  9. java高并发 pdf_Java高并发编程详解 PDF 下载
  10. grub引导删除双系统中的linux的正确姿势
  11. python 64式: 第28式、分布式锁与群组管理__3、tooz应用之分布式锁
  12. 蓝桥杯——算法训练——P0704
  13. 快递100接口使用整理
  14. 累死你的不是工作是工作方式 好的团队会教你如何工作
  15. cosx绝对值的积分
  16. 哔哩哔哩笔试 01串求最长1子串的长度
  17. 小白从0学习推荐系统 ---01 推荐系统简介
  18. Linux上重置MySQL密码 错误 ERROR 1045 (28000): Access denied for user ‘‘root‘‘@‘‘localhost‘‘ (using passw...
  19. [CF1131F] Asya And Kittens
  20. 常见网页悬浮广告(JavaScript)

热门文章

  1. 大家一起用gtk编程4(使用GDB调试程序)[zt]
  2. 面色红润从滋补五脏开始
  3. 概率论:集合、假设检验、分布、矩阵、估计
  4. python *args 和 **kwargs
  5. 欧几里得算法求最大公约数
  6. 2019全国知识图谱与语义计算大会
  7. 关于boostrap的modal隐藏问题(前端框架)
  8. GraphQL到底怎么用?看看这个例子就知道了
  9. Maven与Ant使用reportNG代替testng
  10. ActiveX 控件重绘无效问题,用CClientDC 而不是CPaintDC