永发信息网

C 控制结构 密码

答案:2  悬赏:40  手机版
解决时间 2021-04-28 12:37
  • 提问者网友:抽煙菂渘情少年
  • 2021-04-27 23:11
问题描述
网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。其实要想能安安心心地上网其实也不难,学点安全知识就可以。 首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件: (1).密码长度大于等于8,且不要超过16。 (2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。 这四个字符类别分别为: 1.大写字母:A,B,C...Z; 2.小写字母:a,b,c...z; 3.数字:0,1,2...9; 4.特殊符号:~,!,@,#,$,%,^; 给你一个密码,你的任务就是判断它是不是一个安全的密码。
输入
输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。
输出
对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。
输入样例
3 a1b2c3d4 Linle@ACM ^~^@^@!%
输出样例
NO YES NO
最佳答案
  • 五星知识达人网友:轻熟杀无赦
  • 2021-04-27 23:25

#include <stdio.h>
#include <string.h>


int main()
{
int result[100]={0};
char buff[50];
int M=0,i,j,sum=0;
bool cnt[4]={false},is=true;


scanf("%d",&M);

for(i=0;i<M;i++)
{
sum=0;
is=true;
for(j=0;j<4;j++) cnt[j]=false;
memset(buff,0,strlen(buff));


getchar();
scanf("%s",buff);


if(strlen(buff)<8||strlen(buff)>16)
is=false;


for(j=0;j<strlen(buff);j++)
{
if(buff[j]>='0'&&buff[j]<='9')
cnt[0]=true;
else if(buff[j]>='a'&&buff[j]<='z')
cnt[1]=true;
else if(buff[j]>='A'&&buff[j]<='Z')
cnt[2]=true;
else cnt[3]=true;
}
sum=cnt[0]+cnt[1]+cnt[2]+cnt[3];


if(is&&sum>=3)
result[i]=1;
else result[i]=0;
}


for(i=0;i<M;i++)
{
if(result[i])
printf("Yes ");
else
printf("No ");
}


return 0;
}



全部回答
  • 1楼网友:上分大魔王
  • 2021-04-28 00:17

先读入行数,设定循环次数

循环内根据asc码进行判定,设置四个标志位,顺序读入密码,包含对应种类就置位,最后看标志位返回结果

退出循环

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