要生成一个n阶方阵,可以使用二维数组来表示。下面是一个使用C语言生成n阶方阵的示例代码:
#include <stdio.h>
#define MAX_SIZE 10
void generateSquareMatrix(int matrix[MAX_SIZE][MAX_SIZE], int n) {
int num = 1;
int row = 0, col = n / 2;
// 初始化矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
matrix[i][j] = 0;
}
}
// 生成方阵
while (num <= n * n) {
matrix[row][col] = num;
num++;
// 移动位置
row--;
col++;
// 处理边界和重复数字
if (row < 0 && col >= n) {
row += 2;
col--;
}
else if (row < 0) {
row = n - 1;
}
else if (col >= n) {
col = 0;
}
else if (matrix[row][col] != 0) {
row += 2;
col--;
}
}
}
void printMatrix(int matrix[MAX_SIZE][MAX_SIZE], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
int matrix[MAX_SIZE][MAX_SIZE];
int n;
printf("请输入方阵的阶数:");
scanf("%d", &n);
generateSquareMatrix(matrix, n);
printMatrix(matrix, n);
return 0;
}
这段代码中,generateSquareMatrix
函数用于生成n阶方阵,将生成的方阵存储在matrix
二维数组中。printMatrix
函数用于打印方阵的结果。
在main
函数中,首先通过用户输入获取方阵的阶数n,然后调用generateSquareMatrix
函数生成方阵,最后调用printMatrix
函数打印结果。
注意,这里使用的MAX_SIZE
宏定义了方阵的最大阶数,你可以根据需要修改该值。