栀虞 11:15:33
#include"stdio.h"
#include"math.h"
//定义一个二维数组存放数据,大小根据测试的阶数确定
void square(int a[5][5],int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=0;
}
}
int iT,jT;
i=0,j=n/2;//起始点为第一行的中间位置
a[i][j]=1;//设置中间位置初始值为1
for(int k=2;k<=n*n;k++){//将幻方中的1,n*n数字填入二维数组中去
int iTemp=i,jTemp=j;//暂时用来存放i,j的值
i=(i-1+n)%n;//i往上移动一格
j=(j-1+n)%n;//j往左移动一格
if(a[i][j]>0){//第i行第j列已填
i=(iTemp+1)%n;//行数加一填入数字
j=jTemp;//本列不变
}
a[i][j]=k;
}
}
int main()
{int a[5][5];
int i,j,n;
scanf("%d",&n);//输入阶数
square(a,n); //调用函数
for(i=0;i<n;i++) //打印出幻方
{
for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
} //格式化输出
puts(""); //打印2个空行
puts("");
}
}
数据结构 幻方
最新推荐文章于 2024-07-26 21:31:22 发布