Please need help with C program!

My program only ouputs the correct magic square sum totals for the number 15.If I enter any odd number smaller than 15 my sum totals are incorrect. I have define "size" to 15. How or what do I change so that my program will output the magic square results for the odd numbers 1 through 15 without having to change the value in my "#define size 15"?Or do I need to get rid of this define statement? How do I define my array size to be the max 15 by 15. Then, input the size of the array that I want to build?

Thanks,

J.J.

#include<stdio.h>
#define size 15  

void input_square (int order, int magic)
{

     int row,column;
     int entry = 1;
	 

     printf("Enter the size of the odd Magic Square : " );
     scanf("%d",&order);
     printf ("\n");


  if ( order % 2 )  {
   
     row = 0;
     column = (order - 1) / 2;

     while (entry <= order * order) {

          magic[row][column] = entry;

          if (entry == order * (entry / order))   {
		   row++;
          }

          else     {
              row--;
              column++;

              if (row < 0)	 {	 
		   row = order - 1;
              }

              if (column > order - 1)         {
	           column = 0;
              }

          }

          entry++;

     }

     printf("Magic square appears as follows:\n");
     printf ("\n");

     for(row = 0; row < order; row++)
     {

     for (column = 0; column < order; column++)
	   printf("%4d",magic[row][column]);

     printf("\n");

     }
  }

  else  {

       printf ("\nThe number: %d is not Odd\n", order);
          printf ("\n");

  }

}

void print_sum (int order,int magic )
{

     int row, column;	 
     int magic_number;
     int count = 1;
     int count_2 = 1;

     magic_number = 0;

     for (row = 0; row < order; row++)
          magic_number += magic[row][0];	    

     for (column = 0; column < order; column++) {
			 	
          printf("\nThe Sum for Column %d is %d.\n", count, magic_number);

	  count++;
     }   			 
         
     magic_number = 0;
	 

     for (column = 0; column < order; column++) 
		 magic_number += magic[0][column];	    

     for (row = 0; row < order; row++)		 {
			 	
            printf("\nThe Sum for Row %d is %d.\n", count_2, magic_number);

	    count_2++;

     }

     magic_number = 0;

     row = 0;
     column = 0;

     while (row < order && column < order)     {

        magic_number += magic[row][column];
	row++;
	column++;

     }
              	    			 	
     printf("\nThe Sum for Diagonal from top left to bottom right is %d.\n",magic_number);

     magic_number = 0;

     row = order - 1;
     column = 0;

     while (row <= order && column < order)    {

        magic_number += magic[row][column];
	row--;
	column++;
      }
	    
			 	
     printf("\nThe Sum for Diagonal from bottom left to top right is %d.\n",magic_number);
     printf("\n");

     magic_number = 0;

}



main()
{
     
         int order = size;
	 int magic;
   
	 input_square (order, magic);
	 print_sum (order, magic); 
 
}

Note: above post edited to add "code" tags and for readability.

This sounds like a homework problem. Please note the forum rules about posting homework. As a hint: please review the information on "pass by value" and "pass by reference" and how functions handle passed arguments. Using gdb may help you see what is going on at various points in your program.