C语言如何根据输入n动态生成对应层数的字母嵌套方框图案
动态嵌套方框图案实现方案
核心规律梳理
所有样例均符合以下可复用的逻辑,不需要针对每个n单独写静态判断:
- 输入正整数n时,生成的正方形矩阵边长固定为
2*n - 从最外层到最内层共n层嵌套边框,从外到内依次使用从A开始倒数的连续大写字母:最外层为
'A' + n -1,最内层为'A' - 对矩阵中任意坐标位置,计算它到矩阵上、下、左、右四条边界的最短距离,距离为0对应最外层,距离为k对应往内第k层,直接匹配对应字符即可。
可直接运行的实现代码
#include <stdio.h> int main() { int i, j, n; printf("Enter the no for pattern:\n"); // 基础输入合法性校验 if (scanf("%d", &n) != 1 || n < 1) { printf("请输入正整数\n"); return 1; } int size = 2 * n; // 矩阵总边长 for (i = 1; i <= size; i++) { for (j = 1; j <= size; j++) { // 计算当前点到四条边的距离 int dist_top = i - 1; int dist_bottom = size - i; int dist_left = j - 1; int dist_right = size - j; // 取四个距离的最小值,确定当前点所在层数 int min_dist = dist_top; if (dist_bottom < min_dist) min_dist = dist_bottom; if (dist_left < min_dist) min_dist = dist_left; if (dist_right < min_dist) min_dist = dist_right; // 匹配对应字符打印 printf("%c", 'A' + (n - 1 - min_dist)); } printf("\n"); } return 0; }
效果验证
- 输入n=1时,输出2*2全A矩阵,符合要求
- 输入n=2时,输出4*4外层B、内层A的边框,和最初静态实现的输出完全一致
- 输入n=3时,输出6*6三层嵌套C/B/A图案,和给出的样例完全匹配
内容的提问来源于stack exchange,提问作者Reactoo
相关产品推荐
相关产品推荐

