Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32911
  • 博文数量: 35
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2021-09-17 18:39
文章分类

全部博文(35)

文章存档

2021年(35)

我的朋友

分类: C/C++

2021-09-18 18:39:28

网络上各类交易活动越来越普及,为了能够安安心心地上网,经常需要设置一个安全的密码。一般来说一个比较安全的密码至少应该满足下面两个条件:
(1)密码长度大于等于8。
(2)密码中的字符应该来自下面“字符类别”中四组中的至少三组。
 这四个字符类别分别为:
(1)大写字母:A,B,C...Z;
 (2)小写字母:a,b,c...z;
 (3)数字:0,1,2...9;
 (4)特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。


输入
输入数据有多组,每组占一行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。


输出
对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。


样例输入
a1b2c3d4
Linle@ACM
^~^@^@!%


样例输出
NO
YES
NO


我的代码如下:
#include
#include
using namespace std;
int main()
{
    int i,k,a,b,c,d,l;
    char j,str[51];
    while(scanf("%s",str)!=EOF){
        a=0,b=0,c=0,d=0;
        l=strlen(str);
        for(i=0;i             for(j='A';j<'A'+26;j++){
                if(str[i]==j){
                    a=1;
                    break;
                }
            }
            for(j='a';j<'a'+26;j++){
                if(str[i]==j)
                    b=1;
            }
            for(j='0';j<'0'+10;j++){
                if(str[i]==j)
                    c=1;
            }
            switch(str[i]){
                case '~':d=1;
                case '!':d=1;
                case '@':d=1;
                case '#':d=1;
                case '$':d=1;
                case '%':d=1;
                case '^':d=1;break;
            }
        }
        printf("%d %d %d %d\n",a,b,c,d);
        if(a+b+c+d>=3&&l>=8)
            printf("yes\n");
        else
            printf("no\n");
    }
    return 0;
}
阅读(729) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~