关于逻辑运算符和位逻辑运算符之间

  • 正在自学c语言 今天练习写一段判断密码复杂度的代码 发现用逻辑运算符就随便输都会提示够复杂,用位逻辑运算符就没有这个问题,很奇怪 书上说这两个应该都能判断表达式才对
#include <stdio.h>
#include <string.h>
#include<math.h>
#include<ctype.h>

int Check(char* a);

int main()
{
    char PassWord[50];
    int Result;
        
    printf("请输入密码(至少包含字母数字与符号)\n");
    scanf("%s", &PassWord);
    if (Check(PassWord)==1)
    {
        printf("有你的,够复杂\n");
    }
    else
    {
        printf("不行,在复杂点\n");
    }

}

int Check(char* a)
{
    int i,x=0,y=0,z=0;
    for (i=0;i<50;i++ )
    {
        if (isalpha(a[i])!=0)
        {
            x = 1;
            break;
        }
        else
        {
            break;
        }
    }
    for (i = 0; i < 50; i++)
    {
        if (64<a[i]<91)
        {
            y = 1;
            break;
        }
        else
        {
            break;
        }
    }
    for (i = 0; i < 50; i++)
    {
        if (96<a[i]<123)
        {
            z = 1;
            break;
        }
        else
        {
            break;
        }
    }
    if ((x==1)&(y==1)&(z==1))                                     //!!注意,此处必须要用位逻辑与,原因不明
    {
        return 1;
    }
    else

    {
        return 0;
    }
}

图中错误:

img

题主逻辑运算符,写的表达式写错了, 比如a大于1 小于3 应该这样写 a>1&&a<3,不能直接连写。

希望对题主有所帮助,可以的话,帮忙点个采纳!