B3843 [GESP202306 三级] 密码合规 题解

先看一下本题的题目描述:

题目描述

网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。合规的密码应满足以下要求 :。

  1. 只能由 a∼za∼z 之间 2626 个小写字母、A∼ZA∼Z 之间 2626 个大写字母、0∼90∼9 之间 1010 个数字以及 !@#$四个特殊字符构成。

  2. 密码最短长度 :6:6 个字符,密码最大长度 :12:12 个字符。

  3. 大写字母,小写字母和数字必须至少有其中两种,以及至少有四个特殊字符中的一个。

输入格式

输入一行不含空格的字符串。约定长度不超过 100100。该字符串被英文逗号分隔为多段,作为多组被检测密码。

输出格式

输出若干行,每行输出一组合规的密码。输出顺序以输入先后为序,即先输入则先输出。

输入输出样例

输入 #1复制

seHJ12!@,sjdkffH$123,sdf!@&12HDHa!,123&^YUhg@!

输出 #1复制

seHJ12!@
sjdkffH$123

说明/提示

【样例 1 解释】

输入被英文逗号分为了四组被检测密码:seHJ12!@sjdkffH$123sdf!@&12HDHa!123&^YUhg@!。其中 sdf!@&12HDHa! 长度超过 12 个字符,不合规;123&^YUhg@! 包含四个特殊字符之外的字符不合规。

根据题目描述,可以得出一个大致思路:定义一个字符串a,通过for循环,进行一个判断:a[i]是否为','。如果a[i]==',',直接开始计数,判断小写字母,大写字母,数字,符号等各出现了多少次。否则,直接判断输出,记得重置所有的变量。

ok啊,直接上AC代码!本题只是字符串基础,就不过多讲解了。

#include<bits/stdc++.h>
using namespace std;
int main(){    
    //定义变量,初始化
    string a,b;
    int da,xiao,shu,fu,else_;
    da=xiao=shu=fu=else_=0;
    cin>>a;
    a+=','; //给a补充一个',',否则判断不到最后一个
    for(int i=0;i<=a.size();i++){
        //计数
        if(a[i]!=','){
            if(a[i]>='a' && a[i]<='z'){
                xiao++;
            }
            else if(a[i]>='A' && a[i]<='Z'){
                da++;
            }
            else if(a[i]>='0' && a[i]<='9'){
                shu++;
            }
            else if(a[i]=='@' || a[i]=='!' || a[i]=='#' || a[i]=='$'){
                fu++;
            }
            //不要忘记判断其他情况
            else{
                else_++;
            }
            b+=a[i];
        }
        else{
            b+='\0'; //结尾必须为'\0'
            //调试
            //cout<<da<<" "<<xiao<<" "<<shu<<" "<<fu<<" "<<else_<<" "<<b<<endl; 
            if(fu>=1 && else_==0){ //判断
                if((da>0 && shu>0) || (xiao>0 && shu>0) || (da>0 && xiao>0)){
                    if(b.size()>=7 && b.size()<=13){
                        cout<<b<<endl;
                    }
                }
            }
            //重置
            b=""; 
            da=xiao=shu=fu=0;
            else_=0;
            //重置
        }
    }
    return 0;
}

 本题可以进行优化,欢迎大佬来点评

完结撒花🎇

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GESP(Global Engineering Software Proficiency)是一种全球认可的工程软件能力认证标准,而Python则是一种高级编程语言。根据题目要求回答,以下是关于GESP Python三级认证试卷6月的一些说明。 GESP Python三级认证试卷是一种考核Python编程能力的专业认证试卷,在 6 月份进行。这个认证试卷旨在评估考生在使用Python语言和相关工具进行软件开发和解决问题方面的能力。 考试内容通常包括理论知识和实际编程题。理论部分可能包括Python语言的基础知识、面向对象编程、异常处理、模块和包管理、文件处理等方面的问题。考生需要能够准确回答这些问题,展示对Python语言的深入理解。 而实际编程题目则是考察考生在Python语言下解决问题的能力。这些题目可能涉及数据结构和算法、字符串处理、文件读写、数据库操作、网络编程等方面的内容。考生需要使用Python编写合适的代码,解决给定的问题。 GESP Python三级认证试卷的通过要求通常会根据不同考试中心的具体规定而有所不同。一般来说,考生需要在规定的时间内完成试卷,并达到一定的分数线才能获得认证。通过这个认证可以证明考生在Python编程方面具备较高的能力和经验,对于就业或者继续深入学习都有很大的帮助。 对于想要参加GESP Python三级认证试卷的考生来说,平时需要加强对Python语言的学习和实践,掌握相关的开发工具和库。还可以参加相关的培训课程和模拟考试,提前了解考试的要求和内容,这样可以更好地应对考试的挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值