原题链接:密码
参考代码如下:
#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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复