挑战一下吧!!!,修改如下代码
#include<stdio.h>
int n;
int i = 0; //行
int j = 0; //列
int k = 1; //运动方向. k =1 →; k=2 ↙; k=3 ↓ ;k=4 ↗
int data[100][100];
int main()
{
printf("输入矩阵阶数:\n");
scanf_s("%d", &n);
//------------------判断方向
while (i != n - 1 || j != n - 1)
{
if (k == 1)
{
data[i][j + 1] = data[i][j] + 1;
j++;
if (i == n - 1)
{
k = 4;
}
else
{
k = 2;
}
}
else if (k == 2)
{
data[i + 1][j - 1] = data[i][j] + 1;
j--;
i++;
if (j == 0 && i != n - 1)
{
k = 3;
}
else if (i == n - 1)
{
k = 1;
}
else
{
k = 2;
}
}
else if (k == 3)
{
data[i + 1][j] = data[i][j] + 1;
i++;
if (j == n - 1)
{
k = 2;
}
else
{
k = 4;
}
}
//-------------------------生成矩阵元素
else if (k == 4)
{
data[i - 1][j + 1] = data[i][j] + 1;
j++;
i--;
if (i == 0 && j != n - 1)
{
k = 1;
}
else if (j == n - 1)
{
k = 3;
}
else
{
k = 4;
}
}
}
//显示矩阵
for (int a = 0; a < n; a++)
{
for (int b = 0; b < n; b++)
{
printf("%d\t", data[a][b]);
}
printf("\n");
printf("\n");
}
}
4×4方阵
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
5×5方阵
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9