原题链接:密码
解题思路:先判断字符串是否大于等于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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复