/*
程序功能:构造一个合格的密码串
条件一、长度在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;
}