文章

【GESP】C++ 三级真题解析,[2025年12月,第十二次认证]第一题密码强度

GESP C++ 2025年12月,三级真题第一题,考察字符串考点,相对比较简单。题目难度⭐★☆☆☆。

第一题,密码强度

题目要求

题目描述

密码强度


题目分析

1. 核心逻辑

本题属于字符串基础题目,核心是判断给定的字符串是否同时满足以下三个安全条件:

  1. 长度要求:字符串长度必须大于等于 8。
  2. 字符类型要求
    • 必须包含至少一个大写字母'A'-'Z')。
    • 必须包含至少一个数字'0'-'9')。

只有这三个条件同时满足,才输出 Y,否则输出 N

2. 解题思路

对于每一组输入的字符串 $s$,我们可以按照以下步骤进行处理:

  1. 长度预检:首先检查字符串长度 s.length()。如果长度小于 8,直接不符合要求,输出 N 并处理下一组数据。这样可以减少不必要的遍历,提高效率。
  2. 状态标记:定义两个布尔变量(例如 has_upperhas_digit),初始值设为 false,分别用于记录是否检测到了大写字母和数字。
  3. 遍历检查:遍历字符串的每一个字符:
    • 这是一个大写字母吗?如果是,将 has_upper 标记为 true
    • 这是一个数字吗?如果是,将 has_digit 标记为 true
  4. 最终判断:遍历结束后,如果 has_upperhas_digit 均为 true,说明满足所有条件(长度已在第一步检查过),输出 Y;否则输出 N


示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <string>

/**
 * GESP 2025年12月 三级编程题 T1: 密码强度
 * 
 * 题目核心:
 * 判断一个密码字符串是否同时满足以下三个条件:
 * 1. 长度至少包含 8 个字符。
 * 2. 至少包含一个大写字母 (A-Z)。
 * 3. 至少包含一个数字 (0-9)。
 * 
 * 如果都满足输出 'Y',否则输出 'N'。
 */

int main() {
    int t;
    std::cin >> t; // 读取测试数据组数

    while (t--) {
        std::string s;
        std::cin >> s; // 读取密码字符串

        // 条件 1: 长度检查
        if (s.length() < 8) {
            std::cout << "N" << std::endl;
            continue; // 如果长度不够,直接输出 N 并处理下一组
        }

        bool has_upper = false; // 是否有大写字母
        bool has_digit = false; // 是否有数字

        // 遍历字符串检查字符类型
        for (int i = 0; i < s.length(); i++) {
            if (s[i] >= 'A' && s[i] <= 'Z') {
                has_upper = true;
            } else if (s[i] >= '0' && s[i] <= '9') {
                has_digit = true;
            }
        }

        // 条件 2 & 3: 必须同时包含大写字母和数字
        if (has_upper && has_digit) {
            std::cout << "Y" << std::endl;
        } else {
            std::cout << "N" << std::endl;
        }
    }

    return 0;
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP 学习专题站:GESP WIKI

luogu-”系列题目可在洛谷题库进行在线评测。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

欢迎加入Java、C++、Python技术交流QQ群(982860385),大佬免费带队,有问必答

欢迎加入C++ GESP/CSP认证学习QQ频道,考试资源总结汇总

欢迎加入C++ GESP/CSP学习交流QQ群(688906745),考试认证学员交流,互帮互助

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
本文由作者按照 CC BY-NC-SA 4.0 进行授权