パスワード
件名の説明:
「私はナイフああ〜ではない、多くの場合、ああ、インターネットに浮かんでどのようにすることができます。」:言って、インターネット上で流通します 実際には、難しいことではありません、実際にオンライン滞在満足することができるようにするために、あなたはいくつかの安全の知識を学ぶことができます。
まず、私たちは安全なパスワードを設定する必要があります。パスワードはどのような安全と呼ばれますか?一般的に、より安全なパスワードは、少なくとも以下の2つの条件を満たすべきである:
パスワードの長さは8に等しく、多くて16以上より、(1)大きいです。
(2)パスワードの文字は、4基の少なくとも3で「文字クラス」の下から来る必要があります。
4文字カテゴリは以下のとおりです
。1.大文字:A、B、C ... Z;
2.小文字の文字:A、B、C ... Z;
3.デジタル:0,1,2 ... 9;
4つの特殊文字:!〜、@、#、$、%、^は、
あなたのタスクは、それが安全なパスワードであるかどうかを判断することで、あなたにパスワードを与えます。入力
入力データの最初の行番号Mを含み、コード文字の4つだけ上記カテゴリを含む、各列に、パスワード(50の可能な最大長さ)M行を取りました。
出力
パスワードを決定するために、各テストケースではないために安全なパスワードは、出力YES、そうでなければ出力NOです。
サンプル入力
3 a1b2c3d4 Linle ACM @ ^〜^ @ ^ @!%サンプル出力
NO YES NO
その答えによって:
#include <stdio.h>
#include<string.h>
int main(){
int m,i,len,flag1,flag2,flag3,flag4;
char a[50];
while(scanf("%d",&m)!=EOF){
while(m--){
flag1=flag2=flag3=flag4=0;
scanf("%s",&a); //输入字符串
len=strlen(a);
if(len<8||len>16){ //长度限制
printf("NO\n");
continue;
}
for(i=0;a[i]!='\0';i++){ //遍历数组
if(a[i]>='A'&&a[i]<='Z'){flag1=1;} //只要有一个元素为大写字母,则flag置为1
else if(a[i]>='a'&&a[i]<='z'){flag2=1;}
else if(a[i]>='0'&&a[i]<='9'){flag3=1;}
else if(a[i]=='~'||a[i]=='!'||a[i]=='@'||a[i]=='#'||a[i]=='$'||a[i]=='%'||a[i]=='^'){flag4=1;}
}
if((flag1+flag2+flag3+flag4)>=3){ //密码中的字符应该来自以上“字符类别”中四组中的至少三组。
printf("YES\n");
}else{
printf("NO\n");
}
}
}
return 0;
}