GESP2024年12月认证C++三级( 第三部分编程题(1、数字替换)

张开发
2026/4/7 9:52:53 15 分钟阅读

分享文章

GESP2024年12月认证C++三级( 第三部分编程题(1、数字替换)
‍♂️ 一、故事背景1、在“数字王国”里有一排小士兵-2 -1 0 1 2国王下了一道命令 “以数字k为标准”2、 魔法规则比k 大 变成最大值比k 小 变成最小值等于k 保持不变二、 举个例子1、输入n 5, k 0 数组-2 -1 0 1 22、 第一步找最大最小最大值 2 最小值 -23、 第二步开始变身原数变化-2小于0 → 变最小 → -2-1小于0 → -20等于0 → 不变1大于0 → 22大于0 → 24、 输出-2 -2 0 2 2 三、解题思路我们分成3关任务 第1关读入数据int n, k; cin n k; 第2关找最大值 最小值 用循环扫描一遍 第3关逐个替换 再循环一遍if(a[i] k) → 最大值 else if(a[i] k) → 最小值 else → 不变✨ 四、参考代码#include iostream using namespace std; int a[100010]; int main() { int n, k; cin n k; // 输入数组 for(int i 1; i n; i) { cin a[i]; } // 找最大值和最小值 int maxv a[1], minv a[1]; for(int i 1; i n; i) { if(a[i] maxv) maxv a[i]; if(a[i] minv) minv a[i]; } // 替换 for(int i 1; i n; i) { if(a[i] k) a[i] maxv; else if(a[i] k) a[i] minv; cout a[i]; if(i ! n) cout ; } return 0; } 四、关键知识点总结 1. 遍历数组超级重要 用 for 循环扫一遍 2. 最大值最小值maxv max(maxv, a[i]); minv min(minv, a[i]); 3. 条件判断if k if k else⚠️ 五、常见错误❌ 错误1忘记初始化int maxv; // ❌✅ 应该int maxv a[1];❌ 错误2把 if 写错if(a[i] k) ❌ 应该用 判断❌ 错误3输出格式错误 最后一个数字不能多空格 六、终极总结口诀版先找最大最小值 再看元素和k比 大变最大小变小 等于k就别动它

更多文章