1,题目要求:输入一个字符串,字符串长度至少8个,而且字符串中至少要有3中以上类型字符例如(数字,大写,小写,其它),而且不能出现超2个的子字符串重复出现例如(aaaa222B,a重复出现了)
代码如下
#include <stdio.h>
typedef struct str_type
{
int majuscule;
int lower;
int number;
int othertype;
}str_type;
int main()
{
int i,j;
int length=0;
char password[100];
str_type strtype;
/*初始化*/
strtype.lower=strtype.majuscule=strtype.number=strtype.othertype=0;
gets(password);
while(password[length]!='\0')
{
length++;
if('A'<=password[length]&&password[length]<='Z')
{
strtype.majuscule=1;
}
else if('a'<=password[length]&&password[length]<='z')
{
strtype.lower=1;
}
else if('0'<=password[length]&&password[length]<='9')
{
strtype.number=1;
}
else
{
strtype.othertype=1;
}
}
if(length<8)
{
printf("你输入的密码太短!\n");
return 0;
}
if((strtype.lower+strtype.majuscule+strtype.number+strtype.othertype)<3)
{
printf("你输入的密码过于简单,需要大写小写和其它字符!\n");
return 0;
}
for(i=0;i<length-3;i++)
{
for(j=i+1;j<length-2;j++)
{
if(password[i]==password[j]&&password[i+1]==password[j+1]&&password[i+2]==password[j+2])
{
printf("密码过于简单,重复性太高!\n");
return 0;
}
}
}
printf("输入密码成功!\n");
return 0;
}