题解 | #密码检查#
密码检查
https://www.nowcoder.com/practice/f2fbd8f61c564ca0b5feaa63ab42dae5
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<math.h>
#include<ctype.h>
int judge_whether_the_password_is_legal(const char* p) {
assert(p);//断言
int len = strlen(p);
if (len < 8) {//判断长度
return 0;
}
if (isdigit(*p)) {//判断首位首字符是否是数字
return 0;
}
int capital = 0;//大写字母标识
int lowercaseLetters = 0;//小写字母标识
int numbers = 0;//数字标识
for (int i = 0;i < len;i++) {
if (!isalnum(*p)) {//判断是否是数字或字母
return 0;
}
if (isupper(*p)) {//判断大写字母
capital=1;
}
else if (islower(*p)) {//判断小写字母
lowercaseLetters=1;
}
else if (isdigit(*p)) {//判断数字
numbers=1;
}
if ((capital + lowercaseLetters + numbers) >= 2) {//有两种类型
return 1;
}
p++;
}
return 0;
}
int main() {
int n=0;
scanf("%d",&n);
while(n--){
char p[100];
scanf("%s",p);
int ret=judge_whether_the_password_is_legal(p);
if (ret) {
printf("YES\n");
}
else {
printf("NO\n");
}
}
return 0;
}
#权限密码#
