1. 项目背景与需求分析
"小杨的X字矩阵"是GESP(青少年编程能力等级考试)2023年9月二级考试的一道典型编程题目。这类题型主要考察考生对二维数组操作、循环控制结构和基础算法思维的掌握程度。在实际教学中,这类题目常被用作训练学生从问题描述到代码实现的完整解题能力。
题目核心要求是生成一个由大写字母X组成的特定图案矩阵。具体规则通常包括:
- 矩阵尺寸为n×n(n为奇数)
- 主对角线和副对角线上的元素为X
- 其余位置为空格或指定字符
- 需要处理用户输入并验证合法性
这类题目看似简单,但完整实现需要考虑边界条件、输入验证、输出格式等细节,非常适合检验初学者的编程基本功。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 解题思路与算法设计
2.1 基础实现方案
最直观的解法是使用双重循环遍历矩阵每个位置,通过行列坐标判断是否位于对角线上:
python复制n = int(input())
for i in range(n):
for j in range(n):
if i == j or i + j == n - 1:
print('X', end='')
else:
print(' ', end='')
print()
这种方案时间复杂度为O(n²),空间复杂度O(1),适合小规模矩阵。但存在几个可以优化的点:
- 输入未验证是否为奇数
- 每行输出后调用了print(),产生额外I/O开销
- 条件判断可以进一步简化
2.2 优化后的实现
改进版本增加了输入验证和字符串拼接优化:
python复制while True:
n = int(input("请输入奇数矩阵大小:"))
if n % 2 == 1 and n > 0:
break
print("输入必须为正奇数!")
matrix = []
for i in range(n):
row = []
for j in range(n):
row.append('X' if i == j or i + j == n - 1 else ' ')
matrix.append(''.join(row))
