这道题的要求是使用C语言编写一个程序,基于用户输入的行数n(奇数),按照图示的方式打印一个从上到下、从左到右递增的大写字母矩形图案,且该矩形为空心菱形。
以下是符合题目要求的C语言代码:
#include <stdio.h>
void printPattern(int n) {
int mid = n / 2; // 计算矩形的中心位置
char ch = 'A'; // 从'A'开始的字母
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
// 判断是否处于菱形的边缘
if (i + j == mid || j - i == mid || i - j == mid || i + j == 3 * mid) {
printf("%c ", ch++);
} else {
printf(" ");
}
// 字母循环回到A-Z范围
if (ch > 'Z') {
ch = 'A';
}
}
printf("\n");
}
}
int main() {
int n;
printf("请输入一个奇数行数: ");
scanf("%d", &n);
// 判断是否为奇数,否则提示错误
if (n % 2 == 0) {
printf("请输入一个奇数!\n");
return 1;
}
printPattern(n);
return 0;
}
代码说明:
1. printPattern函数:
使用双重for循环遍历n行n列的矩阵。
判断是否处于菱形的边缘位置,若在边缘则输出当前字母,并将字母递增。
若字母超过'Z',则循环回到'A'。
2. 输入与校验:
在main函数中,用户输入一个奇数行数n。
若用户输入偶数,程序会提示错误并退出。
示例输出:
输入n = 7,输出如下:
A
B C
D E
F G
H I
J K
L
这段代码能够满足题目要求,并且在控制台中生成类似的空心菱形矩形。
效果如下图
