在一行输入一个N,然后在下方输出一个NxN数据方阵,如图:
#include <stdio.h>
int main()
{
int a[100][100]={1};
int i=0,j=0,n,s;
scanf("%d",&n);
if(n%2 == 0)
s = n/2;
else
s= n/2 + 1;
for(i=1; i<s;i++)
{
a[i][i] = a[i-1][i-1] + 4*(n-(i-1)*2-1);//找出顺序,标记前几行的首位数字
}
for(i=0;i <= s;i++)
for(j=i+1;j < n-i;j++)
a[i][j] = a[i][j-1] + 1;
for(j=n-1;j>=s;j--)
for(i=n-j;i<=j;i++)
a[i][j] = a[i-1][j] + 1;
for(i=n-1;i>=s;i--)
for(j=i-1;j>=n-i-1;j--)
a[i][j] = a[i][j+1] + 1;
for(j=0;j<s-1;j++)
for(i=n-2-j;i>=j+1;i--)
a[i][j] = a[i+1][j] + 1; //分段进行,分部调试
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
}
这题其实就是数学问题,不过细节尤其麻烦,需要分块调试并完成