要生成一個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
宏定義了方陣的最大階數,你可以根據需要修改該值。