IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言括号匹配问题的解法 -> 正文阅读

[C++知识库]C语言括号匹配问题的解法

? ? ? ? ? ? ? ? ? ? ?话不多说,文中解释

?#include <stdio.h>
? ?int main()
{ ?char a[50];
?? ?gets(a);
?? ?int flag=1;//定义flag做匹配与不匹配的判断?
?? ?int i=0,j;?
?? ?
?? ?for(i=0;a[i]!='\0';i++)//开始在字符串遍历中寻找右括号?
?? ?{ ?
?? ? ? if(a[i]==')')
?? ? ? { ?
?? ? ? ? ?flag=0;//找到一个右括号就设flag为0?
?? ??? ? ?for(j=i;j>=0;j--)//从找到右括号的地方向左寻找左括号?
? ? ? ? ? {?? ? ? ?? ??
?? ??? ??? ? if(a[j]=='(')
?? ? ? ?? ? ? ? {flag=1;a[i]=1;a[j]=1;break;}//如果找到的左括号与其匹配,则flag转为1,同时消去左右括号 (为方便接下来的配对)?
?? ? ? ?? ? ? ? else if(a[j]=='{'||a[j]=='[')
?? ? ? ?? ? ? ? {break;}
?? ? ? ? ?}
?? ? ? }
?? ? ? ? if(a[i]=='}')//思路同上 ;?
?? ? ? { ?flag=0;
?? ??? ? ?for(j=i;j>=0;j--)
? ? ? ? ? {?? ? ? ?? ??
?? ??? ??? ? if(a[j]=='{')
?? ? ? ?? ? ? ? {flag=1;a[i]=1;a[j]=1;break;}
?? ? ? ?? ? ? ? else if(a[j]=='('||a[j]=='[')
?? ? ? ?? ? ? ? {break;}
?? ? ? ? ?}
?? ? ? }
?? ? ? ? if(a[i]==']')//思路同上;?
?? ? ? {
?? ? ? ? ?flag=0;
?? ??? ? ?for(j=i;j>=0;j--)
? ? ? ? ? {?? ? ? ?? ??
?? ??? ??? ? if(a[j]=='[')
?? ? ? ?? ? ? ? {flag=1;a[i]=1;a[j]=1;break;}
?? ? ? ?? ? ? ? else if(a[j]=='{'||a[j]=='(')
?? ? ? ?? ? ? ? {break;}
?? ? ? ? ?}
?? ? ? }
?? ??? ?if(flag==0){break;}//当发现左右括号不匹配时, 直接结束循环得出结论?
?? ?}
?? ? ? ?if(flag=1)//如果遍历结束后flag为1,再次遍历字符串检测是否仍有左括号存在;
?? ??? ? ? ? ? ? ?//因为在上面遍历过程中如果左括号数量多于右括号会导致左括号不会被消除完,这种情况当然也是不配对?
?? ??? ?{
?? ??? ??? ?for(i=0;a[i]!='\0';i++)
?? ??? ??? ?{
?? ??? ??? ?if(a[i]=='{'||a[i]=='('||a[i]=='[')
?? ??? ??? ? {flag=0;}
?? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ?if(flag==1)printf("yes");//最后打印?
?? ?else if(flag==0)printf("no");
?? ?return 0;
}

//? 该方法主要思路是寻找右括号后向前寻找并消除对应左括号,以达到不影响后续匹配的目的;本人初学C语言,也希望同各位初学者多多交流一下。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 15:47:14  更:2021-12-18 15:49:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:37:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码