HJ87密码等级

这个题目就是细心处理一下就行,比较简单

cpp 复制代码
#include <ctype.h>
#include <stdio.h>
#include <stdbool.h>

void PrintLevel(unsigned int score)
{
    if(score >= 90)
    {
        printf("VERY_SECURE");
    }
    else if(score >= 80)
    {
        printf("SECURE");
    }
    else if(score >= 70)
    {
        printf("VERY_STRONG");
    }
    else if(score >= 60)
    {
        printf("STRONG");
    }
    else if(score >= 50)
    {
        printf("AVERAGE");
    }
    else if(score >= 25)
    {
        printf("WEAK");
    }else if(score >= 0)
    {
        printf("VERY_WEAK");
    }
}

int GetScoreByStrlen(int *score, unsigned int len)
{
    if(len <= 4)
    {
        *score = 5;
    }else if(len <= 7)
    {
        *score = 10;
    }
    else {
        *score = 25;
    }
    return 0;
}

int GetScoreByCharacter(int *score, char* array, int len)
{
    bool withAlphaFlag = false;
    bool alphaWithLowerFlag = false;
    bool alphaWithUpperFlag = false;

    bool withDigitFlag = false;
    int digitCount = 0;

    bool withCharacterFlag = false;
    int characterCount = 0;

    for(int i = 0; i < len; i++)
    {
        if(isalpha(array[i]))
        {
            withAlphaFlag = true;
            if(array[i] >= 'a' && array[i] <= 'z')
            {
                alphaWithLowerFlag = true;
            }
            if(array[i] >= 'A' && array[i] <= 'Z')
            {
                alphaWithUpperFlag = true;
            }
        }
        else if(isdigit(array[i]))
        {
            withDigitFlag = true;
            digitCount++;
        }
        else {
            withCharacterFlag = true;
            characterCount++;
        }
    }

    int alphaScore = 0;
    if(!withAlphaFlag)
    {
        alphaScore = 0;
    }else {
        if(alphaWithLowerFlag && alphaWithUpperFlag)
        {
            alphaScore = 20;
        }
        else {
            alphaScore = 10;
        }
    }
    *score += alphaScore;

    int digitScore = 0;
    if(!withDigitFlag)
    {
        digitScore = 0;
    }else {
        if(digitCount == 1)
        {
            digitScore = 10;
        }
        else {
            digitScore = 20;
        }
    }
    *score += digitScore;

    int characterScore = 0;
    if(!withCharacterFlag)
    {
        characterScore = 0;
    }else {
        if(characterCount == 1)
        {
            characterScore = 10;
        }
        else {
            characterScore = 25;
        }
    }
    *score += characterScore;

    int specialScore = 0;
    if(alphaWithLowerFlag && alphaWithUpperFlag && withDigitFlag && withCharacterFlag)
    {
        specialScore = 5;
    }
    else if(withAlphaFlag && withDigitFlag && withCharacterFlag)
    {
        specialScore = 3;
    }
    else if(withAlphaFlag && withDigitFlag)
    {
        specialScore = 2;
    }
    *score += specialScore;

    return 0;
}

int main() {
    char strArray[301] = {'\0'};
    while (scanf("%s",strArray) != EOF) { // 注意 while 处理多个 case
        // 64 位输出请用 printf("%lld") to 
        int score = 0;
        
        int len = strlen(strArray);
        GetScoreByStrlen(&score, len);
        GetScoreByCharacter(&score, strArray, len);
        PrintLevel(score);
    }
    return 0;
}
相关推荐
大阳1232 小时前
线程(基本概念和相关命令)
开发语言·数据结构·经验分享·算法·线程·学习经验
weixin_307779133 小时前
VS Code配置MinGW64编译GNU 科学库 (GSL)
开发语言·c++·vscode·算法
学行库小秘3 小时前
ANN神经网络回归预测模型
人工智能·python·深度学习·神经网络·算法·机器学习·回归
没落之殇4 小时前
基于C语言实现的HRV分析方法 —— 与Kubios和MATLAB对比
算法
秋难降4 小时前
线段树的深度解析(最长递增子序列类解题步骤)
数据结构·python·算法
楚韵天工4 小时前
基于GIS的无人机模拟飞行控制系统设计与实现
深度学习·算法·深度优先·无人机·广度优先·迭代加深·图搜索算法
你也向往长安城吗5 小时前
推荐一个三维导航库:three-pathfinding-3d
javascript·算法
百度智能云5 小时前
VectorDB+FastGPT一站式构建:智能知识库与企业级对话系统实战
算法
AI小白的Python之路6 小时前
数据结构与算法-排序
数据结构·算法·排序算法
DashVector6 小时前
如何通过Java SDK检索Doc
后端·算法·架构