hdu-2043解题报告

题目链接: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;
}

 

posted @ 2018-06-07 17:21  里昂静  阅读(237)  评论(0编辑  收藏  举报