链接:密码检查_牛客题霸_牛客网 (nowcoder.com)
描述
小明同学最近开发了一个网站,在用户注册账户的时候,需要设置账户的密码,为了加强账户的安全性,小明对密码强度有一定要求:
1. 密码只能由大写字母,小写字母,数字构成;
2. 密码不能以数字开头;
3. 密码中至少出现大写字母,小写字母和数字这三种字符类型中的两种;
4. 密码长度至少为8
现在小明受到了n个密码,他想请你写程序判断这些密码中哪些是合适的,哪些是不合法的。
输入描述:
输入一个数n,接下来有n(n≤100)行,每行一个字符串,表示一个密码,输入保证字符串中只出现大写字母,小写字母和数字,字符串长度不超过100。
输出描述:
输入n行,如果密码合法,输出YES,不合法输出NO
示例1
输入:1
CdKfIfsiBgohWsydFYlMVRrGUpMALbmygeXdNpTmWkfyiZIKPtiflcgppuR
输出:YES
#include <stdio.h>
#include <string.h>
int main() {
int n = 0;
scanf("%d",&n);
char ch[999] ={0};
int count1 = 0;
int count2 = 0;
int count3 = 0;
int count4 = 0;
for(int i =0;i < n;i++)
{
scanf("%s",ch);
int len = strlen(ch);
if(len<8)//长度大于8
{
printf("NO\n");
continue;
}
if(ch[0]>='0'&&ch[0]<='9')//不能以数字为首
{
printf("NO\n");
continue;
}
for(int j =0;j < len;j++)//包含大小写字母和数字
{
if(ch[j]>='0'&&ch[j]<='9')
{
count1++;
}
else if(ch[j]>='A'&&ch[j]<='Z')
{
count2++;
}
else if(ch[j]>='a'&&ch[j]<='z')
{
count3++;
}
else
{
count4++;
}
}
if(count4 != 0)
{
printf("NO\n");
continue;
}
if(count1+count2+count3 < 3)
{
printf("NO\n");
continue;
}
printf("YES\n");
}
return 0;
}