阅读量:1
要生成一个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
宏定义了方阵的最大阶数,你可以根据需要修改该值。