定义函数判断
2026-07-24 11:12:27
发布于:湖北
35阅读
0回复
0点赞
密码合规
这是一道典型的字符串处理和逻辑判断题目。我们需要编写一个函数来检查每个密码是否符合所有规则,然后将输入的一长串字符串按逗号分割,逐个检查。
核心解题思路
- 分割字符串:输入是一整行,用逗号分隔。我们需要把它们拆分成一个个独立的密码字符串。
- 编写检查函数
check(string s):- 长度检查:判断
s.length()是否在 6 到 12 之间。 - 字符合法性检查:遍历字符串中的每个字符,判断它是否属于允许的集合(小写字母、大写字母、数字、
!@#$)。如果遇到其他字符(如&,^,\等),直接判定不合规。 - 类型统计:在遍历过程中,记录是否出现了小写字母、大写字母、数字、特殊字符。
- 组合规则检查:
- 统计“大写字母、小写字母、数字”这三类中出现了几种,必须 种。
- 必须包含至少一个特殊字符(
!@#$)。
- 长度检查:判断
- 主程序流程:读取整行 -> 按逗号分割 -> 调用
check-> 如果通过则输出。
C++ 代码实现
#include<iostream>
using namespace std;
bool c(string x){
int a=0,b=0,c0=0,d=0;
if(x.size()<6 || x.size()>12){
return false;
}
for(int i=0;i<x.size();i++){
if(x[i]>='a' && x[i]<='z'){
a=1;
}
else if(x[i]>='A' && x[i]<='Z'){
b=1;
}
else if(x[i]>='0' && x[i]<='9'){
c0=1;
}
else if(x[i]=='!' || x[i]=='@' || x[i]=='#' || x[i]=='$'){
d=1;
}
else{
return false;
}
}
if(d==0) return false;
if(a + b + c0 < 2) return false;
return true;
}
int main(){
string s;
string t="";
cin >> s;
for(int i=0; i<s.size(); i++){
if(s[i] != ','){
t += s[i];
} else {
if(c(t)){
cout << t << endl;
}
t = "";
}
}
// 处理最后一个密码
if(c(t)){
cout << t << endl;
}
return 0;
}
这里空空如也



有帮助,赞一个