题解 | #密码强度等级#

密码强度等级

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;
}

全部评论

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务