厦大ACM入门百练

密码安全问题

描述

小鲁是个苹果产品的发烧友,手机、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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值