密码安全问题
描述
小鲁是个苹果产品的发烧友,手机、IPAD都是苹果的,为了学习方便,准备再买个笔记本电脑,可是又不好意思再向家里要钱,于是他想通过银行贷款来买,于是他通过QQ和计算机专业的好友小栋聊了通过贷款买笔记本的事。小栋提醒他注意校园网贷有陷阱。不曾想,第二天就有网络贷款公司主动给他打电话了。他想,难道是自己的QQ聊天信息被人窃取了,或者是密码已经泄露了?他赶紧把这事告诉小栋,问是不是密码泄露了?小栋说,很有可能啊!赶紧把密码改掉,重新设置一个安全的密码。那什么样的密码才安全呢?一般说比较安全的密码应该至少满足以下两个条件:
(1)密码长度大于或等于8,且不要超过16。
(2)密码中的字符应该包含下面四种字符中至少三种:
大写字母:A,B,C…Z;
小写字母:a,b,c…z;
数字:0,1,2…9;
特殊符号:~,!,@,#,$,%,^;
输入
第一行输入一个整数T,表示有T行测试数据
每行输入一个密码,密码仅仅包括以上所列的字符。
输出
对每个输入的密码,如果是安全密码,输出“YES”,否则输出“NO”
输入样例 1
3 Icango123 whiitehouse1234 @canyou!123F
输出样例 1
YES NO YES
#include <stdio.h>
int main()
{
char c[20];
int n;
scanf("%d\n",&n);
int count=0;
while(n--)
{
gets(c);
int t=strlen(c);
if(t<8||t>16){printf("NO\n");continue;}
int count1=0,count2=0,count3=0,count4=0;
for(int i=0;i<t;i++)
{
if(c[i]>='A'&&c[i]<='Z') count1=1;
if(c[i]>='a'&&c[i]<='z') count2=1;
if(c[i]>='0'&&c[i]<='9') count3=1;
if(c[i]=='#'||c[i]=='$'||c[i]=='%'||c[i]=='^'||c[i]=='!'||c[i]=='@'||c[i]=='~') count4=1;
}
if((count1+count2+count3+count4)>2) printf("YES\n");
else printf("NO\n");
}
return 0;
}