Code:
/*
               Hey guys, I actually rewritten the code originally posted by AbhishekDwivedi 
to make it more readable. Plus, I have also rewritten the array initialization 
for arrays s1, s2, etc... for, well, readability purposes. 

               I have also removed the function declaration for sbox, sl, rh, row, bindec and 
p1 inside the main() block (otherwise, it will generate compile-time error). 
instead i put it outside, which is how we would normally declare our function prototypes.

               NOTE: I have found out also that in the original code especially in the 
array initialization for s2,  the author has somehow committed an error. 
Look at the code snippet

s2[0][0]=5;
s2[0][1]=1;
s2[0][2]=8;
s2[0][3]=14;
s2[0][4]=6;
s1[0][5]=11;      /* THIS LINE IS ERRONEOUS!!! IT SHOULD BE s2[0][5]=11; */
s2[0][6]=3;

I haven't started analyzing the code yet. Maybe we can start from here. 
               
*/


#include<stdio.h>
#include<conio.h>

int s1[4][16],s2[4][16],s3[4][16],s4[4][16],s5[4][16],s6[4][16],s7[4][16],s8[4][16];
int k[56],k1[64],k2[56],k3[48];
int bl[32], br[32];
int b1[64], b2[64], b3[48];
int s[48], t[48];
int br1[32], br2[32];
int i;
int count=0;
int n;
int r=1;

int sbox(int,int,int,int);
void sl();
void rh();
int row(int,int);
void bindec(int);
void p1();

