编程的时候,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 <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; }
时间: 2024-10-10 07:50:10