这是一个打印魔方阵的程序:
#include <stdlib.h> //malloc() free()
#include <stdio.h> //printf() scanf()
#include <conio.h> //getch()
void array(int n);
void main()
{
int n;
printf(set n,please:\n);
scanf(%d,&n);
array(n);
getch(); //程序运行结束后不退出,而是等待用户输入任意一个输入之后才退出
}
void array(int n)
{
int i,j,no,num,max;
int *mtrx;
if(n%2==0)
n=n+1;
max=n*n;
mtrx=(int*)malloc(max); //根据输入的规模,动态申请内存空间
mtrx[n/2]=1;
i=0;
j=n/2;
for(num=2; num<=max; num++)
{
i=i-1;
j=j+1;
if((num-1)%n==0)
{
i=i+2;
j=j-1;
}
if(i<0)
{
i=n-1;
}
if(j>n-1)
{
j=0;
}
no=i*n+j;
mtrx[no]=num;
}
printf(the charming matrix is:);
no=0;
for(i=0;i<n;i++)
{
printf(\n);
for(j=0;j<n;j++)
{
printf(%3d,mtrx[no]);
no++;
}
}
printf(\n);
//free(mtrx); //释放内存空间
}
|