在编程中,绘制图案是一项有趣且有用的练习,尤其是对于新手来说,它帮助熟悉基本的编程概念。在本博客中,我们将探讨两种不同的方法来实现正方形字符图案的打印。我们将详细讲解这两种方法的代码,并对其进行分析。
示例代码
方法一:字符循环法
代码:
#include <stdio.h>
int main() {
int i, j, m, n, k;
char f[100], h[100];
// 读取矩阵的行数和列数
scanf("%d %d", &m, &n);
// 初始化字符数组 f 和 h
for (i = 0; i < n; i++) {
f[i] = 'A' + i;
}
for (i = 0; i < n; i++) {
h[i] = f[i];
}
// 打印第一行
for (i = 0; i < n; i++) {
printf("%c", f[i]);
}
printf("\n");
// 打印其余行
for (i = 1; i < m; i++) {
for (j = n - 1; j >= 0; j--) {
f[j + 1] = f[j];
}
f[0] = h[i];
for (k = 0; k < n; k++) {
printf("%c", f[k]);
}
printf("\n");
}
return 0;
}
解析:
-
初始化字符数组:
f
用来存储当前行的字符。h
用来存储初始行状态,以便后续打印。
-
打印第一行:
- 通过循环打印字符数组
f
。
- 通过循环打印字符数组
-
打印其余行:
- 右移字符数组
f
的所有元素,插入新字符以形成新的行。
- 右移字符数组
这种方法简单直观,通过右移字符实现了行的变化,适合处理基本的字符图案。
方法二:字符填充法
代码:
#include <stdio.h>
int main() {
int m, n, i, j, s = 0, k = 0;
scanf("%d %d", &m, &n);
char a[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
char arr[m][n];
// 填充字符矩阵
for (i = 0; i < m; i++) {
for (j = i; j > 0; j--) {
arr[i][k++] = a[j];
}
for (; k < n; k++) {
arr[i][k] = a[s++];
}
k = 0;
s = 0;
}
// 打印字符矩阵
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%c", arr[i][j]);
}
printf("\n");
}
return 0;
}
解析:
-
初始化字符数组:
a
是包含所有字母的数组。arr
用来存储字符矩阵。
-
填充矩阵:
- 每一行先填充递减的字符,然后填充递增的字符。
-
打印矩阵:
- 双重循环遍历并打印
arr
矩阵中的字符。
- 双重循环遍历并打印
这种方法通过逐行填充字符矩阵,灵活且适合处理更复杂的图案布局。
总结
以上两种方法展示了如何在 C 语言中使用数组和循环打印正方形字符图案:
- 字符循环法:简单易懂,适合基本字符图案的处理。
- 字符填充法:灵活,适合更复杂的字符矩阵布局。
通过这些示例,你可以掌握在 C 语言中如何操作字符数组来生成各种字符图案。如果你有任何问题或建议,请在评论区留言!