原题链接:密码
解题思路:先判断字符串是否大于等于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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复