Hzu挑战自我


私信TA

用户名:gxhzxyjsj

访问量:98836

签 名:

2024终究会过去,期待2025!

等  级
排  名 8
经  验 27865
参赛次数 67
文章发表 157
年  龄 0
在职情况 教师
学  校 贺州学院
专  业 软件工程

  自我简介:

弱鸡一个,继续努力!

解题思路:先判断字符串是否大于等于8而且小于等于16,如果不是,则表示密码不安全,后面的就不用继续判断了。然后再判断每一种字符是否出现,如果第一次出现,则count++,以后再出现,就不加了。然后判断如果count=3则表示是满足要求的密码,就不再判断。最后根据count的值是否为3输出YES,或者NO。


参考代码:

#include<stdio.h>
#include <string.h>
int main()
{
	char psw[55];
	int i,n,count,len;
	int flag1,flag2,flag3,flag4;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%s",psw);
		len=strlen(psw);
		if(len<8 || len>16)
		{
			printf("NO\n");
			continue;
		}
		count=0;
		flag1=flag2=flag3=flag4=0;
		for(i=0;psw[i];i++)
		{		
			
			if(psw[i]>='A' && psw[i]<='Z')  //大写字母
			{
				 if(flag1==0)   //是否第一次出现
				 {
				 	count++;
					flag1=1;
				 }
			}
			else if(psw[i]>='a' && psw[i]<='z') //小写字母
			{
				if(flag2==0)   //是否第一次出现
				 {
				 	count++;
					flag2=1;
				 }
			}
			else if(psw[i]>='0' && psw[i]<='9' ) //数字字符
			{
				if(flag3==0)   //是否第一次出现
				 {
				 	count++;
					flag3=1;
				 }
			}
			else if(psw[i]=='~'||psw[i]=='!'||psw[i]=='@'||psw[i]=='#'||psw[i]=='$'||psw[i]=='%'||psw[i]=='^')
			{ 
				if(flag4==0)  //是否第一次出现
				{
					count++;
					flag4=1;
				}
			} 
			if(count==3) break; //如果count=3,表示已经出现了3中字符,则不用继续判断
		}
		if(count==3) 
			printf("YES\n");
		else
			printf("NO\n");			
	}
    return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »