C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【ASCII字符编码与画布坐标映射】GESP二级题解:luogu-B4576 [GESP202609 二级] 字符变换
CCF GESP 2026年9月认证(第十五次认证)C++ 二级试题,洛谷 B4576。本题严格遵循 CCF GESP 官方大纲规范,重点考察ASCII字符编码与画布坐标映射。题目逻辑严密,模型典型,是深入理解与掌握信奥核心考点的经典范例。
B4576 [luogu-B4576 [GESP202609 二级] 字符变换]
🔗 洛谷原题传送门:B4576
题目要求
题目描述
小明有一个 的画布(8 行 16 列),画布中的格子从上到下从左到右编号,左上的编号为 1,第一排最后一个的编号为 16,最后一排第一个编号为 113,右下为 128。
初始画布中的每个格子都是 *,随后小明会给定三个正整数,小明会将对应编号的格子变为该正整数对应的 ASCII 编码字符。
最后请帮小明输出整个画布。
输入格式
输入包含三行,每行一个正整数,表示需要替换的画布格子编号。
输出格式
输出 的画布。
输入输出样例
样例输入 #1
48
65
97
样例输出 #1
****************
****************
***************0
****************
A***************
****************
a***************
****************
说明/提示
输入范围是 48 到 57,65 到 90,以及 97 到 122(即 ASCII 编码的 '0''9', 'A''Z', 'a'~'z')。
题目分析与解题思路
- 二维网格一维编号映射:画布大小固定为 。一维编号 ()转换为从 0 开始的行列下标公式为:
- 行号:
- 列号:
- ASCII 类型强制转换:输入为正整数数值 ,其对应的 ASCII 字符可以通过
(char)k强制转换获得,例如 , , 。 - 二维数组填充与输出:初始将整个
char grid[8][16]全部赋值为'*',读取三个输入修改对应位置后双重循环输出。
完整参考代码 (C++11)
/**
* Problem: luogu-B4576
* Standard: C++11 (CCF GESP 官方大纲规范)
* Author: OneCoder
*/
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
// 初始化 8 行 16 列画布,默认填充 '*'
char grid[8][16];
for (int r = 0; r < 8; ++r) {
for (int c = 0; c < 16; ++c) {
grid[r][c] = '*';
}
}
// 读取三个正整数编号并进行字符替换
int code;
for (int i = 0; i < 3; ++i) {
if (cin >> code) {
int idx = code - 1; // 转换为 0-indexed
int r = idx / 16; // 计算对应行
int c = idx % 16; // 计算对应列
if (r >= 0 && r < 8 && c >= 0 && c < 16) {
grid[r][c] = (char)code; // ASCII 强转为字符
}
}
}
// 格式化输出画布
for (int r = 0; r < 8; ++r) {
for (int c = 0; c < 16; ++c) {
cout << grid[r][c];
}
cout << "\n";
}
return 0;
}
考点归纳与备考建议
- 考纲匹配度:严格对标 CCF GESP 二级考纲重点,绝不超纲,注重基础算法与逻辑建模规范;
- 规范防范:所有代码严格以 C++11 标准编译运行,针对整数溢出、边界判断、空状态均做了详尽严整的防御性处理。
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
猜你想读 · 相关文章推荐
【勾股定理与数列平方递推】GESP二级题解:luogu-B4575 [GESP202609 二级] 直角三角形
CCF GESP 2026年9月认证(第十五次认证)C++ 二级试题,洛谷 B4575。本题严格遵循 CCF GESP 官方大纲规范,重点考察勾股定理与数列平方递推。题目逻辑严密,模型典型,是深入理解与掌握信奥核心考点的经典范例。
【GESP】C++二级练习BCQM3042,ASCII码
没看错二级题,因为ASCII码在GESP大纲中是二级部分的内容,大纲中第5条要求: (5)了解编码的基本概念,了解 ASCII 编码原理,能识别常用字符的 ASCII 码(空 格:32、“0”:48、“A”:65、“a”:97),并掌握 ASCII 码和字符之间相互转换的方法。 既然顺路做到了,就顺便练习一下也不难。
【GESP】C++二级练习BCQM3043,大小写转换
还是跟ASCII码有关的二级题目,大小写转换。
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com