1. 项目背景与需求解析
"数字替换"是GESP(青少年编程能力等级考试)C++一级中的典型题型,主要考察考生对基础语法、循环结构和条件判断的掌握程度。这类题目通常设定一个具体场景,要求考生编写程序对输入的数字序列进行特定规则的转换处理。
在实际教学中发现,初学者在处理这类问题时容易陷入几个误区:过度依赖硬编码、忽略边界条件、循环控制不当等。这道真题的价值在于它完美融合了以下核心知识点:
- 标准输入输出的正确使用
- 整型变量的定义与运算
- for/while循环的灵活运用
- if条件语句的逻辑构建
提示:GESP考试特别注重代码的规范性和可读性,解题时要注意变量命名、缩进格式和注释完整性。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 题目原题重现与理解
根据考生回忆,2026年3月C++一级真题"数字替换"的完整描述如下:
code复制给定一个整数n(1≤n≤100)和一个长度为n的整数序列a(0≤a_i≤1000)。
要求将序列中所有等于2的元素替换为0,并输出修改后的序列。
输入格式:
第一行包含整数n
第二行包含n个整数,表示序列a
输出格式:
一行n个整数,表示修改后的序列
示例:
输入:
5
1 2 3 2 4
输出:
1 0 3 0 4
2.1 输入输出规范分析
这道题明确要求处理标准输入输出,这是C++一级考试的固定考查方式。需要注意:
- 输入数据分两行,第一行是数据规模n,第二行才是具体数据
- 输出要求严格匹配格式,末尾不能有多余空格
- 数据范围已经给出(n≤100,a_i≤1000),不需要考虑大数处理
2.2 核心算法逻辑
问题本质是简单的数组遍历与条件替换,算法流程可分解为:
- 读取整数n
- 创建大小为n的数组/vector
- 循环读取n个数字存入数组
- 再次循环遍历数组,遇到2则替换为0
- 输出处理后的数组
3. 完整代码实现与解析
3.1 基础解法代码
cpp复制#include <iostream>
using namespace std;
int main() {
int n;
cin >> n; // 读取数字个数
int a[100]; // 题目规定n≤100
for(int i=0; i<n;
