C言語を使用してn次元の正方行列を生成する方法は何ですか。
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という定数は、行列の最大次数を定義しています。必要に応じてその値を変更してください。