到底哪错了?

B3843 [GESP202306 三级] 密码合规

_WBL_ @ 2025-01-01 13:00:00

#include<bits/stdc++.h>
using namespace std;
bool p(string s){
    int z=s.size(),a=0,b=0,c=0,q=0;
    if(z<6||z>12){
        return 0;
    }
    for(int i=0;i<z;i++){
        if(s[i]>='A'&&s[i]<='Z'){
            a=1;
        }
        else if(s[i]>='a'&&s[i]<='z'){
            b=1;
        }
        else if(s[i]>='0'&&s[i]<='9'){
            c=1;
        }
        else if(s[i]=='@'||s[i]=='#'||s[i]=='$'||s[i]=='!'){
            q=1;
        }
        else{
            return 0;   
        }
    }
    if((a+b+c)>=2&&q==1){
        return 1;
    }
    else{
        return 0;
    }
}
int main(){
    string s;
    cin>>s;
    string M="";
    int l=s.size();
    for(int i=0;i<l;i++){
        if(s[i]!=','){
            M+=s[i];
        }
        else{
            if(p(M)){
                cout<<M<<endl;
                M="";
            }
        }
    }
    if(p(M)){
        cout<<M<<endl;
    }
}

by b__b @ 2025-01-01 13:10:45

main函数内的

M=“”

应放在if外


by _WBL_ @ 2025-01-01 13:28:29

@b__b 谢谢,AC了


|