|
楼主 |
发表于 2022-11-2 17:03:37
|
显示全部楼层
解决了 两个问题 第一个是最开始15方阵忘了都赋值0,第二个就是if else逻辑上有一些问题,调整了下顺序就好了,代码如下:
#include <stdio.h>
#include <math.h>
int main(void)
{
int a[15][15]={0},i,j,k,p,n;
p=1;
while (p)
{ printf("请输入1-15以内的奇数");
scanf("%d",&n);
if ((n<=15)&&(n%2!=0)) p = 0;
}
for (i = 1;i<=n;i++)
for (j= 1;i<=n;i++)
{
a[i][j] = 0;
}
j = n/2+1;
i = 1;
a[1][j]=1;
for (k=2;k<=n*n;k++)
{
i = i - 1;
j = j + 1;
if ((i<1 && j>n))
{
i = i + 2;
j = j - 1;
}
else
{
if (i<1)
i = n;
if (j>n)
j=1;
}
if (a[i][j] == 0)
a[i][j] = k;
else
{
i = i + 2;
j = j - 1;
a[i][j] = k;
}
}
for (i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
} |
|