杭州エレクトリックOjをブラシタイトル(2043)

パスワード

件名の説明:

「私はナイフああ〜ではない、多くの場合、ああ、インターネットに浮かんでどのようにすることができます。」:言って、インターネット上で流通します 実際には、難しいことではありません、実際にオンライン滞在満足することができるようにするために、あなたはいくつかの安全の知識を学ぶことができます。

まず、私たちは安全なパスワードを設定する必要があります。パスワードはどのような安全と呼ばれますか?一般的に、より安全なパスワードは、少なくとも以下の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;
}

 

公開された55元の記事 ウォンの賞賛0 ビュー997

おすすめ

転載: blog.csdn.net/ZhangShaoYan111/article/details/104227737