/*
程序功能:构造一个合格的密码串
条件一、长度在8-16位(含8、16)
条件二、密码至少应该由以下4部分中的3部分组成
1、A-Z
2、a-z
3、0-9
4、!@#¥%^&
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char aa[]={"abcdefghigklmnopqrstuvwxyz"};
char bb[]={"ABCDEFGHIGKLMNOPQRSTUVWXYZ"};
char cc[]={"0123456789"};
char dd[]={"!@#$%^&"};
int len,sect;
srand((unsigned)time(NULL));
conf_len: //设置密码串长度
len=rand()%17;
if (len<8) goto conf_len;
conf_sect: //设置密码的组成部分
sect=rand()%5;
if (sect<3 ) goto conf_sect;
int add1=0,add2=0,add3=0,add4=0;
if (sect==4) //对len进行拆分例如14=11+1+1+1
{
split1:
add1=rand()%(len-3+1);
if (add1<1) goto split1;
split2:
add2=rand()%(len-add1-2+1);
if (add2<1) goto split2;
split3:
add3=rand()%(len-add1-add2-1+1);
if (add3<1) goto split3;
add4=len-add1-add2-add3;
}
if (sect==3) //对len进行拆分例如14=11+1+2
{
split11:
add1=rand()%(len-3+1);
if (add1<1) goto split11;
split22:
add2=rand()%(len-add1-2+1);
if (add2<1) goto split22;
add3=len-add1-add2;
}
//printf("%d=%d+%d+%d+%d\n",len,add1,add2,add3,add4);
char* pwd[16]={'\0'};
return 0;
}