描述
小明同学最近开发了一个网站,在用户注册账户的时候,需要设置账户的密码,为了加强账户的安全性,小明对密码强度有一定要求:
-
密码只能由大写字母,小写字母,数字构成;
-
密码不能以数字开头;
-
密码中至少出现大写字母,小写字母和数字这三种字符类型中的两种;
-
密码长度至少为8
现在小明受到了n个密码,他想请你写程序判断这些密码中哪些是合适的,哪些是不合法的。
输入描述
输入一个数n,接下来有n(n≤100)行,每行一个字符串,表示一个密码,输入保证字符串中只出现大写字母,小写字母和数字,字符串长度不超过100。
输出描述
输入n行,如果密码合法,输出YES,不合法输出NO
示例1
输入:
1
CdKfIfsiBgohWsydFYlMVRrGUpMALbmygeXdNpTmWkfyiZIKPtiflcgppuR
输出:
YES
代码
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main() {
int n=0;
while(scanf("%d",&n) == 1)
{
int j=0;
for(j=0;j<n;j++)
{
char p[101];
int c=0;
scanf("%s",p);
char* pc=p;
int len=strlen(pc);
if(isdigit(*pc) || len < 8)
{
printf("NO\n");
continue;;
}
for(int i=1;i<len;i++)
{
if(isupper(*(pc+i)) || islower(*(pc+i)) ||
isdigit(*(pc+i)))
{
if(i==len-1)
{
printf("YES\n");
}
}
else {
printf("NO\n");
break;;
}
}
}
}
return 0;
}