题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
#include <ctype.h> #include <stdio.h> #include <string.h> // 1. 得到密码字符串 // 2. 根据规则打分 // 3. 输出分数对应等级 int main() { char input[310] = {0}; gets(input); int score = 0; int len = strlen(input); if(len <= 4) { score += 5; } else if(len <= 7) { score += 10; } else { score += 25; } int lower_num = 0; int upper_num = 0; int digit_num = 0; int other_num = 0; for(int i = 0; i < len; ++ i) { if(islower(input[i])) { ++ lower_num; } else if(isupper(input[i])) { ++ upper_num; } else if(isdigit(input[i])) { ++ digit_num; } else { ++ other_num; } } if((lower_num > 0 && upper_num == 0)|| (upper_num > 0 && lower_num == 0)) { score += 10; } if(lower_num > 0 && upper_num > 0) { score += 20; } if(digit_num == 1) { score += 10; } if(digit_num > 1) { score += 20; } if(other_num == 1) { score += 10; } if(other_num > 1) { score += 25; } if(lower_num>0 && upper_num> 0 && digit_num>0 && other_num>0) { score += 5; } else if((lower_num>0 || upper_num> 0) && digit_num>0 && other_num>0) { score += 3; } else if((lower_num>0 || upper_num> 0) && digit_num>0) { score += 2; } if(score >= 90) { puts("VERY_SECURE"); } else if(score >= 80) { puts("SECURE"); } else if(score >= 70) { puts("VERY_STRONG"); } else if(score >= 60) { puts("STRONG"); } else if(score >= 50) { puts("AVERAGE"); } else if(score >= 25) { puts("WEAK"); } else { puts("VERY_WEAK"); } return 0; }