题目描述:
密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。
一、密码长度:
5 分: 小于等于4 个字符
10 分: 5 到7 字符
25 分: 大于等于8 个字符
二、字母:
0 分: 没有字母
10 分: 全都是小(大)写字母
20 分: 大小写混合字母
三、数字:
0 分: 没有数字
10 分: 1 个数字
20 分: 大于1 个数字
四、符号:
0 分: 没有符号
10 分: 1 个符号
25 分: 大于1 个符号
五、奖励:
2 分: 字母和数字
3 分: 字母、数字和符号
5 分: 大小写字母、数字和符号
最后的评分标准:
>= 90: 非常安全
>= 80: 安全(Secure)
>= 70: 非常强
>= 60: 强(Strong)
>= 50: 一般(Average)
>= 25: 弱(Weak)
>= 0: 非常弱
对应输出为:
VERY_WEAK,
WEAK,
AVERAGE,
STRONG,
VERY_STRONG,
SECURE,
VERY_SECURE
示例:
输入:
38$@NoNoNo
输出:
VERY_SECURE
代码:
#include <iostream>
using namespace std;
int main()
{
string Str;
while(getline(cin,Str))
{
int point=0;
if(Str.size()<=4)
point+=5;
else if(Str.size()>4&&Str.size()<=7)
point+=10;
else
point+=25;
int i=0;
bool bigzimu=false;
int shuzi=0;
bool smallzimu=false;
int fuhao=0;
bool zimu=false;
while(i<Str.size())
{
if(Str[i]>='a'&&Str[i]<='z')
{
smallzimu=true;
//zimu=true;
}
else if(Str[i]>='A'&&Str[i]<='Z')
{
bigzimu=true;
//zimu=true;
}
else if(Str[i]>='0'&&Str[i]<='9')
{
shuzi+=1;;
}
else
{
fuhao+=1;
}
i++;
}
if(smallzimu&&bigzimu)
point+=20;
else if(smallzimu||bigzimu)
point+=10;
else
point=point;
if(shuzi>1)
point+=20;
else if(shuzi==1)
point+=10;
else
point=point;
if(fuhao>1)
point+=25;
else if(fuhao==1)
point+=10;
else
point=point;
if(smallzimu&&bigzimu&&shuzi&&fuhao)
point+=5;
else if((smallzimu||bigzimu)&&shuzi&&fuhao)
point+=3;
else if((smallzimu||bigzimu)&&shuzi)
point+=2;
string res;
if(point>=90)
res="VERY_SECURE";
else if(point>=80)
res="SECURE";
else if(point>=70)
res="VERY_STRONG";
else if(point>=60)
res="STRONG";
else if(point>=50)
res="AVERAGE";
else if(point>=40)
res="WEAK";
else
res="VERY_WEAK";
cout<<res<<endl;
}
return 0;
}