打印幻方(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阶之后,程序不能运行.报内存不能为写.
另外为什么题目要求把数组定义为字符型.求指教..