PAT 1081 检查密码

https://pintia.cn/problem-sets/994805260223102976/problems/994805261217153024

本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 .,还必须既有字母也有数字。

输入格式:

输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束。

输出格式:

对每个用户的密码,在一行中输出系统反馈信息,分以下5种:

  • 如果密码合法,输出Your password is wan mei.
  • 如果密码太短,不论合法与否,都输出Your password is tai duan le.
  • 如果密码长度合法,但存在不合法字符,则输出Your password is tai luan le.
  • 如果密码长度合法,但只有字母没有数字,则输出Your password needs shu zi.
  • 如果密码长度合法,但只有数字没有字母,则输出Your password needs zi mu.

输入样例:

5
123s
zheshi.wodepw
1234.5678
WanMei23333
pass*word.6

输出样例:

Your password is tai duan le.
Your password needs shu zi.
Your password needs zi mu.
Your password is wan mei.
Your password is tai luan le.

代码:
#include <bits/stdc++.h>

using namespace std;

const int maxn=1e5+10;
char s[maxn];

int main()
{
    int n;
    scanf("%d",&n);
     getchar();
    for(int i=1; i<=n; i++)
    {
        cin.getline(s, maxn);

        int len=strlen(s);
        int flag=0;
        int zm=0,sz=0,dot=0,cnt=0;
        if(len<6)
            printf("Your password is tai duan le.\n");
        else
        {
            for(int j=0; j<len; j++)
            {
                if(s[j]>=‘0‘&&s[j]<=‘9‘)
                    sz++;
                if(s[j]<=‘Z‘&&s[j]>=‘A‘||s[j]>=‘a‘&&s[j]<=‘z‘)
                    zm++;
                if(s[j]==‘.‘)
                    dot++;
            }
            //cout<<sz<<endl<<zm<<endl<<len<<endl<<dot<<endl;
           if(sz+zm+dot<len)
                printf("Your password is tai luan le.\n");

            else
            {
                if(sz==0&&zm!=0)
                    printf("Your password needs shu zi.\n");
                else if(sz!=0&&zm==0)
                    printf("Your password needs zi mu.\n");
                else
                    printf("Your password is wan mei.\n");
            }
        }
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/zlrrrr/p/9286268.html

时间: 2024-10-19 19:41:38

PAT 1081 检查密码的相关文章

1081 检查密码 (15 分)

本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能.该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母.数字和小数点 .,还必须既有字母也有数字. 输入格式: 输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束. 输出格式: 对每个用户的密码,在一行中输出系统反馈信息,分以下5种: 如果密码合法,输出Your password is wan mei.: 如果密码太短,不论合法与否,都输

1081 检查密码

题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805261217153024 题解: 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int main() { 5 int n; 6 cin >> n; 7 getchar(); 8 string str; 9 while (n--) { 10 getline(cin, str); 11 i

python中用正则表达式检查密码是否安全

目的:通过正则表达式检查密码是否强大,这个方法在需要注册网页上应该很常用. 环境:ubuntu 16.04  python3.5 思路:需要多个正则表达式,依次检查输入的密码是否符合要求,可以if或者for配合. import re # 密码至少8位数 rule_1 = re.compile(r'\w{8,}') # 密码同时包含大小写字母 rule_2 = re.compile(r'([a-z].*[A-Z])|([A-Z].*[a-z])') # 密码至少有一位数字 rule_3 = re.

提高sevenzipsharp 检查密码的速度(1)

前言:sevenzipsharp检查密码(包括检查压缩包的有效性)的函数是SevenZipExtractor.check(), sevenzipsharp调用的是7zip的动态链接库,而且不止是7zip,其它压缩软件测试密码这个功能耗时也很久(压缩包小可以忽略,密码错误的时候速度还行,密码正确的话,会把压缩包全部解压,耗时相当于解压一个文件的时间),除了360压缩比较快,至少快几百倍,但是找不到调用的方法,如果谁有更好的解决方案,麻烦提供一下. 原来的check方法4G大小的文件大概耗时 错误的

AD帐户操作C#示例代码(二)——检查密码将过期的用户

本文接着和大家分享AD帐户操作,这次开发一个简单的检查密码将过期用户的小工具. 首先,新建一个用户实体类,属性是我们要取的用户信息. public class UserInfo { /// <summary> /// sAM帐户名称 /// </summary> public string SamAccountName { get; set; } /// <summary> /// 名称 /// </summary> public string Name {

检查密码复杂度的C#正则表达式

原文:检查密码复杂度的C#正则表达式 在用户注册与修改.重置密码时,强制密码达到一定的复杂度,是减少盗号的有效措施之一. 而在代码中检查密码复杂度就需要用到正则表达式,比如要求密码必须包含数字.小写或大写字母.特殊字符.字符数在8-30之间,对应的正则表达式如下: var regex = new Regex(@" (?=.*[0-9]) #必须包含数字 (?=.*[a-zA-Z]) #必须包含小写或大写字母 (?=([\x21-\x7e]+)[^a-zA-Z0-9]) #必须包含特殊符号 .{8

AngularJS:添加检查密码输入是否一致的功能

利用AngularJS的directive,我们可以很方便的实现检验功能.代码如下: 1 // 密码验证directive 2 ftitAppModule.directive('pwCheck', [function () { 3 return { 4 require: 'ngModel', 5 link: function (scope, elem, attrs, ctrl) { 6 var firstPassword = '#' + attrs.pwCheck; 7 elem.add(fir

[转] 检查密码复杂度的 C# 正则表达式

在用户注册与修改.重置密码时,强制密码达到一定的复杂度,是减少盗号的有效措施之一. 而在代码中检查密码复杂度就需要用到正则表达式,比如要求密码必须包含数字.小写或大写字母.特殊字符.字符数在 8-30 之间,对应的正则表达式如下: var regex = new Regex(@" (?=.*[0-9]) #必须包含数字 (?=.*[a-zA-Z]) #必须包含小写或大写字母 (?=([\x21-\x7e]+)[^a-zA-Z0-9]) #必须包含特殊符号 .{8,30} #至少8个字符,最多30

PAT 1067. 试密码

PAT 1067. 试密码 当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死.本题就请你实现这个小功能. 入格式: 输入在第一行给出一个密码(长度不超过20的.不包含空格.Tab.回车的非空字符串)和一个正整数N(<= 10),分别是正确的密码和系统允许尝试的次数.随后每行给出一个以回车结束的非空字符串,是用户尝试输入的密码.输入保证至少有一次尝试.当读到一行只有单个#字符时,输入结束,并且这一行不是用户的输入. 输出格式: 对用户的每个输入,如