题解 | #密码强度等级#

密码强度等级

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

#include <stdio.h>
#include <string.h>
void judge1(int*map,int*flag)
{
    for(int i='A';i<='Z';i++)
    {
        if(map[i])
        {
            (*flag)++;
            break;
        }
    }
    for(int i='a';i<='z';i++)
    {
        if(map[i])
        {
            (*flag)++;
            break;
        }
    }
}
void judge2(int*map,int*flag)
{
    for(int i='0';i<='9';i++)
    {
        if(map[i])
        {
            (*flag)+=map[i];
            if((*flag)==2)
            return;
        }
    }
}
void judge3(int*map,int*flag)
{
    for(int i='!';i<='/';i++)
    {
        if(map[i])
        {
            (*flag)+=map[i];
            if((*flag)==2)
            return;
        }
    }
    for(int i=':';i<='@';i++)
    {
        if(map[i])
        {
            (*flag)+=map[i];
            if((*flag)==2)
            return;
        }
    }
    for(int i='[';i<='`';i++)
    {
        if(map[i])
        {
            (*flag)+=map[i];
            if((*flag)==2)
            return;
        }
    }
    for(int i='{';i<='~';i++)
    {
        if(map[i])
        {
            (*flag)+=map[i];
            if((*flag)==2)
            return;
        }
    }
}
int main() {
    char* arr[7]={"VERY_SECURE","SECURE","VERY_STRONG","STRONG","AVERAGE","WEAK","VERY_WEAK"};
    char s[301]={0};
    int score=0;
    fgets(s,100,stdin);
    int len=strlen(s)-1;
    if(len<=4)
    score=5;
    else if(len<=7&&len>=5)
    score=10;
    else
    score=25;
    int map[127]={0};
    for(int i=0;i<len;i++)
    {
        map[s[i]]++;
    }
    int flag1=0;int flag2=0;int flag3=0;
    judge1(map,&flag1);
    judge2(map,&flag2);
    judge3(map,&flag3);
    if(flag1||flag2||flag3)
    {
        if(flag3<2)
        {
            score=score+flag1*10+flag2*10+flag3*10;
            if(flag1&&flag2&&flag3==0)
            score+=2;
            else if(flag1==1&&flag2&&flag3)
            score+=3;
            else if(flag1==2&&flag2&&flag3)
            score+=5;
        }
        else {
            score=score+flag1*10+flag2*10+25;
            if(flag1==1&&flag2&&flag3)
            score+=3;
            else if(flag1==2&&flag2&&flag3)
            score+=5;
        }
    }
    if(score>=90)
    printf("%s",arr[0]);
    else if(score<90&&score>=80)
    printf("%s",arr[1]);
    else if(score<80&&score>=70)
    printf("%s",arr[2]);
    else if(score<70&&score>=60)
    printf("%s",arr[3]);
    else if(score<60&&score>=50)
    printf("%s",arr[4]);
    else if(score<50&&score>=25)
    printf("%s",arr[5]);
    else
    printf("%s",arr[6]);
    return 0;
}

全部评论

相关推荐

投递长鑫存储等公司8个岗位
点赞 评论 收藏
分享
流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务