前些时间我有个同学去软件园应聘实习生时考了这么一个题,就是写出产生魔方矩阵的程序,回来我见他在问老师,把老师也给弄了半天,我在网上找了一个改了一下基本上可以了,由于我是搞java的,改出来的C语言应该不是很好吧,还请大家多指点哦!
#include
#define Max_Size 15
main()
{
static int square[Max_Size][Max_Size];
int i,j,row,column,count,size;
printf("输入的矩阵大小:\n");
scanf("%d",&size);
if(size<1||size>Max_Size+1)
{
printf("输入的矩阵太大!");
}
if(!(size % 2))
{
printf("大小不能为偶数");
}
for(i=0;i for(j=0;j square[j] = 0;
square[0][(size-1)/2] = 1;
i = 0;
j = (size-1)/2;
for(count=2;count<=size*size;count++)
{
row = (i-1<0)?(size-1):(i-1);
column=(j-1<0)?(size-1):(j-1);
if(square[row][column])
i=(++i)%size;
else
{
i = row;
j = (j-1<0)?(size-1):--j;
}
square[j] = count;
}
printf("大小为%d的魔术矩阵为:\n",size);
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
{
printf("%4d",square[j]);
}
printf("\n");
}
}