LiXinLong_LXL @ 2024-05-31 22:46:26
#include<bits/stdc++.h>
#define ll long long
using namespace std;
char s[105];
int ans;
int num=1,len,flag;
bool have1,have2,have3,have4,f=1;
int main(){
cin>>s;
s[strlen(s)]=',';
for(int i=0;i<=strlen(s);i++){
//条件1
if(s[i]>='a' and s[i]<='z') have1=1;
else if(s[i]>='A' and s[i]<='Z') have2=1;
else if(s[i]>='0' and s[i]<='9') have3=1;
else if(s[i]=='!'||s[i]=='@'||s[i]=='#'||s[i]=='$') have4=1;
else if(s[i]!=',') f=0;
else{
bool temp=0;
//判断是否满足第一个条件
//判断是否含有要求的字符
if(f==0) temp=1;
//判断是否满足第二个条件
//判断长度
if(len<6 or len>12) temp=1;
//判断是否满足第三个条件
ans=have1+have2+have3;
if(ans<2) temp=1;
ans+=have4;
if(ans<3) temp=1;
//审核
if(temp==1){
flag=i+1;
len=0;
ans=0;
f=1;
have1=0,have2=0,have3=0,have4=0;
continue;
}
//输出
for(int j=flag;j<i;j++) cout<<s[j];
cout<<endl;
//标记
flag=i+1;
len=0;
ans=0;
f=1;
have1=0,have2=0,have3=0,have4=0;
}
len++;
}
return 0;
}
by ybx2023saier @ 2024-07-16 16:08:53
@LiXinLong_LXL
#include<iostream>
using namespace std;
char s[101];
char str[101];//存需判断的一段字符串
bool check(char *s,int len)//判断
{
if(len<6||len>12)
return false;//判断长度
bool dx=false,xx=false,sz=false,zf=false;//dx:大写;xx:小写;sz:数字;zf:特殊字符
for(int i=0;s[i]!='\0';i++)
{
if('A'<=s[i]&&s[i]<='Z') dx=true;
else if('a'<=s[i]&&s[i]<='z') xx=true;
else if('0'<=s[i]&&s[i]<='9') sz=true;
else if(s[i]=='!'||s[i] == '@'||s[i]=='#'||s[i]=='$') zf=true;
else return false; //如果有特殊字符的字符以外的字符,判为不合法
}
if(!zf) return false;
if(dx+xx+sz<2) return false;//至少要有两个
return true;
}
int main()
{
cin>>s;
int len=0;
for(int i=0;s[i]!='\0';i++)
{
if(s[i]!=',')
{
str[len]=s[i];
len++;
}
else
{
str[len]='\0';
if(check(str,len))//判断
cout<<str<<endl;
len=0;//归置
}
}
if(len>0)//对最后一段字符串进行判断
{
str[len]='\0';
if(check(str,len))
cout<<str<<endl;
}
return 0;
}