void main()
{
	int snum[8],btemp[32], i;
	int sr1,sr2,sr3,sr4,sr5,sr6,sr7,sr8,sc1,sc2,sc3,sc4,sc5,sc6,sc7,sc8;
	
	clrscr();

	
	static int s1[][16]={
		14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
		0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
		4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,		
		15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13
	};
	
	static int s2[][16]={
		5, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,	
		3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
		0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
		13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9
	};
	
	
	static int s3[][16]={
		10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,	
		13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,
		13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,
		1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12		
	};
	
	
	static int s4[][16]={
		7, 13, 14, 3, 0, 6, 9, 10,1, 2, 8, 5, 11, 12, 4, 15,
		13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,
		10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,
		3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14
				
	};
	
	static int s5[][16]={
		2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,
		14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,
		4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,
		11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3
	};
	
	static int s6[][16]={
		12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,
		10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,
		9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,
		4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13
	};
	
	static int s7[][16]={
		4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,	
		13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,	
		1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 12,
		6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12
	};
	
	static int s8[][16]={
		13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
		1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
		7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
		2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11
	};
	

	printf("Enter 64-bit binary data ");
	for( i=0;i<64;i++){
		g:	
		scanf("%d",&b1[i]);
		if(b1[i]>1||b1[i]<0){
			printf("Enter binary data only : ");
			goto g;
		}	
	}
	
	printf("Enter the 56-bit key\n[Key length is 64 bits,but 8 are\nreserved for parity checking ");
	
	for(i=0;i<56;i++)
	{
		g1:	
		scanf("%d",&k[i]);
		if(k[i]>1||k[i]<0){
		printf("Enter binary data only : ");
		goto g1;
		}	
	}
	
	for(i=0;i<64;i++)
		b2[i]=b1[i]; / * Initial permutation of data. */

	b1[0]=b2[57];
	b1[1]=b2[49];
	b1[2]=b2[41];
	b1[3]=b2[33];
	b1[4]=b2[25];
	b1[5]=b2[17];
	b1[6]=b2[9];
	b1[7]=b2[1];
	
	b1[8]=b2[59];
	b1[9]=b2[51];
	b1[10]=b2[43];	
	b1[11]=b2[35];
	b1[12]=b2[27];
	b1[13]=b2[19];
	b1[14]=b2[11];
	b1[15]=b2[3];
	
	b1[16]=b2[61];
	b1[17]=b2[53];
	b1[18]=b2[45];
	b1[19]=b2[37];
	b1[20]=b2[29];	
	b1[21]=b2[21];
	b1[22]=b2[13];
	b1[23]=b2[5];
	
	b1[24]=b2[63];
	b1[25]=b2[55];
	b1[26]=b2[47];
	b1[27]=b2[39];
	b1[28]=b2[31];
	b1[29]=b2[23];
	b1[30]=b2[15];	
	b1[31]=b2[7];
	
	b1[32]=b2[56];
	b1[33]=b2[48];
	b1[34]=b2[40];
	b1[35]=b2[32];
	b1[36]=b2[24];
	b1[37]=b2[16];
	b1[38]=b2[8];
	b1[39]=b2[0];
	
	b1[40]=b2[58];	
	b1[41]=b2[50];	
	b1[42]=b2[42];
	b1[43]=b2[34];
	b1[44]=b2[26];
	b1[45]=b2[18];
	b1[46]=b2[10];
	b1[47]=b2[2];
	
	b1[48]=b2[60];
	b1[49]=b2[52];	
	b1[50]=b2[44];	
	b1[51]=b2[36];
	b1[52]=b2[28];
	b1[53]=b2[20];
	b1[54]=b2[12];
	b1[55]=b2[4];
	
	b1[56]=b2[62];	
	b1[57]=b2[54];	
	b1[58]=b2[46];
	b1[59]=b2[38];
	b1[60]=b2[30];	
	b1[61]=b2[22];
	b1[62]=b2[14];
	b1[63]=b2[6];

	for(i=0;i<56;i++)
		k1[i]=k[i]; /* Converting 64-bit key to 56-bit key. */
		
	k2[0]=k1[57];
	k2[1]=k1[49];
	k2[2]=k1[41];
	k2[3]=k1[33];
	k2[4]=k1[25];
	k2[5]=k1[17];
	k2[6]=k1[9];
	k2[7]=k1[1];
	
	k2[8]=k1[58];
	k2[9]=k1[50];
	k2[10]=k1[42];
	k2[11]=k1[34];
	k2[12]=k1[26];
	k2[13]=k1[18];
	k2[14]=k1[10];
	k2[15]=k1[2];
	
	k2[16]=k1[59];
	k2[17]=k1[51];
	k2[18]=k1[43];
	k2[19]=k1[35];
	k2[20]=k1[27];
	k2[21]=k1[19];
	k2[22]=k1[11];
	k2[23]=k1[3];
	
	k2[24]=k1[60];
	k2[25]=k1[52];
	k2[26]=k1[44];
	k2[27]=k1[36];
	k2[28]=k1[63];
	k2[29]=k1[55];
	k2[30]=k1[47];
	k2[31]=k1[39];
	
	k2[32]=k1[31];
	k2[33]=k1[23];
	k2[34]=k1[15];
	k2[35]=k1[7];
	k2[36]=k1[62];
	k2[37]=k1[54];
	k2[38]=k1[46];
	k2[39]=k1[38];
	
	k2[40]=k1[30];
	k2[41]=k1[22];
	k2[42]=k1[14];
	k2[43]=k1[6];
	k2[44]=k1[61];
	k2[45]=k1[53];
	k2[46]=k1[45];
	k2[47]=k1[37];
	
	k2[48]=k1[29];
	k2[49]=k1[21];
	k2[50]=k1[13];
	k2[51]=k1[5];
	k2[52]=k1[28];
	k2[53]=k1[20];
	k2[54]=k1[12];
	k2[55]=k1[4];

	for(i=0;i<32;i++) 	/* Breaking the initially permuted 	*/
		bl[i]=b1[i]; 	/* data bits in right-half			*/
		
	for(i=32;i<64;i++) 	/* and left-half respectively		*/
		br[i-32]=b1[i];

	for(r=1;r<=16;r++)
	{
		rh();
		sl();
		printf("Round %d :\n",r);
		
		for(i=0;i<56;i++)
			printf("%d ",k3[i]);
			
		for(i=0;i<48;i++){
			s[i]=b3[i]+k3[i]; 	/* X-OR of Expanded Right-side of data and compressed */
			if(s[i]==2) 		/* key. */
				s[i]=0;
		}
		
		for(i=0;i<48;i++)
			t[i]=s[i];
			
		printf("\n\n");
		getch();
		
		sr1=row(t[0],t[5]);
		sr2=row(t[6],t[11]);
		sr3=row(t[12],t[17]);
		sr4=row(t[18],t[23]);
		sr5=row(t[24],t[29]);
		sr6=row(t[30],t[35]);
		sr7=row(t[36],t[41]);
		sr8=row(t[42],t[47]);
		sc1=sbox(1,2,3,4);
		sc2=sbox(7,8,9,10);
		sc3=sbox(13,14,15,16);
		sc4=sbox(19,20,21,22);
		sc5=sbox(25,26,27,28);
		sc6=sbox(31,32,33,34);
		sc7=sbox(37,38,39,40);
		sc8=sbox(43,44,45,46);
		
		snum[0]=s1[sr1][sc1];
		snum[1]=s2[sr2][sc2];
		snum[2]=s3[sr3][sc3];
		snum[3]=s4[sr4][sc4];
		snum[4]=s5[sr5][sc5];
		snum[5]=s6[sr6][sc6];
		snum[6]=s7[sr7][sc7];
		snum[7]=s8[sr8][sc8];
		
		bindec(snum[0]);
		bindec(snum[1]);
		bindec(snum[2]);
		bindec(snum[3]);
		bindec(snum[4]);
		bindec(snum[5]);
		bindec(snum[6]);
		bindec(snum[7]);
		
		p1();
		
		for(i=0;i<32;i++)
		{
		btemp[i]=bl[i]+br1[i];
		if(btemp[i]==2)
		btemp[i]=0;
		}
		for(i=0;i<32;i++)
			bl[i]=br[i];
			
		for(i=0;i<32;i++) 
			br[i]=btemp[i];
			
		count=0;		
	}/* end for block */

	for(i=0;i<32;i++)
		b1[i]=bl[i];
	for(i=0;i<32;i++)
		b1[i+32]=br[i];
	for(i=0;i<64;i++)
		b2[i]=b1[i];
		
		
	/* Final permutation to obtain ciphertext */
	b1[0]=b2[40];
	b1[1]=b2[8];
	b1[2]=b2[48];
	b1[3]=b2[16];
	b1[4]=b2[56];
	b1[5]=b2[24];
	b1[6]=b2[64];
	b1[7]=b2[32];
	
	b1[8]=b2[39];
	b1[9]=b2[7];
	b1[10]=b2[47];
	b1[11]=b2[15];
	b1[12]=b2[55];
	b1[13]=b2[23];
	b1[14]=b2[63];
	b1[15]=b2[31];
	
	b1[16]=b2[38];
	b1[17]=b2[6];
	b1[18]=b2[46];
	b1[19]=b2[14];
	b1[20]=b2[54];
	b1[21]=b2[22];
	b1[22]=b2[62];
	b1[23]=b2[30];
	
	b1[24]=b2[37];
	b1[25]=b2[5];
	b1[26]=b2[45];
	b1[27]=b2[13];
	b1[28]=b2[53];
	b1[29]=b2[21];
	b1[30]=b2[61];
	b1[31]=b2[29];
	
	b1[32]=b2[36];
	b1[33]=b2[4];
	b1[34]=b2[44];
	b1[35]=b2[12];
	b1[36]=b2[52];
	b1[37]=b2[20];
	b1[38]=b2[60];
	b1[39]=b2[28];
	
	b1[40]=b2[35];
	b1[41]=b2[3];
	b1[42]=b2[43];
	b1[43]=b2[11];
	b1[44]=b2[51];
	b1[45]=b2[19];
	b1[46]=b2[59];
	b1[47]=b2[27];
	
	b1[48]=b2[34];
	b1[49]=b2[2];
	b1[50]=b2[42];
	b1[51]=b2[10];
	b1[52]=b2[50];
	b1[53]=b2[18];
	b1[54]=b2[58];
	b1[55]=b2[26];
	
	b1[56]=b2[33];
	b1[57]=b2[1];
	b1[58]=b2[41];
	b1[59]=b2[9];
	b1[60]=b2[49];
	b1[61]=b2[17];
	b1[62]=b2[57];
	b1[63]=b2[25];

	printf("\n\n");
	for(i=0;i<32;i++)
		printf("%d ",bl[i]);
		
	printf("\n");
	
	for(i=0;i<32;i++)
		printf("%d ",br[i]);
		
	printf("\n\n***********\n");
	printf("The encrypted 64-bit data is as follows :\n");
	
	for(i=0;i<64;i++)
		printf("%d ",b1[i]);
		
	getch();

}	/* end of main block */


