IS IT A BUG ????

Srujan.K.V.S. srujan@students.iiit.ac.in
Wed Sep 28 07:36:00 GMT 2005


Hi,

 	 The following is the program to print magic squares.I`m getting 
wierd output when i remove the printf statement "printf("a")" from the 
code. The required output is obtained by simply substituting that by 
putchar('\0'). I would be very glad if someone can let me know.
Please kindly help me regarding this.

Expecting an early rep,


Srujan.K.V.S


************************************************************************

//This is a simple program to design magic squares.
//A magic square is an arangment of numbers of numbers from 1 to n^2 such
// that any row, diagonal or column sums to the same. This program wil
  //work for only odd sized squares
#include<stdio.h>
#include<stdlib.h>
#include<math.h> 
main() {
         int n,x=1,i,j,k,p,r,t;
         scanf("%d",&n);
         printf("%d\n",n);
         p=n*n;
         int a[n][n];
         for(i=0;i<n;i++)
                 for(j=0;j<n;j++)
                         a[i][j]=0;
         i=0;j=(n-1)/2;
         a[i][j]=1;// starting  1 int the first row central column. :)
         //We try to put the next number in the top left diagonal square
 	//from the recent numbered square.
         //If we have already numbered , we then number the square just
 	//below it.
         for(k=1;k<p;k++)
         {
                 if((i-1)<0&&j!=0&&a[n-1][j-1]==0) i=n;
                 if((j-1)<0&&i!=0&&a[i-1][n-1]==0) j=n;
                 if(i==0&&j==0&&a[n-1][n-1]==0)
                 {
                         i=n;j=n;
                 }
                 x++;
                 if(a[i-1][j-1]==0)
                 {
                         //The following printf statement if removed is 
alering the output when n=5
                         printf("a");

                         a[i-1][j-1]=x;
                         i=i-1;
                         j=j-1;

                 }
                 else
                 {
                         if((i+1)>(n-1)) i=-1;
                         a[i+1][j]=x;
                         i=i+1;
                         j=j;
                 }
         }
         for(i=0;i<n;i++)
         {
                 for(j=0;j<n;j++)
                         printf("%4d \t",a[i][j]);
                 printf("\n");
         }
}
*****************************************************************************




More information about the Gcc-bugs mailing list