#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;
}
}
图中错误:
题主逻辑运算符,写的表达式写错了, 比如a大于1 小于3 应该这样写 a>1&&a<3,不能直接连写。
希望对题主有所帮助,可以的话,帮忙点个采纳!