1. 2024年6月C++二级真题解析:英语作业自动批改系统
最近在辅导学生准备电子学会C++二级考试时,遇到一道很有意思的编程题。这道题要求我们开发一个英语老师的小助手程序,能够自动检查学生作业中字母的排列是否符合特定规则。作为有多年C++教学经验的老师,我发现这道题很好地考察了字符串处理、循环结构和条件判断等核心编程能力。
题目具体要求是:程序需要判断一个字符串中相邻字母是否符合特定规则。具体来说:
- 如果是大写字母,后面必须接其小写形式或前一个大写字母
- 如果是小写字母,后面必须接其大写形式或后一个小写字母
这个题目看似简单,但实际上考察了学生对字符编码、字符串遍历和逻辑判断的综合运用能力。下面我就带大家一步步分析解题思路,并给出完整的实现方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 题目分析与解题思路
2.1 题目要求详解
首先我们需要准确理解题目要求。给定一个由大小写字母组成的字符串,程序需要检查其中每对相邻字母是否符合以下规则:
-
当前字母是大写字母时:
- 下一个字母必须是该字母的小写形式
- 或者下一个字母是该字母在字母表中的前一个大写字母
-
当前字母是小写字母时:
- 下一个字母必须是该字母的大写形式
- 或者下一个字母是该字母在字母表中的后一个小写字母
例如:
- "Aa"是合法的(大写A后接小写a)
- "BA"是合法的(大写B后接前一个大写A)
- "aB"是合法的(小写a后接大写B)
- "bc"是合法的(小写b后接后一个小写c)
2.2 解题思路分解
解决这个问题可以按照以下步骤进行:
- 输入处理:获取用户输入的字符串
- 边界检查:处理空字符串或单字符字符串的特殊情况
- 遍历字符串:逐个检查相邻字符对
- 规则验证:对每对字符应用题目给定的规则
- 结果输出:如果所有字符对都符合规则,输出"Y",否则输出"N"
关键在于如何高效地实现规则验证部分。我们需要考虑字符的大小写状态以及它们在字母表中的位置关系。
3. 代码实现与详细解析
3.1 完整代码实现
cpp复制#include <iostream>
#include <string>
using namespace std;
bool isValidPair(char current,
