题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
//用代码量换取思路简单性,就是粗暴的一种一遍历
#include <stdio.h>
#include<string.h>
int main()
{
char arr[300];
gets(arr);
int i=0,flag[4]={0,0,0,0},count=0,sc=25,sz=strlen(arr);
//判断长度
if(sz<8)
{
sc=((sz-1)/4+1)*5;
}
//查找数字
for(i=0;i<sz;i++)
{
if(arr[i]>='0'&&arr[i]<='9')
{
flag[0]=1;
count++;
if(count>1)
{
sc+=20;
count=0;
break;
}
}
}
if(count==1)
{
sc+=10;
count=0;
}
//查找小写字母
for(i=0;i<sz;i++)
{
if(arr[i]>='a'&&arr[i]<='z')
{
flag[1]=1;
sc+=10;
break;
}
}
//查找大写字母
for(i=0;i<sz;i++)
{
if(arr[i]>='A'&&arr[i]<='Z')
{
flag[2]=1;
sc+=10;
break;
}
}
//查找特殊符号
for(i=0;i<sz;i++)
{
if((arr[i]>=0x21&&arr[i]<=0x2f)||(arr[i]>=0x3A&&arr[i]<=0x40)||(arr[i]>=0x5B&&arr[i]<=0x60)||(arr[i]>=0x7B&&arr[i]<=0x7E))
{
flag[3]=1;
count++;
if(count>1)
{
sc+=25;
count=0;
break;
}
}
}
if(count==1)
{
sc+=10;
}
if(flag[0]==1&&(flag[1]==1||flag[2]==1))
{
sc+=2;
if(flag[3]==1)
{
sc+=1;
if(flag[1]==1&&flag[2]==1)
{
sc+=2;
}
}
}
if(sc>=90)
{
printf("VERY_SECURE\n");
}
if(sc>=80&&sc<90)
{
printf("SECURE\n");
}
if(sc>=70&&sc<80)
{
printf("VERY_STRONG\n");
}
if(sc>=60&&sc<70)
{
printf("STRONG\n");
}
if(sc>=50&&sc<60)
{
printf("AVERAGE\n");
}
if(sc>=25&&sc<50)
{
printf("WEAK\n");
}
if(sc>=0&&sc<25)
{
printf("VERY_WEAK\n");
}
return 0;
}
查看20道真题和解析