题解 | #密码强度等级#

密码强度等级

https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361

#include <stdio.h>
#include <string.h>

int main() {
    //输入输出
    char str[301] = {'\0'};
    scanf("%s", str);
    char out[7][16] =
    {"VERY_WEAK", "WEAK", "AVERAGE", "STRONG", "VERY_STRONG", "SECURE", "VERY_SECURE",};
    //统计字符
    int i = 0;
    int LETTER = 0;
    int letter = 0;
    int digit = 0;
    int punctuation = 0;
    while (str[i] != '\0') {
        if (str[i] >= 'A' && str[i] <= 'Z') {
            LETTER++;
            i++;
        } else if (str[i] >= 'a' && str[i] <= 'z') {
            letter++;
            i++;
        } else if (str[i] >= '0' && str[i] <= '9') {
            digit++;
            i++;
        } else {
            punctuation++;
            i++;
        }
    }
    //统计分数
    int score = 0;
    //一、密码长度
    int len = strlen(str);
    if (len >= 8) {
        score += 25;
    } else if (len >= 5 && len <= 7) {
        score += 10;
    } else {
        score += 5;
    }
    //二、字母
    if (LETTER != 0 && letter != 0) {
        score += 20;
    } else if (LETTER != 0 || letter != 0) {
        score += 10;
    } else {
        score += 0;
    }
    //三、数字
    if (digit > 1) {
        score += 20;
    } else if (digit == 1) {
        score += 10;
    } else {
        score += 0;
    }
    //四、符号
    if (punctuation > 1) {
        score += 25;
    } else if (punctuation == 1) {
        score += 10;
    } else {
        score += 0;
    }
    //五、奖励
    if (LETTER != 0 && letter != 0 && digit != 0 && punctuation != 0) {
        score += 5;
    } else if ((LETTER != 0 || letter != 0) && digit != 0 && punctuation != 0) {
        score += 3;
    } else if ((LETTER != 0 || letter != 0) && digit != 0) {
        score += 2;
    } else {
        score += 0;
    }
    //评分标准
    int level = 0;
    if (score >= 25) {
        level++;
    }
    if (score >= 50) {
        level++;
    }
    if (score >= 60) {
        level++;
    }
    if (score >= 70) {
        level++;
    }
    if (score >= 80) {
        level++;
    }
    if (score >= 90) {
        level++;
    }
    printf("%s", out[level]);

    return 0;
}

全部评论

相关推荐

qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务