打印幻方(c语言程序设计现代方法的习题)多次试验无果
程序代码:#include <stdio.h>
#include<string.h>
void create_magic_square(int n,int magic_square[99][99]);
void print_magic_square(int n,int magic_square[99][99]);
int main(void)
{
int n;
int magic_square[99][99]={0};
printf("Please enter a number for you want to display the magic:");
scanf("%d",n);
create_magic_square(n,magic_square);
print_magic_square(n,magic_square);
return 0;
}
void create_magic_square(int n,int magic_square[99][99])
{
magic_square[0][(n-1)/2]=1;
int row =0,col=(n-1)/2;
for(int k=2;k<=n*n;k++) //±éàú,àà¼ó
{
while(1)
{
row--; //DDÏòéÏòÆ,áDÏòóòòÆ
col++;
while(1)
{
if(row<0) //èç1ûDDD¡óú0,Ñ-»·DD
{
row +=n;
continue;
}
if(col>=n) //èç1ûáD3¬1y·¶Î§,Ñ-»·áD
{
col -=n;
continue;
}
if(col<0) //èç1ûáDD¡óú0
{
col +=n;
continue;
}
if(magic_square[row][col]!=0) //ÅD¶ÏêÇ·ñòѾ-ìî3ä
{
row+=2;
col-=1;
if(row>n)
{
row-=n;
continue;
}
if(col<n)
{
col+=n;
continue;
}
continue;
}
break;
}
magic_square[row][col]=k;
break;
}
}
}
void print_magic_square(int n,int magic_square[99][99])
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
printf("%.2d",magic_square[i][j]);
printf(" ");
}
printf("\n");
}
}
本意是要打印一个幻方,由于采用的是VC++6.0编译器不支持变长数组,于是题目要求把数组定义成magic_square[99][99],我尝试用以上代码编译发现可以通过,但在输出n阶之后,程序不能运行.报内存不能为写.
另外为什么题目要求把数组定义为字符型.求指教..










zzzzzzz