题目描述
终于要放寒假了,王炸和大家一样在模电课上拿起自己的手机准备抢票。刚打开12306,突然蹦出来一个提示:“您的密码可能有泄露的风险,请先修改密码!”
王炸心中一惊:“Are you kidding??!!”赶紧找到改密码的页面,才发现原来改个密码还要验证个人信息,经过一系列娴熟的操作后,终于该输入新密码了,“买票要紧,随便先设置个!”王炸心里想着,中里一串123456789就输进去了。
“对不起,您的密码过于简单,请重新修改!”,紧接着又出来信息验证的页面。…………QAQ……………
…………
“对不起,您的密码不合法,请重新修改!”…………QAQ……………
…………
二十分钟过去了,王炸终于用 QAQ543…!!233 登录进去了,然而发现票已被抢完。
(╯‵□′)╯︵┻━┻ 回个毛线的家,在学校附近网吧做ACM!!
为了避免以后再出现这样的情况,王炸让你帮忙写个程序,来检验密码是否合法,以及密码的强度。
输入
第一行输入一个整数T(1≤T≤10)
接下来T行,每行输入一个字符串str表示密码,其中 1 ≤ strlen(str)≤ 100 (strlen表示计算字符串长度)
输出
合法的密码只含有:大写字母(AZ)、小写字母(az)、数字(0~9)、字符(.!@%四种)。
若密码长度在 [8,24] 之间则认为密码是合法的,如果密码不合法则输出ERROR。
如果密码合法,且含有上述四种的三种及以上,则输出GOOD PASSWORD
否则输出BAD PASSWORD
样例输入
4
1234567
12345678
QAQ…!!2333
Q1.!
样例输出
ERROR
BAD PASSWORD
GOOD PASSWORD
ERROR
#include
#include
#include
using namespace std;
main()
{
int t;
scanf("%d",&t);
getchar();
while(t--)
{
char s[110];
gets(s);
int leng=strlen(s);
int flag=0;
if(leng>=8&&leng<=24)
{
int flagg=0;
for(int i=0;i='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||(s[i]>='0'&&s[i]<='9')||(s[i]=='.'||s[i]=='!'||s[i]=='@'||s[i]=='%'))
{
continue;
}
else
{
flagg=1;
break;
}
}
if(flagg==0)
{
for(int i=0;i='A'&&s[i]<='Z')
{
flag++;
break;
}
}
for(int i=0;i='a'&&s[i]<='z')
{
flag++;
break;
}
}
for(int i=0;i='0'&&s[i]<='9')
{
flag++;
break;
}
}
for(int i=0;i=3)
{
printf("GOOD PASSWORD
");
}
else
{
printf("BAD PASSWORD
");
}
}
else
{
printf("ERROR
");
}
}
else
{
printf("ERROR
");
}
}
}