描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
数据范围:输入的字符串长度满足 1≤n≤100
输入描述:
一组字符串。
输出描述:
如果符合要求输出:OK,否则输出NG
示例1
输入:
021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000
输出:
OK NG NG OK
三个子函数,在主函数判断即可
#include <stdio.h>
#include <string.h>
int length_check(char str[100])
{
int a=0;
int len=strlen(str);
if(len>8)
{
a=1;
}
if(len==0)
{
a=2;
}
return a;
}
int type_check(char str[100])
{
int i=0,a=0,b=0,c=0,d=0,sum=0;
int len=strlen(str);
for(i=0;i<len;i++)
{
if((str[i]>='A')&&(str[i]<='Z')){a=1;}
if((str[i]>='a')&&(str[i]<='z')){b=1;}
if((str[i]>='0')&&(str[i]<='9')){c=1;}
if(((str[i]<'0')&&(str[i]!='\0')&&(str[i]!='\n'))||((str[i]>'9')&&(str[i]<'A'))||((str[i]>'Z')&&(str[i]<'a'))||str[i]>'z'){d=1;}
}
sum=a+b+c+d;
return sum;
}
int repeat_check(char str[100])
{
int i=0,j=0,a=1;
int len=strlen(str);
for(i=0;i<len-5;i++)
{
for(j=i+3;j<len-2;j++)
{
if((str[j]==str[i])&&(str[j+1]==str[i+1])&&(str[j+2]==str[i+2]))
{
a=0;
}
}
}
return a;
}
int main() {
char str[100][100];
int a=0,b=0,c=0,len;
int i=0,j=0;
for(i=0;i<100;i++)
{
scanf("%s",str[i]);
}
i=0;
while(length_check(str[i])!=2)
{
j=i;
i++;
}
for(i=0;i<=j;i++)
{
a=length_check(str[i]);
b=type_check(str[i]);
c=repeat_check(str[i]);
if((a==1)&&(b>=3)&&(c==1))
{
printf("OK\n");
}
else{
printf("NG\n");
}
}
return 0;
}