|
|
#2
另一颗小白菜2019-10-29 19:37
|
4安全的密码(10分)
题目内容:
随着电子设备的广泛运用,密码也渐渐融入每个人的生活。保护好密码,不仅关系到个人隐私,更关系到个人的财产和安全。一个安全的密码,最好由大小写字母、数字或符号组成。包含越多种类的字符,其安全性就越高。同时密码还需要有一定的长度,通常至少要由六个以上的字符组成。
并不是每个人都喜欢这样复杂的密码,很多人在设置密码的时候,喜欢使用自己的名字或者生日,但这是很大的安全隐患。
任务
林晓炜正在设计一个网络交易系统,为了保证用户的密码安全,他需要一个程序,判断用户自己设置的密码是否安全,如果不安全,则给出提示。现在他向你求助,请你帮忙设计一个程序来解决这个问题。
应当按照以下的规则来判断密码是否安全:
如果密码长度小于 6 位,则不安全
如果组成密码的字符只有一类,则不安全
如果组成密码的字符有两类,则为中度安全
如果组成密码的字符有三类或以上,则为安全
通常,可以认为数字、大写字母、小写字母和其它符号为四类不同的字符。
输入格式:
输入的第一行是一个整数 N,表明后面有多少组密码。随后的 N 行输入包括 N 个密码,每个密码的长度均小于 20 个字符。
输出格式:
针对每一个密码判断并输出它是否安全。对于不安全的密码输出 "Not Safe",对于中度安全的密码输出 "Medium Safe",对于安全的密码输出 "Safe"
输入样例:
4
1234
abcdef
ABC123
1#c3Gh[回车]
输出样例:
Not Safe
Not Safe
Medium Safe
Safe[回车]
检查不出自己的逻辑错误,三个案例有一个总是过不了QAQ。。请各位大佬帮我看看,感激不尽!
程序代码:#include<stdio.h>
int main()
{
char s[40][100]={'\0'};//密码
int shuzi,daxie,xiaoxie,fuhao;
int weishu,i,p,N;
scanf("%d",&N);
for(p=0;p<N;p++)
{
scanf("%s",&s[p]);
}
for(p=0;p<N;p++)
{
weishu=0;
shuzi=1;
daxie=1;
xiaoxie=1;
fuhao=1;
for(i=0;(s[p][i]!='\0')&&i<100;i++)
{
weishu++;
if (s[p][i]>=48&&s[p][i]<=57)
{
shuzi=0;
}
else if (s[p][i]>=65&&s[p][i]<=90)
{
daxie=0;
}
else if (s[p][i]>=97&&s[p][i]<=122)
{
xiaoxie=0;
}
else if(s[p][i]>=32&&s[p][i]<=126)
{
fuhao=0;
}
}
i=shuzi+daxie+xiaoxie+fuhao;
if(i>=3||weishu<6)printf("Not Safe\n");
else if(i==2)printf("Medium Safe\n");
else if(i<=1)printf("Safe\n");
}
return 0;
}
int main()
{
char s[40][100]={'\0'};//密码
int shuzi,daxie,xiaoxie,fuhao;
int weishu,i,p,N;
scanf("%d",&N);
for(p=0;p<N;p++)
{
scanf("%s",&s[p]);
}
for(p=0;p<N;p++)
{
weishu=0;
shuzi=1;
daxie=1;
xiaoxie=1;
fuhao=1;
for(i=0;(s[p][i]!='\0')&&i<100;i++)
{
weishu++;
if (s[p][i]>=48&&s[p][i]<=57)
{
shuzi=0;
}
else if (s[p][i]>=65&&s[p][i]<=90)
{
daxie=0;
}
else if (s[p][i]>=97&&s[p][i]<=122)
{
xiaoxie=0;
}
else if(s[p][i]>=32&&s[p][i]<=126)
{
fuhao=0;
}
}
i=shuzi+daxie+xiaoxie+fuhao;
if(i>=3||weishu<6)printf("Not Safe\n");
else if(i==2)printf("Medium Safe\n");
else if(i<=1)printf("Safe\n");
}
return 0;
}