SunriseLJY @ 2024-12-15 09:30:59
自己调了半天找不到问题......
求大佬调
代码
#include<iostream>
using namespace std;
bool sc = false; //strange char
int bsn = 0; //big letter,small letter,number
bool check(string s){
if(s.size() > 12 || s.size() < 6) return false;
else{
for(int i=0; i<s.size(); i++){
if(s[i] >= '0' && s[i] <= '9') bsn++;
else if(s[i] >= 'A' && s[i] <= 'Z') bsn++;
else if(s[i] >= 'a' && s[i] <= 'z') bsn++;
else if(s[i] == '!' || s[i] == '@') sc = true;
else if(s[i] == '#' || s[i] == '$') sc = true;
}
if(sc && bsn >= 2) return true;
return false;
}
}
int main(){
bool flag = false;
string str;
getline(cin, str);
string st;
for(int i=0; i<str.size(); i++){
if(str[i] == ','){
flag = true;
if(check(st)) cout<<st<<endl;
st = "";
continue;
}
st += str[i];
}
if(!flag){
if(check(st)) cout<<st<<endl;
}
return 0;
}
by gaohuashengtx @ 2024-12-15 20:52:12
#include<bits/stdc++.h>
using namespace std;
string s,t;
int main() {
cin>>s;s=s+",";
for(int i=0;i<s.size();i++){
if(s[i]==','){
if(t.size()<6||t.size()>12){t="";continue;}//判断位数
int a=0,b=0,c=0,d=0,f1=0;//a代表小写字母 b代表大写字母 c代表数字 d代表特殊字符 f1代表是否都不满足以上条件
for(int j=0;j<t.size();j++){
if(t[j]>='a'&&t[j]<='z')a++;//判断小写字母
else if(t[j]>='A'&&t[j]<='Z')b++;//判断大写字母
else if(t[j]>='0'&&t[j]<='9')c++;//判断数字
else if(t[j]=='!'||t[j]=='@'||t[j]=='#'||t[j]=='$')d++;//判断特殊字符
else {f1=1;break;}
}
if(((a>0)+(b>0)+(c>0))>=2&&d>0&&!f1){cout<<t<<endl;}//判断满足条件的个数
t="";
}
else t+=s[i];
}
return 0;
}
求关