题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
//一步一步写的
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[301] = {0};
int grade = 0;
int c[4] = {0};
scanf("%s", str);
int len = strlen(str);
if(len <= 4)
{
grade += 5;
}
else if(len >= 5 && len <= 7)
{
grade += 10;
}
else if(len >= 8)
{
grade += 25;
}
for(int i = 0; i<len; i++)
{
if(isupper(str[i]))
c[0]++; //大写
else if(isalpha(str[i]))
c[1]++; //小写
else if(str[i] >= '0' && str[i] <= '9')
c[2]++; //数字
else if((str[i] >= '!' && str[i] <= '@') || (str[i] >= '[' && str[i] <= '`') || (str[i] >= '{' && str[i] <= '~'))
c[3]++; //符号;
}
if(c[0] != 0 && c[1] != 0)
grade += 20;
else if( c[0] != 0 || c[1] != 0 )
grade += 10;
if(c[2] == 1)
grade += 10;
else if(c[2] > 1)
grade += 20;
if(c[3] == 1)
grade += 10;
else if(c[3] > 1)
grade += 25;
if(c[0] != 0 && c[1] != 0 && c[2] != 0 && c[3] != 0)
grade += 5;
else if((c[0] != 0 || c[1] != 0) && c[2] != 0 && c[3] != 0 )
grade += 3;
else if((c[0] != 0 || c[1] != 0) && c[2] != 0 )
grade += 2;
if(grade >= 90)
printf("VERY_SECURE\n");
else if(grade >= 80)
printf("SECURE\n");
else if(grade >= 70)
printf("VERY_STRONG\n");
else if(grade >= 60)
printf("STRONG\n");
else if(grade >= 50)
printf("AVERAGE\n");
else if(grade >= 25)
printf("WEAK\n");
else if(grade >= 0)
printf("VERY_WEAK\n");
return 0;
}

查看27道真题和解析