编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。注意if语句的最外面至少有一对括号。
输出:RIGTH 3 3
输出:WRONG 3 4
#include <iostream>
#include <string>
using namespace std;
int main()
{
int len,i,l,r,k,flag,a[50];
string s;
while(cin>>s){
len=s.length();
l=0;
r=0;
k=0;
flag=1;
for(i=0;i<len;i++)
{
if(s[i]=='(')
{
l++;
a[k++]=1;
}
else if(s[i]==')')
{
r++;
if(a[k-1]==1&&k>0)
{
a[k-1]=0;
k--;
}
else
flag=0;
}
if((i==2&&s[i]!='(')||(i==len-1&&s[i]!=')'))//最外面至少有一对括号
flag=0;
}
if(a[0]==0&&flag!=0)
cout<<"RIGHT"<<" ";
else
cout<<"WRONG"<<" ";
cout<<l<<" "<<r<<endl;
}
return 0;
}