密码

Problem Description
网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。其实要想能安安心心地上网其实也不难,学点安全知识就可以。
首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:
(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
1.大写字母:A,B,C...Z;
2.小写字母:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
 
Input
输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。
 
Output
对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。
 
Sample Input
3
a1b2c3d4
Linle@ACM
^~^@^@!%
 
Sample Output
NO
YES
NO
 
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <ctype.h>
 4 
 5 int main(){
 6     int n;
 7     char s[51];
 8     int length;
 9     int i;
10     
11     int flag;
12     int flag1;
13     int flag2;
14     int flag3;
15     int flag4;
16     
17     scanf("%d",&n);
18     
19     while(n--){
20         scanf("%s",s);
21         length=strlen(s);
22         
23         flag=0;
24         flag1=0;
25         flag2=0;
26         flag3=0;
27         flag4=0;
28         
29         if(length>=8 && length<=16)
30             flag=1;
31             
32         for(i=0;i<length;i++){
33             if(islower(s[i])!=0)
34                 flag1=1;
35                 
36             else if(isupper(s[i])!=0)
37                 flag2=1;
38                 
39             else if(isdigit(s[i])!=0)
40                 flag3=1;
41                 
42             else if(s[i]=='~' || s[i]=='!' || s[i]=='@' || s[i]=='#' || s[i]=='$' || s[i]=='%' || s[i]=='^')
43                 flag4=1;
44         }
45         
46         if(flag==1 && (flag1+flag2+flag3+flag4)>=3)
47             printf("YES\n");
48             
49         else
50             printf("NO\n");
51                 
52     }        
53     return 0;
54 }

 

posted @ 2014-10-27 14:03  zqxLonely  阅读(352)  评论(0编辑  收藏  举报