从外层一层一层的往里层赋值,采用全局变量,当检测出结果后跳出循环
并输出回环数据内容
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>#include<stdlib.h>
int temp = 1;
void init(int **a, int m, int n)
{
int i;
for (i = m;i < n - m;i++)
{
a[m][i] = temp++;
if (temp == n*n+1)
return;
}
for (i = m+1;i < n - m;i++)
{
a[i][n - m - 1] = temp++;
if (temp == n*n+1)
return;
}
for (i = n - m-2;i >=m;i--)
{
a[n-m-1][i] = temp++;
if (temp == n*n+1)
return;
}
for (i = n - m - 2;i > m;i--)
{
a[i][m] = temp++;
if (temp == n*n+1)
return;
}
}
int main()
{
int n;
scanf("%d", &n);
int **p = (int **)malloc(sizeof(int *) *n);
for (int i = 0;i < n;i++)
{
p[i] = (int *)calloc(n,sizeof(int));
}
for (int i = 0;i < (n / 2) + 1;i++)
{
init(p, i, n);
}
for (int i = 0;i < n;i++)
{
for (int j = 0;j < n;j++)
printf("%7d\t", p[i][j]);
printf("\n");
}
system("pause");
return 0;
}