#include<iostream>
using namespace std;
int main()
{
int i, j, a[15][15], n, k;
printf("n=");
cin >> n;
k = 1;
for (i = 1; i <= n / 2; i = i + 1)
{
for (j = i; j <= n - i; j = j + 1) //上方
{
a[i][j] = k;
k = k + 1;
}
for (j = i; j <= n - i; j = j + 1) //右方
{
a[j][n - i + 1] = k;
k = k + 1;
}
for (j = n - i + 1; j >= i + 1; j = j - 1) //下方
{
a[n - i + 1][j] = k;
k = k + 1;
}
for (j = n - i + 1; j >= i + 1; j = j - 1) //左方
{
a[j][i] = k;
k = k + 1;
}
}
if (n % 2 == 1)
{
i = (n + 1) / 2;
a[i][i] = n * n;
}
for (i = 1; i <= n; i = i + 1)
{
printf("\n");
for (j = 1; j <= n; j = j + 1)
{
printf("%d\t", a[i][j]);
}
}
printf("\n");
}
打印如下矩阵,1,2,3,4,5,6,7,24,25.....
本文介绍了一种用于生成矩阵的算法,通过四向填充方式在给定的 n x n 矩阵中填充数字,适用于奇数和偶数行数。该算法首先创建一个正方形矩阵,然后按照对角线和边界规则递增填入数字。对于奇数行,中心位置的值为 n*n。核心代码展示了如何使用 C++ 实现这一过程。
摘要由CSDN通过智能技术生成