社区讨论

灌水区参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m00j57yd
此快照首次捕获于
2024/08/19 13:02
2 年前
此快照最后确认于
2024/08/19 15:35
2 年前
查看原帖
B3843 题目描述
网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。合规的密码应满足以下要求 :。
CPP
只能由 a∼za∼z 之间 2626 个小写字母、A∼ZA∼Z 之间 2626 个大写字母、0909 之间 1010 个数字以及 !@#$ 四个特殊字符构成。

密码最短长度 :6:6 个字符,密码最大长度 :12:12 个字符。

大写字母,小写字母和数字必须至少有其中两种,以及至少有四个特殊字符中的一个。
输入格式
输入一行不含空格的字符串。约定长度不超过 100100。该字符串被英文逗号分隔为多段,作为多组被检测密码。 输出格式
输出若干行,每行输出一组合规的密码。输出顺序以输入先后为序,即先输入则先输出。
输入输出样例:
输入 #1
seHJ12!@,sjdkffH$123,sdf!@&12HDHa!,123&^YUhg@!
输出 #1
seHJ12!@ sjdkffH$123
CPP
#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
求大佬们帮忙看看
谢谢!!!

回复

0 条回复,欢迎继续交流。

正在加载回复...