关于#密码强度#的问题,如何解决?

这提交了怎么会这样啊大家

img

img


#include
int main(void)
{
int n;
char pass_wd[100];
int upper_case;
int lower_case;
int num;
int symbol;

scanf("%d",&n);

for(int i=0;iif( strlen(pass_wd)<8)
  continue;
  for(i=0;in(pass_wd);i++)
  {
      if(pass_wd[i]>='a'&&pass_wd<='z')
      lower_case++;
      else if(pass_wd[i]>='A'&&pass_wd<='Z')
      upper_case++;
      else if(pass_wd[i]>='0'&&pass_wd<='9')
      num++;
      else if(pass_wd[i]>=33&&pass_wd[i]<=126)
      symbol++;
  }
    if((upper_case==0&&lower_case==0)||(upper_case==0&&num==0)||(upper_case==0&&symbol==0)||(lower_case==0&&num==0)||(lower_case==0&&symbol==0)||(num==0&&symbol==0))
printf("Weak");
    else if((upper_case==0&&lower_case==0&&num==0)||(upper_case==0&&lower_case==0&&symbol==0)||(lower_case==0&&num==0&&symbol==0)||(upper_case==0&&num==0&&symbol==0))
printf("Weak");
    else printf("Strong");
}
return 0;
}

直接(upper_case?1:0) + (lowerr_case?1:0) + (num?1:0) + (symbol?1:0) >= 3 即可

。。。。四种内容包含三种,无需这么复杂,直接定义一个长度4数组,或者四个变量,如果有该类型数据则数据变成1,否则为0,然后数组求和,或者四个变量相加,得3或4为强壮,否则为弱

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/323165
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:前后端分离项目,跨域问题如何解决?为什么会有跨域这个问题?
  • 除此之外, 这篇博客: 浮点型如何在内存中进行存储呢?中的 ,那么,最终的结果会是什么样呢? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •  我们发现,代码跑出来的答案和我们自己想的有很大的差距:

    我们观察第一个结果,,n以整型的形式放进去,然后再以整型%d的形式取出来,结果是9,这是合理的,,第二个结果是,n以整型的形式存进去,然后以%f,浮点型的形式取出来,,

    int整型占4byte,float类型也占4byte,float*类型的指针变量pFloat,解引用就会访问4byte,跳过一个float类型,而拿出来的结果是不一样的,不是9.000000,这就说明,浮点型和整型在

    内存中的存储方式是不一样的,如果一样的话,拿出来的结果应该是一样的,对于第三个结果,,以浮点型的形式存进去,再以%d整型的形式取出来,结果不是9,这又说明了,浮点型和

    整型在内存中的存储方式是不一样的,对于第四个结果,以浮点型的形式存进去,然后以%f浮点型的形式取出来,结果是9.000000,这是合理的;

    整形的视角放进去,再以整型的视角拿出来,,结果是对的,,以浮点型的视角放进去,再以浮点型的视角拿出来,,结果也是对的,,但是混淆放拿结果就是乱的;

    *pFloat 在内存中明明是同一个数,为什么浮点数和整数的解读结果会差别这么大? 要理解这个结果,一定要搞懂浮点数在计算机内部的表示方法。