C语言经典题:用if语句实现:左右括号是否匹配;

####本程序的作用,输入一连串左右括号,然后判断他们是否匹配
函数从一开始定义一个字符数组用存储要输入的字符串,然后利用for循环,从第一个字符开始检测.
(1)先声明一个top变量等于0,如果碰到左括号‘(’,那么top+1,如果是右括号‘)’那么top-1,检测完后如果top=0不变,那么括号匹配;
(2)还要排除第一个是右括号第二个是左括号的情况,虽然这两个字符检测下来top=0不变,但是不匹配。这种情况例如“ ‘)(’ ‘())(’ ”,这种情况可以设立一个标记,flag,因为总是先有左括号,下来才是右括号,所以当碰到左括号时,要top=1时才能减1,否则先出个右括号,像上面那种,虽然左右括号数量上是匹配的,但并不匹配,你懂
(3).我这个并不是用栈实现的,所以这个只是简单实现功能而已,如果有不对的地方,欢迎你们喷我,哈哈

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
	char arr2[40];
	int flag = 0;
	int top = 0;
	int i = 0;
	printf("please input a string :");
	gets(arr2);
	for (i = 0; i < sizeof arr2 / sizeof arr2[0]; i++)
	{
		if (arr2[i] == '(')
			top++;
		else
		{
			if (top = 1 && arr2[i] == ')')
				top--;
			else
				flag = 1;
		}
	}
	if (top != 0)
		printf("匹配\n");
	else
		printf("不匹配\n");
	system ("pause");
	return 0;
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值