if语句中括号的匹配
2015-07-08 20:55
429 查看
编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。注意if语句的最外面至少有一对括号。
输入:if((a==1)&&(b==1))
输出:RIGTH 3 3
输入:if((a==1))&&(b==1))
输出:WRONG 3 4
#include<iostream>
#include<stack>
using namespace std;
void getResult(char *str)
{
stack<char> c;
if(str==NULL)
return;
int len=strlen(str);
int flag=1;
int left=0;
int right=0;
char *a="RIGHT";
char *b="WRONG";
char *p=a;
for(int i=0;i<len;i++)
{
if(str[i]=='(')
{
left++;
c.push(str[i]);
}
if(str[i]==')')
{
right++;
if(c.size()-1==0&&i!=len-1)
{
flag=0;
p=b;
}
}
}
if(left!=right)
p=b;
cout<<p<<" "<<left<<" "<<right<<endl;
}
void main()
{
char str[1000];
gets(str);
getResult(str);
}
编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。注意if语句的最外面至少有一对括号。
输入:if((a==1)&&(b==1))
输出:RIGTH 3 3
输入:if((a==1))&&(b==1))
输出:WRONG 3 4
#include<iostream>
#include<stack>
using namespace std;
void getResult(char *str)
{
stack<char> c;
if(str==NULL)
return;
int len=strlen(str);
int flag=1;
int left=0;
int right=0;
char *a="RIGHT";
char *b="WRONG";
char *p=a;
for(int i=0;i<len;i++)
{
if(str[i]=='(')
{
left++;
c.push(str[i]);
}
if(str[i]==')')
{
right++;
if(c.size()-1==0&&i!=len-1)
{
flag=0;
p=b;
}
}
}
if(left!=right)
p=b;
cout<<p<<" "<<left<<" "<<right<<endl;
}
void main()
{
char str[1000];
gets(str);
getResult(str);
}
相关文章推荐
- 黑马程序员————C语言总结(3)
- 关于mysql写触发器中运用游标的问题。
- [leetcode-111]Minimum Depth of Binary Tree(C语言)
- ==和equals()区别
- 在AndroidManifest.xml中配置友盟cocos2dx游戏统计参数
- ECMAScript5 DOM模型 Comment详解
- UGUI Screen Space-Camera 模式 中 Animation 出现的Bug
- 挑7
- [LeetCode][Java] Regular Expression Matching
- HDOJ 1106 排序
- VBScript例子程序
- Word Ladder II
- 黑马程序员————C语言总结(1)
- 599 奋斗的小蜗牛
- unity调用Android通过编译 java jar包出现问题解决和简单支付流程
- 最佳vim技巧
- 5类双绞线的线序
- 进程上下文 中断上下文
- Linux中的权限以及访问控制
- Linux中的权限以及访问控制