题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
#include <stdio.h>
#include <string.h>
int main() {
char m[300];
int grade;
fgets(m, 302, stdin);
int len = strlen(m) - 1; //长度
//printf("%d",len);
if (len >= 0 && len <= 4 ) {
grade = 5;
} else if (len >= 5 && len <= 7) {
grade = 10;
} else if (len >= 8) {
grade = 25;
}
int sw = 0, tw = 0; //字母
int num = 0; //数字
int sm = 0; //符号
for (int i = 0; i <= len; i++) {
if ((m[i] >= 0x21 && m[i] <= 0x2f) || (m[i] >= 0x3a && m[i] <= 0x40) ||
(m[i] >= 0x5b && m[i] <= 0x60) || (m[i] >= 0x7b && m[i] <= 0x7e)) {
sm++;
}
if (m[i] >= '0' && m[i] <= '9' ) {
num++;
}
if (m[i] >= 'a' && m[i] <= 'z' ) {
sw++;
}
if (m[i] >= 'A' && m[i] <= 'Z') {
tw++;
}
}
if (sw != 0 && tw != 0) {
grade += 20;
} else if (sw != 0 || tw != 0) {
grade += 10;
}
if (num == 1) {
grade += 10;
} else if (num > 1) {
grade += 20;
}
if (sm == 1) {
grade += 10;
} else if (sm > 1) {
grade += 25;
}
if (sm != 0 && num != 0 && sw != 0 && tw != 0) {
grade += 5;
}
if (sm != 0 && num != 0 && sw != 0 && tw == 0) {
grade += 3;
}
if (sm != 0 && num != 0 && sw == 0 && tw != 0) {
grade += 3;
}
if (sm == 0 && num != 0 && (sw != 0 || tw != 0)) {
grade += 2;
}
// printf("%d", grade);
if (grade >= 0 && grade < 25)
printf("VERY_WEAK");
if (grade >= 25 && grade < 50)
printf("WEAK");
if (grade >= 50 && grade < 60)
printf("AVERAGE");
if (grade >= 60 && grade < 70)
printf("STRONG");
if (grade >= 70 && grade < 80)
printf("VERY_STRONG");
if (grade >= 80 && grade < 90)
printf("SECURE");
if (grade >= 90)
printf("VERY_SECURE");
return 0;
}

查看14道真题和解析