题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2043
题意解析:目的是判断一串密码是否安全,条件是满足1.大写字母:A,B,C...Z; 2.小写字母:a,b,c...z; 3.数字:0,1,2...9; 4.特殊符号:~,!,@,#,$,%,^;四种类型符号中的三种。
做题思路:最好是定义四个flag变量来进行标记,满足一个条件,就使 flag=1,只要满足有 4个flag之和大于等于3就为安全密码;
代码实现:
#include <stdio.h>
#include <string.h>
int main()
{
int m,i,j,len;
int flag1,flag2,flag3,flag4;
char s[55];
scanf("%d",&m);
while(m--)
{
scanf("%s",s);
flag1=0;
flag2=0;
flag3=0;
flag4=0;
len=strlen(s);
for(i=0;i<len;i++)
{
j=i+1;////////////////////////////用于记录密码的字符数
if('a'<=s[i]&&s[i]<='z')
{
flag1=1;
}
if('A'<=s[i]&&s[i]<='Z')
{
flag2=1;
}
if('0'<=s[i]&&s[i]<='9')
{
flag3=1;
}
if(s[i]=='~'||s[i]=='!'||s[i]=='@'||s[i]=='#'||s[i]=='$'||s[i]=='%'||s[i]=='^')
flag4=1;
}
if(flag1+flag2+flag3+flag4>=3&&j>=8&&j<=16)/////////////////////////////////////关键条件:保证密码有三种字符,同时密码的字符数在8-16个之间
printf("YES\n");
else
printf("NO\n");
}
return 0;
}