安全密码

题目描述

密码:密码被盗,后果很严重。现在发现安全的密码至少应该满足下面两个条件:
(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
1.大写字母:A,B,C...Z
2.小写字母:a,b,c...z
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^
 给你一个密码,你的任务就是判断它是不是一个安全的密码。
 
输入
先输入一个密码个数N,接下来N行,每行输入一个密码。
 
输出
判断这N行的密码是否是安全密码,是安全密码就输出“YES”,否则输出“NO”。 请注意行尾输出换行。
 
样例输入
3
a1b2c3d4
Linle@ACM
^~^@^@!%
 
样例输出
NO
YES
NO
 1 #include <stdio.h>
 2 #include <string.h>
 3 int main()
 4 {
 5     int m,j,i=0,a,e,c,d,y,z;
 6     char s[1000],b[1000][4];
 7     scanf("%d",&m);
 8     for(i=0;i<m;i++)
 9     {
10         scanf("%s",&s);
11         y=strlen(s);
12         a=0;e=0;c=0;d=0;z=0;
13         for(j=0;j<y;j++)
14         {
15             if(s[j]>=65&&s[j]<=90) a++;
16             else if(s[j]>=97&&s[j]<=122) e++;
17             else if(s[j]>=48&&s[j]<=57) c++;
18             else if(s[j]==126||s[j]==33||s[j]==64||s[j]==35||s[j]==36||s[j]==37||s[j]==94) d++;
19         }
20         if(a!=0) z++;
21         if(e!=0) z++;
22         if(c!=0) z++;
23         if(d!=0) z++;
24         if(z>=3 && y>=8 && y<=16)
25         {b[i][0]='Y';b[i][1]='E';b[i][2]='S';b[i][3]='\0';}
26         else
27         {b[i][0]='N';b[i][1]='O';b[i][2]='\0';}
28     }
29      for(i=0;i<m;i++)
30     {
31         j=0;
32         while(b[i][j]!='\0')
33         {
34             printf("%c",b[i][j]);
35             j++;
36         }
37         printf("\n");
38     }
39     return 0;
40 }

猜你喜欢

转载自www.cnblogs.com/zyxdjyd/p/10746022.html