原题链接:密码
参考代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int main(void) { int M; scanf("%d", &M); int res[M]; //存放结果的数组 int index = 0; //数组下标 char str[50]; int i; for(i = 0; i < M; i++) { scanf("%s", str); int len = strlen(str); if (len < 8 || len > 16) { res[index++] = 0; } else { int hasup = 0; int haslow = 0; int hasnum = 0; int hasoth = 0; int j; for (j = 0; j < len; j++) { if (isupper(str[j])) hasup = 1; else if (islower(str[j])) haslow = 1; else if (isdigit(str[j])) hasnum = 1; else if (str[j] == '~' || str[j] == '!' || str[j] == '@' || str[j] == '#' || str[j] == '$' || str[j] == '%' || str[j] == '^') hasoth = 1; } //判断四类字符至少有三类,只要三个标志位总和大于等于3即可 int hassum = hasup + haslow + hasnum + hasoth; if (hassum >= 3) res[index++] = 1; else res[index++] = 0; } memset(str, 0, 50); //清空数组 } //输出结果 int k; for (k = 0; k < index; k++) { if (res[k] == 1) printf("YES\n"); else printf("NO\n"); } return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复