题目描述
很多时候我们都需要密码来保障自己的财产安全,而不同密码由于复杂程度不同,它被破译的可能性也不同,其密码强度也不一样。对于一串密码,其密码强度的规则如下:密码至少要有6位,且包含数字和字母,否则该密码无效;在有效密码中,若密码位数大于10位、大小写字母均有、含有特殊符号这三种条件均不满足,该密码强度为弱;满足这三种条件任意一个或者两个,则该密码强度为中;三种条件均满足,该密码强度为强。现给你一系列用户所设置的密码,要求你按规定评估出其密码强度。
输入格式
输入第一行为一个正整数T,表示接下来将有T个密码。
接下来T行,第i行首先是一个整数,表示第i个密码的长度,接下来是一个长度为n的字符串,表示要评估的密码。保证密码为键盘上可以打出的符号且非空格。
输出格式
输出应该有T行。
第i行表示所评估的第i个密码的强度。若为无效密码,则输出”INVALID”;若强度为弱,输出”RUO”;强度为中,输出”ZHONG ”;强度为强,输出”QIANG”.
样例输入
4
6 123456
9 bityes123
9 BITyes123
11 BITyes123##
样例输出
INVALID
RUO
ZHONG
QIANG
数据范围
0<T≤1000,0<n≤20
# include<stdio.h>
# include<string.h>
/*对于一串密码,其密码强度的规则如下:密码至少要有6位,且包含数字和字母,
否则该密码无效;在有效密码中,若密码位数大于10位、大小写字母均有、含有特殊符号
这三种条件均不满足,该密码强度为弱;
满足这三种条件任意一个或者两个,则该密码强度为中;
三种条件均满足,该密码强度为强。
现给你一系列用户所设置的密码,要求你按规定评估出其密码强度。
输入格式:输入第一行为一个正整数T,表示接下来将有T个密码。
接下来T行,第i行首先是一个整数ni,表示第i个密码的长度,
接下来是一个长度为n的字符串,表示要评估的密码。保证密码为键盘上可以打出的符号且非空格。
输出格式
输出应该有T行。
第i行表示所评估的第i个密码的强度
若为无效密码,则输出”INVALID”;
若强度为弱,输出”RUO”;强度为中,输出”ZHONG ”;强度为强,输出”QIANG”.
样例输入
4
6 123456
9 bityes123
9 BITyes123
11 BITyes123##
样例输出
INVALID
RUO
ZHONG
QIANG
数据范围
0<T≤1000,0<n≤20
*/
int main()//本题条件较多,注意看清楚各种等级的要求!!!
{
int t, con1 , con2 , con31 , con32 , con3, con4;
scanf("%d", &t);//密码行数
char key[t][21];
int keylen[t];//每一行密码长度
for(int i = 0;i < t;i ++)//(学校)C90标准无法对可变数组初始化,只能遍历赋值0
{
for(int j = 0;j < 21;j ++)
{
key[i][j] = 0;
}
keylen[i] = 0;
}
for (int i = 0;i < t;i ++)
{
scanf("%d", &keylen[i]);
getchar();//去掉空格
gets(key[i]);//存一行密码
}
for (int i = 0;i < t;i ++)
{
con1 = 0;//字符数量
con2 = 0;//特殊符号
con31 = 0;//大写
con32 = 0;//小写
con3 = 0;//有大小写
con4 = 0;//有数字
if (keylen[i] > 10)
{
con1 = 1;
}
else if(keylen[i] < 6)//密码长度小于6
{
con1 = -1;
}
for (int j = 0;j < 21; j++)//判断特殊符号
{
if((key[i][j] < 48 && key[i][j] > 32) || (key[i][j] > 57 && key[i][j] < 65)
|| (key[i][j] > 90 && key[i][j] < 97) || key[i][j] > 122)
{
con2 = 1;
break;
}
}
for (int j = 0;j < 21; j++)
{
if(key[i][j] > 64 && key[i][j] < 91)
{
con31 =1;
break;
}
}
for (int j = 0;j < 21; j++)
{
if(key[i][j] > 47 && key[i][j] < 58)
{
con4 =1;
break;
}
}
for (int j = 0;j < 21; j++)
{
if(key[i][j] > 96 && key[i][j] < 123)
{
con32 =1;
break;
}
}
con3 = con31 * con32;
if (con1 < 0 || (con31 ==0 && con32 ==0) || con4 == 0)
{
printf("INVALID\n");
}
else//三个变量的和表示满足几个条件
{
if(con1 + con2 + con3 == 3)
{
printf("QIANG\n");
}
else if(con1 + con2 + con3 == 0)
{
printf("RUO\n");
}
else
{
printf("ZHONG\n");
}
}
}
return 0;
}