题解 | #密码强度等级#HJ87

密码强度等级

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

#include <stdio.h>
#include <string.h>
#define size 301
int lenscore(char* A){               //返回密码长度得分,注意return 20; 应该不行,返回变量,提前给变量赋值
    int len=strlen(A);
    int value;
    if(len<=4){
        value=5;
    }
    else if(len>=5&&len<=7){
        value=10;
    }else{
        value=25;}
    return value;
}
int elescore(char* A){            //返回字母得分
    int len=strlen(A);
    int i=0; int a=0,b=0;
    for(i=0;i<len;i++){
        if(A[i]<='z'&&A[i]>='a')
        {
            a++;
        }
        else{if(A[i]<='Z'&&A[i]>='A')
              {
                 b++;
              }
        }
        
    }
    int value;
    if(a>0&&b>0) value=20;
    else if((b==0)&&(a==0)) value=0;
    else value=10;

    return value;
}

int numscore(char*A){             //返回数字得分
    int i=0;int len=strlen(A);int num=0;
    for(i=0;i<len;i++){
       if(A[i]>='0'&&A[i]<='9'){
        num++;
       }

    }
    int value;
    if(num==0) value=0;
    if(num==1) value=10;
    if(num>1)  value=20;
    return value;
}
int fscore(char*A){              //返回符号得分
    int i=0;int len=strlen(A);int num=0;
    for(i=0;i<len;i++){
       if((A[i]>='!'&&A[i]<='/')||(A[i]>=':'&&A[i]<='@')||(A[i]>='['&&A[i]<='`')||(A[i]>='{'&&A[i]<='~')){
        num++;
       }

    }
    int value ;
    if(num==0) value=0;
    if(num==1) value=10;
    if(num>1)  value=25;
    return value;
}

int main() {
    char input[size];
    gets(input);
    int n1,n2,n3,n4,n5;
    n1=lenscore(input);
    n2=elescore(input);
    n3=numscore(input);
    n4=fscore(input);
    if(n2==20&&n3>0&&n4>0){         //奖励得分
        n5=5;
    }else if(n2==10&&n3>0&&n4>0){
        n5=3;
    }else if(n2>=10&&n3>0){
        n5=2;
    }else{n5=0;}

  //  printf("%d %d %d %d %d ",n1,n2,n3,n4,n5);   //可以检测哪个分数算错了
    int score=n1+n2+n3+n4+n5;
    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{printf("VERY_WEAK");}
    return 0;
}

全部评论

相关推荐

中电45所 测试开发岗 可以解决北京户口,提供员工宿舍,早8晚5,加班到7-8点,周六也会加班 硕士
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务