永发信息网

c语言题目(安全密码)

答案:2  悬赏:0  手机版
解决时间 2021-04-13 23:39
  • 提问者网友:心如荒岛囚我终老
  • 2021-04-13 05:39

安全的密码至少应该满足下面两个条件:

(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。





#include<stdio.h>
main()
{
char m;
int i,n,c,d,e,f,zong,len;

scanf("%d",&n);

getchar();
for(i=1;i<=n;i++){
len=c=d=e=f=0;
while(m=getchar(),m!='\n'){
if(m>='a'&&m<='z')
c=1;

else if(m>='A'&&m<='Z')
d=1;


else if(m>='0'&&m<='9')
e=1;

else if(m=='~'||m=='!'||m=='@'||m=='#'||m=='$'||m=='%'||m=='^')
f=1; }
zong= c+d+e+f;

if(zong>=3&&len>=8&&len<=16)
printf("YES\n");
else
printf("NO\n");}
return 0;
}



最佳答案
  • 五星知识达人网友:上分大魔王
  • 2021-04-13 06:09

你的len只赋值为0


输入之后len没有语句增加它的值,它就永远为0,


最后判断就永远为假,就永远输出NO


在while循环中最后位置增加一句len++;即可

全部回答
  • 1楼网友:西风乍起
  • 2021-04-13 06:48
while循环不对。 应该写成 m=getchar(); while(m!='\n'){ ......//你的程序 m=getchar(); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