1. 项目概述:GESP三级"数字替换"题目解析
"数字替换"是CCF-GESP(计算机学会编程能力等级认证)2024年12月三级考试中的一道典型编程题目。这道题考察选手对数组处理、极值查找和批量替换等基础算法的掌握程度。题目要求将一个数字序列中的所有元素替换为该序列的最大值,看似简单实则暗藏多个考察点。
作为信息学奥赛的启蒙级考试,GESP三级题目往往在基础语法之上,着重训练学生的数据抽象能力和算法思维。这道题在2026年3月的一级C++考试中也有类似变体出现,说明它是编程入门阶段的经典训练题型。通过这道题,学生可以掌握数组遍历、极值比较、批量修改等编程基础技能,为后续更复杂的算法学习打下坚实基础。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 题目要求与技术要点拆解
2.1 原始题目描述
题目给出一个包含n个整数的序列a₁,a₂,...,aₙ,要求编写程序将所有元素替换为整个序列的最大值。例如:
输入序列:[3, 7, 2, 8, 5]
输出序列:[8, 8, 8, 8, 8]
2.2 核心考察点分析
- 数组遍历技术:需要完整扫描数组两次 - 第一次找最大值,第二次进行替换
- 极值查找算法:初始化最大值变量,通过比较更新极值
- 批量修改技巧:遍历数组进行统一赋值操作
- 边界条件处理:空数组、全相同元素等特殊情况
2.3 输入输出规范
- 输入格式:第一行为整数n,第二行为n个空格分隔的整数
- 输出格式:一行n个空格分隔的整数(替换后的序列)
- 数据范围:1 ≤ n ≤ 1000,-10000 ≤ aᵢ ≤ 10000
3. 解决方案设计与实现
3.1 基础算法流程
cpp复制1. 读取整数n
2. 创建大小为n的数组arr
3. 读取n个整数存入arr
4. 初始化max_val为最小可能值
5. 遍历数组更新max_val
6. 再次遍历数组将所有元素设为max_val
7. 输出修改后的数组
3.2 C++实现代码
cpp复制#include <iostream>
#include <climits>
using namespace std;
int main() {
int n;
cin >> n;
int arr[n];
