关于C++的一道编程题

来源:百度知道 编辑:UC知道 时间:2024/06/25 08:43:02
如图 6 7 2
1 5 9
8 3 4
每行每列以及对角线的和都是15
如果用C++变成编程实现这个图形的打印该怎样做???
如果是4×4或5×5……的图形又该怎么做有没有通式???

#include<stdio.h>
int a[20][20];
main()
{int n,i,j,p,q,s;
printf("input N:");
scanf("%d",&n);
s=1;p=1;q=(n+1)/2;a[p][q]=s;
for(i=2;i<=n*n;i++)
{s++;
p--;q--;
if(p==0)p=n;
if(q==0)q=n;
if(a[p][q]!=0){p++;if(p>n)p=1;p++;q++;if(p>n)p=1;if(q>n)q=1;}
a[p][q]=s;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{printf("%4d",a[i][j]);
if(j==n)printf("\n");
}
}

这是奇数阶幻方的C程序,有统一的生成规则,偶数阶幻方比较复杂。