This is a simple C language program that will locate 8 queen in chess board with all of the states and you can determine the position of first queen on the chess board.

/*******************************************************
*     MYCPLUS Sample Code - http://www.mycplus.com     *
*                                                     *
*   This code is made available as a service to our   *
*      visitors and is provided strictly for the      *
*               purpose of illustration.              *
*                                                     *
* Please direct all inquiries to saqib at mycplus.com *
*******************************************************/

/***********By : FARSHAD MOJTABAI*********/
/***********With Graphic****************/
#include
#include
#include
#include
#include
#include
int place(int);
void queen(int);
void Board();
void Q(int,int);
void CounT(int,int,int);
int XYGraphic(int);
int x[9];
int main(void)
{

  queen(8);
  return 0;
  }
void queen(int n)
{
 int k= 1,z,X,Y,
     counter=0,x2,y2,loc;
 int extern x[9];
 char answer;

      int gdriver = DETECT, gmode, errorcode;
   /* initialize graphics and local variables */
   initgraph(&gdriver, &gmode, "c:\borlandc\bgi");

 x[1] = 0;
 printf("WHETHER YOU WANT TO CHOOSE A COORDINATE  ORn");
 printf("COMPUTER TAKES ALL POSSIBLE CASES :");
 scanf("%c",&answer);
 if(answer == 'c' || answer == 'C')
      {
       printf("X,Y:");
       scanf("%d%d",&x2,&y2);
       }
 clearviewport();
 while(k > 0)
 {

  x[k]++ ;
  while(x[k] <= n && !place(k))
   x[k]++;

   if(x[k] <= n)
   {
    if(k == n)
     {
     if(answer == 'a' || answer == 'A')
      {
      Board();
      counter++;
      for(int m=1;m<9;m++)
       {
	z=x[m];
	X = XYGraphic(m);
	Y = XYGraphic(z);
       Q(X,Y);
       CounT(m,z,counter);
       }
       delay(3000);
      }
     else if(answer == 'c' || answer == 'C')
      {
       for(int i=1;i<9;i++)
       if(i==x2 && x[i]==y2)
	 loc = 1;
       if(loc == 1)
	{
	 Board();
	 counter++;
	 for(int m=1;m<9;m++)
	 {
	   z=x[m];
	   X = XYGraphic(m);
	   Y = XYGraphic(z);
	 Q(X,Y);
	 CounT(m,z,counter);
	 }
	 loc = 0;
	 delay(3000);
	}
      }

       if(kbhit())
	  exit(0);
	 clearviewport();
	}
    else
    {
    k++;x[k]=0;}
    }
    else
    k--;

    }

   }

int place(int l)
{
int i=1;
int extern x[9];
while(i < l)
{
 if((x[i] == x[l]) || abs(x[i] -x[l]) == abs(i - l))
  return(0);
  i +=1;
  }
  return(1);
}
int XYGraphic(int p)
{
 switch(p)
 {
  case 1: return 65;
  case 2: return 115;
  case 3: return 165;
  case 4: return 215;
  case 5: return 265;
  case 6: return 315;
  case 7: return 365;
  case 8: return 415;
 }
 return 0;
}
void CounT(int x3,int y3,int c)
{
       gotoxy(60,4);
       printf("[%d]",c);
       gotoxy(59,6+x3);
       printf("(%c,%d)",96+x3,y3);
}

void Q(int x1,int y1)
{
	for(int i=0;i<=15;i++)
	{
	 setcolor(i);
	 circle(x1,y1,i);
	}
}

void Board()
{
    int m,n;
    outtextxy(65,20,"a");
    outtextxy(115,20,"b");
    outtextxy(165,20,"c");
    outtextxy(215,20,"d");
    outtextxy(265,20,"e");
    outtextxy(315,20,"f");
    outtextxy(365,20,"g");
    outtextxy(415,20,"h");
    outtextxy(20,65,"1");
    outtextxy(20,115,"2");
    outtextxy(20,165,"3");
    outtextxy(20,215,"4");
    outtextxy(20,265,"5");
    outtextxy(20,315,"6");
    outtextxy(20,365,"7");
    outtextxy(20,415,"8");

    for(int j=0;j<8;j++)
    for(int i=0; i<8;i++)
     rectangle(50*i+40,50*j+40,50*(i+1)+40,50*(j+1)+40);

     for(int l=0;l<8;l++)
     {
      if(l%2 == 0)
      {m=0; n=0;}
      else
      {m=1; n=50;}
      for(int k=0;k<4+m;k++)
       {
	setfillstyle(SOLID_FILL,getmaxcolor());
	floodfill(100*k-n+41,50*l+41,getmaxcolor());
	}
     }
 }