题解 | #密码强度等级#
密码强度等级
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; }