2025 图形(蓝桥杯十六届C组程序题 C 题)

样例输入:

4 5

样例输出:

20252

02520

25202

52025

代码如下:

#include <stdio.h>
#include <string.h>

void draw2025(int i,int w)
{
const char base\[\] = "2025";
int baselen = strlen(base);
for(int j = 0;j < w;j++)
{
printf("%c",base(i+j) % baselen);
}
printf("\n");
}

int main()
{
int h,w;
scanf("%d %d",&h,&w);
for(int i=0;i < h;i++)
{
draw2025(i,w);
}
return 0;
}

🏭 核心部件:draw2025 函数(印刷机器)

这个函数的任务很简单:只负责打印一行,然后换行。

参数含义
i:代表行号。机器需要知道现在是第几行,才能决定从 "2025" 的哪个字开始印(实现错位效果)。
w:代表宽度。这一行要印多少个字符。
核心算法 (i + j) % baselen
这是整段代码的灵魂,用来解决**"循环"** 和**"错位"**两个问题。
base 是 "2025",长度 baselen 是 4。
i 是行号,j 是列号。
取模运算(%) :就像钟表一样,数到 4 就回到 0。
复制代码
##### 当 `i=0`(第1行):索引是 0,1,2,3,0,1...0,1,2,3,0,1... → 输出 **202520...**
复制代码
##### 当 `i=1`(第2行):索引是 1,2,3,0,1,2...1,2,3,0,1,2... → 输出 **025202...**(自动实现了向左移动一位的效果!)

👷 主控中心:main 函数(车间主任)

流程解析
接收输入:比如输入 5 10(高5,宽10)。
循环调用:
复制代码
 ##### 第一次循环(i=0):调用 `draw2025(0, 10)` → 机器打印第 1 行。
复制代码
 ##### 第二次循环(i=1):调用 `draw2025(1, 10)` → 机器打印第 2 行(自动错位)。
复制代码
 ##### ...以此类推,直到打印完第 5 行。

📊 举例演示

假设输入 h=2, w=5:

  1. 第 1 轮循环**(i=0)**:

    • 调用 draw2025(0, 5)。
    • 内部循环 j 从 0 到 4。
    • 索引计算: (0 + 0) % 4 = 0(0 + 0) % 4 = 0 ( '2' ), (0 + 1) % 4 = 1(0 + 1) % 4 = 1 ( '0' )...
    • 输出:20252,然后换行。
  2. 第 2 轮循环**(i=1)**:

    • 调用 draw2025(1, 5)。
    • 内部循环 j 从 0 到 4。
    • 索引计算: (1 + 0) % 4 = 1(1 + 0) % 4 = 1 ( '0' ), (1 + 1) % 4 = 2 (1 + 1) % 4 = 2 ('2')...
    • 输出:02520,然后换行。
相关推荐
听风说ml5 小时前
socket编程 【C语言】
c语言·udp·tcp·socket编程
学逆向的6 小时前
C 局部静态变量
c语言·开发语言·网络安全
UIU1147 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
论文复现现场7 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi7 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
秋天的怀念_David8 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
碧海银沙音频科技研究院9 小时前
在PC电脑上用Whisper→Marian算法实现离线语音翻译功能
算法·whisper
niyongsheng9 小时前
3D 装箱算法工程化:数据结构、放置启发式与支撑规则
数据结构·算法·rust
叉烧滑蛋12 小时前
B站台湾大学郭彦甫|MATLAB 学习笔记|04 变量与档案存取
数据结构
j7~12 小时前
【穷举、深搜与回溯算法】一棵决策树讲透全排列与子集
数据结构·c++·算法·leetcode·回溯·递归