我想把输入作为一个字符串,并评估它是否是一个有效的密码。密码是有效的,如果它有数字,大写和小写字母,长度至少为7个字符。此外,当所有这些要求都得到满足,输出应该是“强”,否则“弱”。代码:
#include<stdio.h>
#include<string.h>
#define N 20
int main()
{
char pass[N];
int i, x=0, p;
printf("Enter a password: ");
scanf("%s", &pass);
if(strlen(pass)>=7)
{
p=strlen(pass);
for (i = 0; i < p; i++)
{
if ((pass[i] >= 'a' && pass[i] <= 'z') || (pass[i] >= 'A' && pass[i <= 'Z') || (pass[i] >= '0' && pass[i] <= '9'))
printf("Sucess! ");
}
}
else
printf("Try Again..");
return 0;
}
某些功能无法正常工作,例如:1.执行后,它多次打印“Sucess!!”2.在内部if块中,当我替换||使用&&,则不打印任何内容。
请帮帮我。
2条答案
按热度按时间eqfvzcg81#
您可以更改这段代码:
......变成这样:
在循环中,您只需要计算每种类型的字符存在的数量。
循环完成后,您可以检查是否满足所有需求并采取适当的操作。
yzuktlbb2#
你让我思考,我想出了一个相当简单的解决方案--一系列的if被 Package 在while循环中,它检查大小写、数字和特殊字符,报告用户最终犯下的确切错误。
当然,你可以玩得更远,添加一些代码来检查密码是否足够强大(即超过12个字符),等等。