题目
(必须编写自定义函数实现下列功能:)假设允许采用以下四类字符作为密码:
(1)大写英文字母,(2)小写英文字母,(3)数字0-9,(4)特殊符号 @ - _ # ~
密码要求:
1.长度超过8位;
2.包括大小写字母、数字、其它符号,密码组合中包含以上四种中至少三种字符;
程序运行示例1:
abc123
密码长度太短且密码中应包含大小写字母、数字、其它符号四种中至少三种字符
程序运行示例2:
Asd123%
密码中存在非法字符
密码长度太短
程序运行示例3:
abc12^*
密码中存在非法字符
密码长度太短且密码中应包含大小写字母、数字、其它符号四种中至少三种字符
输入提示:无
输出信息提示:
如果密码符合上述要求,则输出:“密码设置成功\n”,
不符合要求则提示:“密码长度太短且密码中应包含大小写字母、数字、其它符号四种中至少三种字符\n” 或 “密码长度太短\n” 或者"密码中应包含大小写字母、数字、其它符号四种中至少三种字符\n" 或"密码中存在非法字符\n" (提示:可能输出多个提示.)
代码
#include <stdio.h>
#include <string.h>
void f(char str[])
{
int flag1=0,flag2=0,flag3=0,flag4=0,flag5=0,j;
for( j=0; str[j]!='\0'; j++)
{
if(str[j]>='A'&&str[j]<='Z')
flag1=1;
else if(str[j]>='a'&&str[j]<='z')
flag2=1;
else if(str[j]>='0'&&str[j]<='9')
flag3=1;
else if(str[j]=='@'||str[j]=='-'||str[j]=='_'||str[j]=='#'||str[j]=='~')
flag4=1;
else flag5=1;
}
if(flag1+flag2+flag3+flag4>2 && j>8&&flag5==0)
{
printf("密码设置成功\n");
}
else
{
if(flag5!=0)
printf("密码中存在非法字符\n");
if(j<=8&&flag1+flag2+flag3+flag4<=2)
printf("密码长度太短且密码中应包含大小写字母、数字、其它符号四种中至少三种字符\n");
else if(j<=8)
printf("密码长度太短\n");
else if(flag1+flag2+flag3+flag4<=2)
printf("密码中应包含大小写字母、数字、其它符号四种中至少三种字符\n");
}
}
int main()
{
char str[20];
gets(str);
f(str);
return 0;
}