void rh()
{ 	
	/* Expansion permutation of Right-half of data. */
	
	b3[0]=br[31];
	b3[1]=br[0];
	b3[2]=br[1];
	b3[3]=br[2];
	b3[4]=br[3];
	b3[5]=br[4];
	b3[6]=br[3];
	b3[7]=br[4];
	
	b3[8]=br[5];
	b3[9]=br[6];
	b3[10]=br[7];
	b3[11]=br[8];
	b3[12]=br[7];
	b3[13]=br[8];
	b3[14]=br[9];
	b3[15]=br[10];
	
	b3[16]=br[11];	
	b3[17]=br[12];
	b3[18]=br[11];
	b3[19]=br[12];
	b3[20]=br[13];
	b3[21]=br[14];
	b3[22]=br[15];
	b3[23]=br[16];
	
	b3[24]=br[15];	
	b3[25]=br[16];
	b3[26]=br[17];
	b3[27]=br[18];
	b3[28]=br[19];
	b3[29]=br[20];
	b3[30]=br[19];
	b3[31]=br[20];
	
	b3[32]=br[21];
	b3[33]=br[22];
	b3[34]=br[23];
	b3[35]=br[24];
	b3[36]=br[23];
	b3[37]=br[24];
	b3[38]=br[25];
	b3[39]=br[26];
	
	b3[40]=br[27];
	b3[41]=br[28];
	b3[42]=br[27];
	b3[43]=br[28];
	b3[44]=br[29];
	b3[45]=br[30];
	b3[46]=br[31];
	b3[47]=br[0];
	
} /* end of rh block */


