GESP2024年12月认证C++三级( 第三部分编程题(2、打印数字)
一、这题是不是二维数组模拟题 ✅是的而且是非常典型的“二维图案模拟题”二、什么叫“二维图案模拟题”1、故事像玩像素画游戏1你玩过“像素画”吗屏幕是这样的□ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □2 每个格子就是一个位置 填*或.3这就是 ✅二维数组 一个棋盘 / 画布三、本题的“模拟本质”核心思想一句话把每个数字当成一个 5×5 的二维图案四、先建立“模板库”超级关键1、我们把每个数字想成一个“小图片”1数字 2举例第0行..... 第1行****. 第2行..... 第3行.**** 第4行.....2 这其实就是string two[5] { ....., ****., ....., .****, ..... };2、理解升级 每个数字 一个二维数组 所有数字 一个“图案库”五、整体大画怎么拼1、例子输入122、模拟过程一步一步画我们来手动模拟1第0行row 0数字第0行1****.2..... 拼起来****......2第1行row 1数字第1行1****.2****. 拼起来**********3第2行row 2****......4最终结果5行****...... ********** ****...... *****.**** ****......六、程序模拟思维核心套路三层结构必须记住第1层控制行0~4 画第几行 第2层遍历数字 当前处理哪个数字 第3层决定这个数字这一行长啥样七、用“二维数组思想”重写更清晰我们来用“二维数组思维”写1、定义图案库string g[4][5] { { // 0 ....., .***., .***., .***., ..... }, { // 1 ****., ****., ****., ****., ****. }, { // 2 ....., ****., ....., .****, ..... }, { // 3 ....., ****., ....., ****., ..... } };2、核心模拟代码string n; cin n; for(int row 0; row 5; row) { // 第几行 for(char c : n) { // 每个数字 int d c - 0; // 转成数字 cout g[d][row]; // 输出这一行 } cout endl; }3、完整代码#include iostream #include string using namespace std; int main() { // 图案库g[数字][行] string g[4][5] { { // 0 ....., .***., .***., .***., ..... }, { // 1 ****., ****., ****., ****., ****. }, { // 2 ....., ****., ....., .****, ..... }, { // 3 ....., ****., ....., ****., ..... } }; string n; cin n; // 输入数字串 // 按“行”来输出 for (int row 0; row 5; row) { for (char c : n) { int d c - 0; // 字符转数字 cout g[d][row]; // 输出该数字的这一行 } cout endl; } return 0; }八、这题的“模拟本质总结”本质1二维数组存图案g[数字][行] 图案本质2按行拼接 不是一个一个数字输出 是一行一行拼本质3字符串当“行” 每一行是****.这种字符串九、小学生的理解 我们可以这样记 这题就像 有一堆“数字贴纸”每个5×5 你要把它们排成一排 一行一行贴出来这题就是 每个数字 一个小方块 每个方块 5行 把多个方块横着拼关键技巧✨不是一个数字一个数字画而是一行一行画