蒲辅周叶天士:c语言初级问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/29 02:59:02
打印魔方阵:方阵的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:8 1 6
3 5 7
4 9 2
要求打印出由1到n*n的自然数构成的魔方阵。
应该是
8 1 6
3 5 7
4 9 2

不好意思,虚幽末的答案看不懂,k是什么?能否给出算法的解释?

#include<stdio.h>
void main()
{
int n[3][3]={0};
int k=0,i,j,num;
while(k%2==0)
{
scanf("%d",&k);
}
i=0;j=k/2;
n[i][j]=1;
for(num=2;num<=k*k;num++)
{
if((((i-1)<0)&&((j+1)>=k))||((((i-1)>=0)&&((j+1)<k))&&((n[i-1][j+1])!=0)))
{
i=i+1;
n[i][j]=num;
}
else if(((i-1)>=0)&&((j+1)>=k))
{
i=i-1;
j=0;
n[i][j]=num;
}
else if(((i-1)<0)&&((j+1)<k))
{
i=k-1;
j++;
n[i][j]=num;
}
else
{
i--;j++;
n[i][j]=num;
}
}
for(i=0;i<k;i++)
{
for(j=0;j<k;j++)
{
printf("%d\t",n[i][j]);
}
printf("\n");
}
}

运行后输入 3再回车就出来了 哈

如果是 N了 在int n[3][3]={0}; 改下3的数字
再回车按 N那个值

K就按lsy9091说的

k就是N[3][3]这个数列上的每一项