void sl()
{
	int temp;
	temp=k2[0];
	
	for(i=0;i<27;i++)
		k2[i]=k2[i+1];
		
	k2[27]=temp;
	
	if(r==3||r==4||r==5||r==6||r==7||r==8||r==10||r==11||r==12||r==13||r==14||r==15)
	{
		temp=k2[0];
		
		for(i=0;i<27;i++)
			k2[i]=k2[i+1];
			
		k2[27]=temp;	
	}
	
	temp=k2[28];
	
	for(i=28;i<55;i++)
		k2[i]=k2[i+1];
		
	k2[55]=temp;
	
	if(r==3||r==4||r==5||r==6||r==7||r==8||r==10||r==11||r==12||r==13||r==14||r==15)
	{
		temp=k2[28];
				
		for(i=28;i<55;i++)
			k2[i]=k2[i+1];
			
		k2[55]=temp;	
	} 
	
	/* Compression permutation of the key. */
	k3[0]=k2[13];
	k3[1]=k2[16];
	k3[2]=k2[10];
	k3[3]=k2[23];
	k3[4]=k2[0];
	k3[5]=k2[4];
	k3[6]=k2[2];
	k3[7]=k2[27];
	
	k3[8]=k2[14];
	k3[9]=k2[5];
	k3[10]=k2[20];
	k3[11]=k2[9];
	k3[12]=k2[22];
	k3[13]=k2[18];
	k3[14]=k2[11];
	k3[15]=k2[3];
	
	k3[16]=k2[25];
	k3[17]=k2[7];
	k3[18]=k2[15];
	k3[19]=k2[6];
	k3[20]=k2[26];
	k3[21]=k2[19];
	k3[22]=k2[12];
	k3[23]=k2[1];
	
	k3[24]=k2[40];
	k3[25]=k2[51];
	k3[26]=k2[30];
	k3[27]=k2[36];
	k3[28]=k2[46];
	k3[29]=k2[54];
	k3[30]=k2[29];
	k3[31]=k2[39];
	
	k3[32]=k2[50];
	k3[33]=k2[44];
	k3[34]=k2[32];
	k3[35]=k2[47];
	k3[36]=k2[43];
	k3[37]=k2[48];
	k3[38]=k2[38];
	k3[39]=k2[55];
	
	k3[40]=k2[33];
	k3[41]=k2[52];
	k3[42]=k2[45];
	k3[43]=k2[41];
	k3[44]=k2[49];
	k3[45]=k2[35];
	k3[46]=k2[28];
	k3[47]=k2[31];

} /* end of s1 block */




int row(int bitl,int bitr)
{
	int rown;
	/**/
	t[bitr]=t[bitr]*1;
	t[bitl]=t[bitr]*2;
	rown=t[bitr]+t[bitl];
	return(rown);
}/* end of row block */

int sbox(int p,int q,int r,int s)
{
	int col;
	t[s]=t[s]*1;
	t[r]=t[r]*2;
	t[q]=t[q]*4;
	t[p]=t[p]*8;
	col=t[s]+t[r]+t[q]+t[p];
	/**/
	return(col);
}/* end of sbox block */

void bindec(int dec)
{
	int vrble=3,dec1;
	while(vrble!=0)
	{
		dec1=dec%2;
		if(dec1==0) {
			br1[count+vrble]=0;
		}
		else {
			br1[count+vrble]=1;
		}
			
		vrble=vrble-1;
		dec=dec/2;
	}	
	count=count+4;
} /* end of bindec block */

void p1()
{
	for(i=0;i<32;i++) 		/* Permutation of 32-bit output of s-boxes */
		br2[i]=br1[i];
		
	br1[0]=br2[15];
	br1[1]=br2[6];
	br1[2]=br2[19];
	br1[3]=br2[20];
	br1[4]=br2[28];
	br1[5]=br2[11];
	br1[6]=br2[27];
	br1[7]=br2[16];
	
	br1[8]=br2[0];
	br1[9]=br2[14];
	br1[10]=br2[22];
	br1[11]=br2[25];
	br1[12]=br2[4];
	br1[13]=br2[17];
	br1[14]=br2[30];
	br1[15]=br2[9];
	
	br1[16]=br2[1];
	br1[17]=br2[7];
	br1[18]=br2[23];
	br1[19]=br2[13];
	br1[20]=br2[31];
	br1[21]=br2[26];
	br1[22]=br2[2];
	br1[23]=br2[8];
	
	br1[24]=br2[18];
	br1[25]=br2[12];
	br1[26]=br2[29];
	br1[27]=br2[5];
	br1[28]=br2[21];
	br1[29]=br2[10];
	br1[30]=br2[3];
	br1[31]=br2[24];
} /* end of p1 block */