I am in a beginning C programming class and I have this assignment: Write a program that creates an N*N magic square, i.e., a square arrangement of the numbers 1,2,…,N^2 in which the sum of rows, columns, and diagonals are the same. The user will specify the size of the square matrix: N. The value N must be an odd number between 1 and 15.

I am using visual studio 2010. Also I am only allowed to use C89. My program will not compile and I have been trying to fix my problems, but I still have a problem with what the program prints out. My program prints out a vertical column of the magic square. For example if my magic square is size 3, it'll print:

8

1

6

3

5

7

4

9

2

Help please. Thank you!

Code:#include <stdio.h> #define array_size 15 int main (void) { int row, column, size, n = 2, magic_square [array_size][array_size]; for ( ; ; ) { printf ("Enter size of magic square: "); scanf ("%d", &size); if (size % 2 == 0) printf ("Enter an odd number!\n"); else if (size <= 0 || size > 15) printf ("Enter a number between 1 and 15!\n"); else { magic_square [array_size][array_size]; for (row = 0; row < size; row++) { for (column = 0; column < size; column++) { magic_square [row][column] = 0; } } row = 0; column = (size/2); magic_square [row][column] = 1; for (n; n<= size*size; n++) { if (--row < 0) row = (size -1); if (++column > size -1) column = 0; if (magic_square [row][column] != 0) { if (++row > (size -1)) row = 0; if (--column < 0) column = size - 1; while (magic_square [row][column] != 0) if (++row > (size -1)) row = 0; } magic_square [row][column] = n; } for (row = 0; row < size; row++) { for (column = 0; column < size; column++) { printf ("%4d\n", magic_square [row][column]); } printf ("\n"); } break; } } return 0; }