#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
char pass[99];
int i, x;
while(1)
{
printf("Enter a password:");
scanf("%s", pass);
// Check if first character is uppercase
if (!isupper(pass[0]))
{
printf("Password Invalid!\n");
continue;
}
x = 0;
// Check each character in the password
for (i = 0; i < strlen(pass); i++)
{
// If the character is not a digit or a valid special character, password is invalid
if (!isdigit(pass[i]) && pass[i] != '?' && pass[i] != '_' && pass[i] != '$' && pass[i] != '!')
{
printf("Password Invalid!\n");
x = 0;
break;
}
x++;
}
// If the password length is less than 8 characters, password is invalid
if (x < 8)
{
printf("Password Invalid!\n");
continue;
}
// If password passes all checks, password is valid
printf("Password Valid\n");
break;
}
return 0;
}
代码应检查长度是否大于8,首字母是否为大写,是否包含数字或特殊字符。代码给出的密码对于有效组合无效...................................................
3条答案
按热度按时间6vl6ewon1#
看起来你在你的性格测试中忽略了字母字符的允许。我相信下面的代码行:
需要更改为:
以提供您所需的功能。
给予一下,看看它是否符合你项目的精神。
sirbozc52#
另一个测试选项可以是这样的:
vu8f3i0k3#
if (!isupper(pass[0]))
中的条件逻辑有问题,您使用了!逻辑运算符,它会反转条件逻辑,因此要使其正常工作,请改用if (isupper(pass[0]))