C Program to Generate Magic Square
According to Wikipedia, in recreational mathematics and combinatorial design, a magic square is a square grid filled with distinct positive integers in the range such that each cell contains a different integer and the sum of the integers in each row, column and diagonal is equal.
C Program to Generate Magic Square
#include<stdio.h>
#include<stdlib.h>
#define SIZE 20
int main()
{
int order, i, j, k, p, q, mid, magic[SIZE][SIZE];
printf("Enter order of magic square (order must be odd): ");
scanf("%d", &order);
if(order%2==0)
{
printf("Order must be odd.\n");
printf("Exiting...");
exit(0);
}
mid = order/2;
for(i=0;i< order; i++)
{
for(j=0; j< order; j++)
{
magic[i][j]=0;
}
}
k=mid;
j=0;
for(i=1; i<= order*order; i++)
{
magic[j][k] = i;
p = j--;
q = k++;
if(j< 0)
{
j = order-1;
}
if(k>order-1)
{
k=0;
}
if(magic[j][k] != 0)
{
k = q;
j = p+1;
}
}
printf("Generated MAGIC SQUARE is:\n");
for(i=1;i<=6*order;i++)
{
printf("-");
}
printf("\n");
for(j=0;j< order;j++)
{
printf("|");
for(k=0; k< order; k++)
{
printf("%4d |", magic[j][k]);
}
printf("\n");
for(i=1; i<=6*order; i++)
{
printf("-");
}
printf("\n");
}
return 0;
}
Output
Enter order of magic square (order must be odd): 3 Generated MAGIC SQUARE is: ----------------------- | 8 | 1 | 6 | ----------------------- | 3 | 5 | 7 | ----------------------- | 4 | 9 | 2 | -----------------------