📄 74.c
字号:
/*
打印魔方阵,魔方阵是指这样的方阵,
它的每一行,每一列和对角线之和均相等。
例如:三阶魔方阵
8 1 6
3 5 7
4 9 2
*/
#include<stdio.h>
int mofang()
{
int a[15][15],i,j,k,p,m,n;
p=1;
while(p==1)
{
printf("请输入n,(0<n<=15,n是奇数。)\n");
scanf("%d",&n);
if((n!=0)&&(n<=15)&&(n%2!=0))
{
printf("矩形阶数是%d\n",n);
p=0;
}
}//while
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=0; //对二维数组元素赋值为0;
}
}
j=n/2;//第一行中间的一个元素放1;
a[0][j]=1;
for(k=2;k<=n*n;k++)
{
i=i-1;
j=j+1;
if(i<0&&j>n-1) //如果是二维数组的右上角的元素,下一个元素放在其正下方;
{
i=i+2;
j=j-1;
}
else //如果不是二维数组的右上角的元素
{
if(i<0) i=n-1; //若i减1后为负值,就把i赋值为最后一行
if(j>n-1) j=0; //若j加1后大于最大列,就把j赋值为第一列;
}
if(a[i][j]==0) //若i行j列没有元素,就把k赋值给他;
a[i][j]=k;
else //若i行j列有元素,就把k赋值给上一个元素的正下方的元素
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}//for
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
}//main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -