题目:
网站提示,密码必须由8~16个字符组成,可以包含数字、大写字母、小写字母、特殊符号这4种字符类型。注:特殊符号只包含:!、@、#、S、%、^、&、*、(、)、_、+、-、=
以下是三种强度密码的设计规则:
- 包含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、利用题目中:不含空格字符的命题规则,采用cin的输入方式。至于为什么采用cin,cin的输入性质去理解一下。
char a[17];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a;
}
2、这里要主要我题目中输入完4个密码,才得出对应的数字强度。所以在输入通过我们不可以直接给出答案,要存储起来。
3、存储方式,作者采用4个数组方式进行存储。
int n;//n负责输入
int a1[11]={0},a2[11]={0},a3[11]={0},a4[11]={0};//这里一定这样子初始化,否则会异常情况。
char a[17];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a;
for(int j=0;a[j]!=0;j++)
{
//每个密码当出现数字、大写、小写、其他字符时,是将对应的a[i]设为:1,这样子存在这个密码存在某一个类型了
else if(a[j]>='a'&&a[j]<='z')
if(a[j]>='0'&&a[j]<='9')
a1[i]=1;
a2[i]=1;
else if(a[j]>='A'&&a[j]<='Z')
a3[i]=1;
else
a4[i]=1;
}
}
4、完成存储类型后,最后只需要将每个位置的类型数值加起来则可以判断密码类型了
for(int i=0;i<n;i++)
{
if(a1[i]+a2[i]+a3[i]+a4[i]==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)
cout<<2<<endl;
}
5、完成代码如下:
#include<iostream>
using namespace std;
int main()
{
int n;//n负责输入
int a1[11]={0},a2[11]={0},a3[11]={0},a4[11]={0};
char a[17];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a;
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)
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)
cout<<2<<endl;
}
}
点赞+收藏+关注~