首页 > 编程语言 >GESP C++ 三级真题(2023年6月)密码合规

GESP C++ 三级真题(2023年6月)密码合规

时间:2024-07-16 18:00:44浏览次数:20  
标签:输出 false 真题 C++ 密码 123 seHJ12 2023 输入

【问题描述】
网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。合 规的密码应满足以下要求:
1 、只能由 a-z 之间 26 个小写字母、 A-Z 之间 26 个大写字母、 0-9 之间 10 个 数字以及 !@#$ 四个特殊字符构成。
2 、密码最短长度: 6 个字符,密码最大长度: 12 个字符。
3、大写字母、小写字母和数字必须至少有其中两种,以及至少有四个特殊 字符中的一个。
【输入描述】
输入一行不含空格的字符串。约定长度不超过 100。该字符串被英文逗号分 隔为多段,作为多组被检测密码。
【输出描述】
输出若干行,每行输出一组合规的密码。 输出顺序以输入先后为序,即先输入则先输出。
【样例输入 1 】
seHJ12!@,sjdkffH$123,sdf!@&12HDHa!,123&^YUhg@!
【样例输出 1 】
seHJ12!@
sjdkffH$123
【样例解释 1 】
输入被英文逗号分为了四组被检测密码: “seHJ12!@” 、 “sjdkffH$123”、 “sdf!@&12HDHa!” 、 “123&^YUhg@!” 。其中, “sdf!@&12HDHa!” 长度超过 12 个字 符,不合规; “123&^YUhg@!” 包含四个特殊字符之外的字符 “^” ,不合规。

#include <bits/stdc++.h>
using namespace std;
bool check(string str) {
	int l=str.size();
	if (l < 6 || l > 12)
		return false;
	bool hasC=false, hasL=false, hasD=false, hasS=false;
	for(int i = 0; i<str.size(); i++) {
		if('A'<=str[i]&&str[i]<='Z') {
			hasC = true;
		}else if('a'<=str[i]&&str[i]<='z') {
			hasL = true;
		}else if('0'<=str[i]&&str[i]<='9') {
			hasD = true;
		} else if(str[i]=='!'||str[i]=='@'||str[i]=='#'||str[i]=='$') {
			hasS = true;
		} else
			return false;
	}
	if (!hasS)
		return false;
	if (hasC+hasL+hasD< 2)
		return false;
	return true;
}
int main(){
    string s, s1;
    cin >> s;
    stringstream sin;
    for(int i = 0; i < s.size(); i++){
        if (s[i] == ','){
            s[i] = ' ';
        }
    }
    sin << s;
    while(sin >> s1){
        if (check(s1)){
            cout << s1 << endl;
        }
    }
    return 0;
}

标签:输出,false,真题,C++,密码,123,seHJ12,2023,输入
From: https://blog.csdn.net/yymer214/article/details/140472988

相关文章

  • 软件设计师(中级)真题讲解专题视频(2022年-2023年)
    一、视频介绍    本视频主要对软件设计师近两年真题进行专题分析,通过学习本视频,可以帮助考生掌握软件设计师近年来考试核心知识,全方位覆盖考试要点,从而轻松备战考试。二、获取方式        视频是捐赠方式获取,捐赠后在评论区留下邮箱或微信联系我,发送视频链......
  • C++(函数参数为数组与指针算术)
    目录1.函数参数为数组2.指针算术2.1arr是指向第一个元素的地址2.2arr[i]表示什么?#include<iostream>voidprintArray(intarr[],intsize){for(inti=0;i<size;++i){std::cout<<arr[i]<<"";}}intmain(){intarr[5]......
  • C++题解(7) 信息学奥赛一本通:1055:判断闰年
    【题目描述】判断某年是否是闰年。如果公元a年是闰年输出Y,否则输出N。【输入】输入只有一行,包含一个整数a(0<a<3000)。【输出】一行,如果公元a年是闰年输出Y,否则输出N。【输入样例】2006【输出样例】N【知识链接:如何判断闰年】(1)能被4整除,但不......
  • C++题解(6) 信息学奥赛一本通:2069:【例2.12 】糖果游戏
    【题目描述】某幼儿园里,有5个小朋友编号为1、2、3、4、5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果(键盘输入),现在他们做一个分糖果游戏。从1号小朋友开始,将自己的糖果均分三份(如果有多余的糖果,则立即吃掉),自己留一份,其余两份分给他的相邻的两个小朋友。......
  • 【C++】链表相关的项目(2.0)
    链表相关的项目1.0需要请点击       ---------------------------------------------------准备工作首先弄几个可能会需要的头文件:#include<stdio.h>#include<stdlib.h>#include<string.h>typedefintADT;//定义自定义数据类型​​因为写的是关于......
  • C++11平凡可复制类型检测is_trivially_copyable
    1.C++基础回顾     在C++11中,平凡类型(TrivialType)、平凡可复制类型(TrivialCopyable)、标准布局类型(Standard-layoutType)是描述类在内存中布局特性的术语,它们与类的构造、拷贝、赋值和销毁行为有关,也影响着类的内存布局和对齐方式。下面用通俗的语言解释这些概念:1.1.平......
  • C++获取当前毫秒数
    转自https://www.cnblogs.com/c9080/p/17509268.html,在C++11中,可以使用<chrono>头文件中的std::chrono::system_clock类来获取当前时间戳。它提供了多种精度和分辨率的时钟类型,其中最常用的是系统时钟。以下是一个示例程序,演示如何使用std::chrono::system_clock类获取......
  • C++ 用智能指针这样包装 this 指针是否可行
    #include<iostream>#include<memory>usingnamespacestd;classA;classB{public:B(shared_ptr<A>a){pa=a;cout<<"B构造..."<<endl;}~B(){cout<<&quo......
  • 2024年7月JLPT日语N2真题试卷、答案解析、听力原文
    本套真题由【学日语的師夫】制作排版,分享下载日语等级考试N1N2N3N4N5专四专八历年真题PDF文件,树先生日语真题的平替内容,精讲版答案解析非常适合复习备考,听力原文真是还原听力场景,多听多练习。如果你正在备考12月份的考试,可以参考【学日语的師夫】排版的真题内容,刷真题是最有效......
  • C++游戏篇1“很好的游戏,使我手指旋转”(原创)
    话不多说,上代码!#include<bits/stdc++.h>#include<windows.h>usingnamespacestd;intGe,Fen,timp,F,a[22][6];doubleShi,B;voidS(intForgC,intBackC){WORDwColor=((BackC&0x0F)<<4)+(ForgC&0x0F);SetConsoleTextAttribute(GetS......