首页 > 其他分享 >HJ87密码等级

HJ87密码等级

时间:2024-07-25 20:26:12浏览次数:13  
标签:int len else 密码 score && printf HJ87 等级

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

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

标签:int,len,else,密码,score,&&,printf,HJ87,等级
From: https://blog.csdn.net/2301_77560238/article/details/140699249

相关文章

  • 最新nacos下载安装,版本号2.4.0,nacos持久化存储到本地mysql中,nacos配置登录账户密码
    官网:https://nacos.io/zh-cn/docs/quickstart/quick-start1.下载地址:https://github.com/alibaba/nacos/releases网络不好,很难下载。直接使用git克隆,然后自己编译,这是最快的了。克隆:gitclonehttps://github.com/alibaba/nacos.git然后到根目录中(我的:E:\Demos\nacos),执行cmd命令:mv......
  • Mysql中修改新创建用户的密码
    创建新用户时,新用户没有权限,所以自己无法修改成简单的密码(1)可以通过root用户给权限,让新用户自己修改:1.先进入root用户,mysql-uroot-p1234562.给新用户权限:grantallprivilegeson.to'新用户名'@'localhost'withgrantoption;(其中withgrantoption是让新用户......
  • 电脑上谷歌Gmail邮箱更改密码教程
    电脑上谷歌賬號如何修改密码注意事项:1.如果是多个谷歌賬號修改密码,建议使用浏览器无痕模式。2.同一个IP下不要批量登录修改密码,最多不要超过十个3.由于修改谷歌号的密码属于敏感操作,需要在确保网络稳定的前提下进行操作,不然可能出现异常活动被风控,要求二次短信验证。第一步:通过谷......
  • 密码学-RSA基础题解题脚本-Python
    importgmpy2#计算大整数模块importlibnumimportrsafromCrypto.PublicKeyimportRSA#安装时安装pycryptodome模块#已知:p,q,e,cdefknown_p_q_e_c():p=int(input('请输入一个素数p:'))q=int(input('请输入另一个素数q:'))e=int(input('请输入公钥e:'))......
  • van-field 查看密码 眼睛
      <van-fieldclass="login-input"v-model="OaPassword":type="!showPassword?'password':'text'"left-......
  • 达梦dmp导出导入命令包含特殊字符例子(以密码包含#为例)
    1WINDOWS导出导入1.1导出达梦客户端目录\dexp.exeuserid=TEST/\"TEST#12345678\"@10.10.100.100:5237DIRECTORY=D:\1FILE=dm_exp_test_10.dmpCOMPRESS=YLOG=dm_exp_test_10.log1.2导入--TABLE_EXISTS_ACTION=TRUNCATE对dimp不生效,如果需要truncate表数据后导入,自行......
  • 龙哥量化:通达信均线赚钱密码
    如果您需要代写技术指标公式,请联系我。龙哥QQ:591438821龙哥微信:Long622889均线赚钱密码:1、所有的上涨,最低价都是围绕5均线,向上慢慢抬高的;2、所有的下跌,最高价都是围绕5均线,向下慢慢降低的;3、5均线向上或者向下改变实际取决于第一天和第六天收盘价的高低;4、如果第六天......
  • 达梦用户密码策略查询
    selectusername,account_status,(casewhenpassword_versions=1then'禁止与用户名相同'whenpassword_versions=2then'口令长度不小于9'whenpassword_versions=3then'禁止与用户名相同&口令长度不小于9'whenpassword_versions=4then'至少包含一个大......
  • C#知识|账号管理系统:修改登录密码界面的UI设计
    哈喽,你好啊!我是雷工!本节记录添加修改登录密码界面的过程,以下为练习笔记。01 效果演示演示跳转打开修改登录密码子窗体效果:02添加窗体在UI层添加一个Windows窗体,命名为:FrmModifyPwd.cs;03设置窗体属性按照下表的内容设置窗体的相关属性:设置属性属性值备......
  • SpringBoot如何解决yml明文密码问题
    日常使用过程中,使用明文密码完全没问题,但是到了企业项目中,往往需要进行安全扫描,被安全扫描组扫到后,就必须修改。有两种思路解决安全扫描问题。方式一、密码不放在代码里密码不放在工程代码中,放到配置中心上,比如SpringCloudConfig,比如Nacos,或者apollo上。一般来说安全扫描都......