密码强度(原创)

描述

网站提示,密码必须由 8∼16 个字符组成,可以包含数字、大写字母、小写字母、特殊符号这4种字符类型。注:特殊符号只包含: !、@、#、$、%、^、&、*、(、)、_、+、-、= 以下是三种强度密码的设计规则:

1.包含 4 种不同类型字符的密码是强密码。
2.包含 2 种或 3 种不同类型字符的密码是中等密码。
3.只包含 1 种类型字符的密码是弱密码。

输入描述

第一行输入一个正整数 N(4≤N≤10),表示密码的个数接下来的 N 行,每行输入一个宁符串 Si​(8<=Si​的长度<=16),表示一个密码,密码中可能包合数子、大写字母、小写字母、特殊符号这 4 种字符类型,且不含空格字符。

输出描述

共 N 行,每行输出一个整数 Ri​ ( Ri只能是 0、1、2 ),依次表示对应密码 si​ 的强度
如果 si​ 是强密码,则输出 2。
如果 si​ 是中等密码,则输出 1。
如果 si​ 是弱察码,则输出 0。

样例输入 1 

1
1Aa@1Aa@

样例输出 1 

2
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;//n负责输入  
	int a1[10]={0},a2[10]={0},a3[10]={0},a4[10]={0};/*表示数字(a1)、大写字母(a2)、小写字母(a3)、特殊符号(a4)*/
	char a[16];//题目说密码不超过16
	cin>>n;
    
	for(int i=0;i<=n;i++)
	{
		cin>>a;//输入n行代码
        
		for(int j=0;a[j]!=0;j++)//无限模式
		{
			if(a[j]>='0'&&a[j]<='9')//如果是数字
			a1[i]=1;
            
			else if(a[j]>='a'&&a[j]<='z')//如果是小写字母
			a2[i]=1;
            
			else if(a[j]>='A'&&a[j]<='Z')//如果是大写字母
			a3[i]=1;
            
			else//特殊符号
			a4[i]=1;
		}	
	} 
	for(int i=0;i<n;i++)
	{
	if(a1[i]+a2[i]+a3[i]+a4[i]==1)//如果只有一种的话,那么只有1
	cout<<0<<endl;
        
	else if(a1[i]+a2[i]+a3[i]+a4[i]==2||a1[i]+a2[i]+a3[i]+a4[i]==3)/*两种或三种*/
	cout<<1<<endl;
        
	else if(a1[i]+a2[i]+a3[i]+a4[i]==4)//如果有4种
	cout<<2<<endl;	
	}
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值