B3843 题目描述
网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。合规的密码应满足以下要求 :。
只能由 a∼za∼z 之间 2626 个小写字母、A∼ZA∼Z 之间 2626 个大写字母、0∼90∼9 之间 1010 个数字以及 !@#$ 四个特殊字符构成。
密码最短长度 :6:6 个字符,密码最大长度 :12:12 个字符。
大写字母,小写字母和数字必须至少有其中两种,以及至少有四个特殊字符中的一个。
输入格式
输入一行不含空格的字符串。约定长度不超过 100100。该字符串被英文逗号分隔为多段,作为多组被检测密码。 输出格式
输出若干行,每行输出一组合规的密码。输出顺序以输入先后为序,即先输入则先输出。
输入输出样例:
输入 #1
seHJ12!@,sjdkffH$123,sdf!@&12HDHa!,123&^YUhg@!
输出 #1
seHJ12!@ sjdkffH$123
#include<bits/stdc++.h>
using namespace std;
bool crrc(char a){
if(a == '!' || a == '@' || a == '#' || a == '$' || a >= 'A' && a <= 'Z' || a >= 'a' && a <='z' || a >= '0' && a <= '9'){
return true;
}else{
return false;
}
}
int main(){
char a[110],b[110];
cin>>a;
int len = strlen(a);
int nlen=0;
int sum=0;
for(int i=0;i<len;++i){
if(a[i] == ',' || i + 1 == len){
for(int i=0;i<nlen;++i){
if(!crrc(b[i])){
sum++;
}
}
if(sum == 0){
for(int i=0;i<nlen;++i){
cout<<b[i];
}
cout<<endl;
}
for(int i=0;i<nlen;++i) b[i]=0;
nlen=0;
sum=0;
continue;
}else{
b[i] = a[i];
nlen++;
}
}
return 0;
}
雀食可以判断,但只判断了第一串就不判断了,往后不输出的原因是:往后的sum都会莫名其妙的不为0
求大佬们帮忙看看
谢谢!!!